この記事は ユニークビジョン株式会社 Advent Calendar 2020 の9日目の記事です。
はじめに
社内でRustを使う風潮になってきているので、
Neovimに、Rustの開発環境を構築してみます。
ほぼプラグインの紹介になります。
プラグインマネージャーを導入する
プラグインの導入・管理を簡単にするため、プラグインマネージャーを導入します。
本記事では、dein.vimを導入します。
~/.config/nvim/init.vim
に以下を追記します。
" dein.vimのディレクトリ
let s:dein_dir = expand('~/.vim/dein')
let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim'
" なければgit clone
if !isdirectory(s:dein_repo_dir)
execute '!git clone https://github.com/Shougo/dein.vim' s:dein_repo_dir
endif
execute 'set runtimepath^=' . s:dein_repo_dir
if dein#load_state(s:dein_dir)
call dein#begin(s:dein_dir)
" 管理するプラグインを記述したファイル
let s:toml = '~/.dein.toml'
let s:lazy_toml = '~/.dein_lazy.toml'
call dein#load_toml(s:toml, {'lazy': 0})
call dein#load_toml(s:lazy_toml, {'lazy': 1})
call dein#end()
call dein#save_state()
endif
" その他インストールしていないものはこちらに入れる
if dein#check_install()
call dein#install()
endif
動きとしては、指定した箇所にdein.vim
が入っているかチェックし、
入っていなければgit clone
します。
また、プラグインの情報を外部のTOMLファイルにまとめることができ、
call dein#load_toml(s:toml, {'lazy': 0})
ではプラグインの情報をまとめたTOMLファイルを読み込んでいます。
プラグインの情報はこのTOMLファイルに書き込んでいくことになります。
ここではホームディレクトリ直下に置くように指定していますが、お好みで場所を変えてください。
最後に、プラグインがインストールされているかチェックし、インストールされていないものはインストールします。
Language Server Protocolを導入する
Language Server Protocolを導入すると、入力補完であったり、定義位置ジャンプなどが簡単にできるようになります。
Language Serverの導入には、coc.nvimを使います。
.dein.toml
に以下を追記します。
[[plugins]]
repo = 'neoclide/coc.nvim'
rev = 'release'
hook_add = '''
nnoremap [coc] <Nop>
nmap <space>c [coc]
nmap <silent> [coc]f <Plug>(coc-format)
nmap <silent> [coc]<space> :<C-u>CocList<cr>
nmap <silent> [coc]rn <Plug>(coc-rename)
nmap <silent> [coc]h :<C-u>call CocAction('doHover')<cr>
nmap <silent> [coc]d <Plug>(coc-definition)
nmap <silent> [coc]rf <Plug>(coc-references)
'''
hook_add
ではよく使う機能をキーマップしています。
中でも特によく使うのは定義元へのジャンプ(<Plug>(coc-definition)
)や、
関数や変数の型や定義の表示(:call CocAction('doHover')<cr>
)です。
上記を追記したら、neovimを再起動するか、:source ~/.config/nvim/init.vim
としてください。
coc-rust-analyzerを入れる
coc-rust-analyzer
nvim内で、以下のコマンドを実行してください。
:CocInstall coc-rust-analyzer
必要なファイルが足りなければインストールするか聞いてくれますので、
都度インストールすると良いと思います。
これで.rs
ファイルを開いたときに、入力補完などをしてくれるようになります。
その他便利なプラグイン
Rustとは直接関係ありませんが、
あると便利なプラグインをいくつか紹介します。
vim-quickrun
vim-quickrun
:QuickRun
とすることでウィンドウに表示されているプログラムを実行してくれます。
また、<Leader>r
と打っても実行できます。<Leader>
はデフォルトで\
なので、
変更していなければ\r
と打つことでプログラムを実行できます。
保存するほどでもない簡単なプログラムを実行したり、動作を見ながらコーディングしていくのに便利です。
fzf
fzf.vim
導入が若干面倒ですが、便利なプラグインです。
Gitで管理されているファイル一覧や、バッファにあるファイル一覧などを表示でき、
表示したファイルはファジー検索できるので、ファイルの移動はこれだけでもいいくらい便利なプラグインです。
vim-fugitive
vim-fugitive
Vimで動くGitのクライアントです。
Git diffがVim上で見れたり、addしてcommitする流れが簡単にできたりと、
Gitを使った開発をするのであれば入れておくと便利なプラグインです。
おわりに
Language Serverはとても強力な上、導入もかなり楽になっているのはとても嬉しい点です。
ただ、coc-rust-analyzerを導入するのにexコマンドを打つ必要があるのが若干気になるところで、
できればここもファイルで管理したい気持ちがあります。
いずれ気持ちが向いたときにここらへんはちゃんと整理したいと思います。