Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

Elixir初心者がVimで開発環境を整えてみた

$
0
0

Elixir初心者でわかってないことだらけなので、より良い設定が見つかればあとから変更予定です。

Elixir のインストール手順はこの記事では省略します。

使用するプラグイン

プラグインのインストールは NeoBundleなりなんなりで適当にインストールしてください。

vim-elixir

  • シンタックスハイライトやインデントなどをよしなにしてくれるので、何も考えずにインストールします。
  • インストールするのみで設定は特になしです。

vim-quickrun

言わずと知れた quickrun です。
デフォルトでスクリプトの実行には対応していますが、
mix testも quickrun で実行できるようにしたいのでその設定を追加します。

quickrun で mix test

下記の例では <Leader>tmix testを実行するようにしています。
hook/cd/directoryに mix.exs があるディレクトリを指定するため拙作のプラグインを使っていますが、同じことができれば別プラグインでも個別に関数定義でも問題ありません。

なお errorformatは適当に書いたので、使っていて不満があればその都度変更する予定です。

  • ftplugin/elixir.vim
letg:quickrun_config.mix_test = {
    \ 'command'     : 'mix',
    \ 'exec'        : 'mix test',
    \ 'outputter'   : 'quickfix',
    \ 'errorformat' : '%E\ %#%n)\ %.%#,%C\ %#%f:%l,%Z%.%#stacktrace:,%C%m,%-G%.%#',
    \ 'hook/cd/directory': yacd#get_root_dir(expand('%:p:h'))
    \ }

nnoremap<Leader>t :QuickRun mix_test<CR>

vim-watchdogs

シンタックスチェッカーでは Syntasticが Elixir をサポートしているようですが、
私は watchdogs 派なので、watchdogs でシンタックスチェックできるようにします。

シンタックスチェックの設定

Syntastic が内部で mix compileを実行してその結果をチェックしていたので、それをパクります。
2015/08/06修正: mix compileだとテストコードのシンタックスチェックができなかったので elixirでの実行結果をチェックするよう修正しました。

hook/cd/directorymix testの箇所で説明したのと同様で、
errorformatも同様に適当に書いたものなので、不満がでてきたらあとで修正予定です。

  • g:quickrun_configを設定しているファイル
letg:quickrun_config = {
    \   'watchdogs_checker/elixir': {
    \     'command'     : 'elixir',
    \     'exec'        : '%c %s',
    \     'errorformat' : '**\ (%.%#Error)\ %f:%l:\ %m,%-G%.%#',
    \     'hook/cd/directory': yacd#get_root_dir(expand('%:p:h'))
    \   },
    \   'elixir/watchdogs_checker': {
    \     'type' : 'watchdogs_checker/elixir',
    \   }
    \ }

vim-yacd

vimscriptの勉強用に作ったプラグインです。

以下のように root_namesを定義しておくと
上記の例のように yacd#get_root_dir関数で mix.exs のある親ディレクトリを検索してくれます。

letg:yacd#root_names = ['mix.exs','.git']

まとめ

ここまでの設定で実行、テスト、シンタックスチェックだけは実現できました。
それ以外については勉強を進める中で追加していき、この記事にも反映していけたらと思います。

こんな設定便利だよーというのがあれば教えていただけると幸いです。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>