MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

Julia用おすすめVim設定&プラグイン

はじめてのvi&Vim (エッセンシャルソフトウェアガイドブック)

はじめてのvi&Vim (エッセンシャルソフトウェアガイドブック)

目次

はじめに

これまで、様々な言語における

おすすめVim設定とVImプラグインを紹介してきましたが、

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

 

最近、Juliaという比較的新しい言語を勉強しているため、

myenigma.hatenablog.com

JuliaのコードをVimで書くためのおすすめ設定と、

プラグインを紹介したいと思います。

 

自分のすべての言語に共通したVimの設定ファイルは

下記のリポジトリで公開しています。

github.com

 

F5で現在編集中のコードを実行する

下記のような設定をvimrc内で実施することにより、

F5を押した時に、そのコードの言語に応じて

コードを実行できるようにしています。

"<F5> でコード実行
function! Exe()
  echo "Exe"
  let filename = expand('%:t')
  if stridx(filename, ".py") != -1 
    !python %
  elseif stridx(filename, ".jl") != -1
    !julia %
  elseif stridx(filename, ".cpp") != -1 
    !./build_run.sh
  else
    echo "unknown filetype"+filename
  endif
endfunction
command! Exe :call Exe()

nmap <F5> :Exe

 

シンタックスハイライト用プラグイン: julia-vim

デフォルトでは、juliaのコードは

シンタックスハイライトされないので、

下記のプラグインをインストールし、

juliaのコードをシンタックスハイライトするようにしました。

github.com

 

このプラグインはシンタックスハイライト以外にも、

LaTeX記法で記述された変数を、

unicodeに変換する機能があります。

(例: alpha -> α)

よりプログラムを数式チックに記述することができます。

 

静的解析ツール用プラグイン: julia.vim

julia.vim/JuliaLint.gif at master · AtsushiSakai/julia.vim

Pythonコードなどを書く時は、

flask8を使って自動的にコードの静的解析をしているのですが、

juliaのvimプラグインでは、そのようなものはまだないようなので、

自作しました。

github.com

 

使い方等は、上記のgif動画や、

リンクのREADMEを見てもらえればわかると思いますが、

juliaのコードを書いている時に、

:JuliaLint

とコマンドを入力すると非同期で静的解析が走り、

その結果がvimのquickfixに表示されるので、

静的解析でエラーやワーニングが報告された場合は、

quickfix上で該当のメッセージをクリックすると、

該当のコードに自動的にジャンブします。

 

JuliaのコードのLintツールとしては、

こちらのJulia製のJulia用Lintツールを使い、

github.com

Juliaのツールなので、コンパイルの時間がかなりかかるので、

vimの+jobを使って、非同期に静的解析を実行できるようにしました。

 

参考資料

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

はじめてのvi&Vim (エッセンシャルソフトウェアガイドブック)

はじめてのvi&Vim (エッセンシャルソフトウェアガイドブック)

 

MyEnigma Supporters

もしこの記事が参考になり、

ブログをサポートしたいと思われた方は、

こちらからよろしくお願いします。

myenigma.hatenablog.com