VimにRustの環境を構築する

RustのIntroductionをやってみる途中で、補完とかが効かないとツライなと思ったので
VimにRustの環境を作ってみた。

前提

OSはMacです(たぶんLinuxでも動くと思います)
rustupでRustをインストールしていることを前提とします。

できるようになること

インストール

cargoでRacer(コード補完)とrustfmt(フォーマッタ)をインストールします。

cargo install racer
cargo install rustfmt

Vim Plugin

このPluginを使います。

.vimrc

私の設定を乗せておきます。
使用していない機能もあるので、詳しくは各Pluginのドキュメントを参照してください。

NeoBundle 'racer-rust/vim-racer', {'autoload': {'filetypes': ['rust']}}
let s:hooks = neobundle#get_hooks("vim-racer")
function! s:hooks.on_source(bundle)
  let g:racer_cmd = "$HOME/.cargo/bin/racer"
endfunction

NeoBundle 'rust-lang/rust.vim', {'autoload': {'filetypes': ['rust']}}
let s:hooks = neobundle#get_hooks("rust.vim")
function! s:hooks.on_source(bundle)
  " save時にオートフォーマットする
  let g:rustfmt_autosave = 1
  let g:rustfmt_command = '$HOME/.cargo/bin/rustfmt'
endfunction

NeoBundle 'scrooloose/syntastic', {'autoload': {'filetypes': ['rust']}}
let s:hooks = neobundle#get_hooks("syntastic")
function! s:hooks.on_source(bundle)
  " save時にシンタックスチェックする
  let g:syntastic_mode_map = { 'mode': 'passive', 'active_filetypes': ['rust'] }
  let g:syntastic_rust_checkers = ['rustc', 'cargo']
endfunction

この設定でsave時にオートフォーマットとシンタックスチェックが走ります。
コード補完はC-xC-oでできます。

余談的な

これで結構快適にRustが書けるようになります。
大規模のソースを読むとなると、タグジャンプとかしたくなる。
もう少しRustを書くようならタグジャンプの設定もしようかな。