まえがき
- NeovimでNimを自動補間マシマシのコーディング環境を整える方法を書く
デモ
以下のように補間効くようになります。
検証環境
key | value |
---|---|
OS | Manjaro Linux |
Neovim | v0.5.0-100-g0785f8e8b |
環境構築
プラグイン導入
以下の2つのプラグインを入れます。
プラグイン名 | 説明 |
---|---|
alaviss/nim.nvim | Nimプラグイン |
prabirshrestha/asyncomplete.vim | 非同期補間プラグイン |
僕はdein.nvimを使用しているのでdein用の設定を書きます。
[[plugins]]repo='prabirshrestha/asyncomplete.vim'hook_add='''"TABで補完inoremap<expr><Tab>pumvisible()?"\<C-n>":"\<Tab>"inoremap<expr><S-Tab>pumvisible()?"\<C-p>":"\<S-Tab>"inoremap<expr><cr>pumvisible()?"\<C-y>":"\<cr>"letg:asyncomplete_smart_completion=1letg:asyncomplete_auto_popup=1'''[[plugins]]repo='alaviss/nim.nvim'on_ft=['nim','nimble']hook_add='''auUserasyncomplete_setupcallasyncomplete#register_source({\'name':'nim',\'whitelist':['nim'],\'completor':{opt,ctx->nim#suggest#sug#GetAllCandidates({start, candidates -> asyncomplete#complete(opt['name'], ctx, start, candidates)})}\})'''
nimsuggestのインストール
こちらのプラグインではnimsuggest
というコマンドを使用して構文解析、補間をします。
nimsuggest
はNimの公式のchoosenimを使用したインストール手順にしたがってインストールすると、自動でインストールされているはずです。
インストール手順
もしnimsuggest
をPATHの通ったディレクトリに配置していないなら、上記手順にしたがってNimをインストールしてください。
プラグインのアップデート
deinの関数でプラグインをアップデートします。
以下のコマンドをNeovimを起動したときに、コマンドモードで実行します。
:call dein#update()
これで環境構築完了です。
動作確認
試しに拡張子.nim
のファイルを作成して適当にモジュールをimportしてください。
プロシージャ名の補間などが効くようになっていると思います。
残念ながら、import文を自動で補間まではしてくれないので、そこは書く必要があります。
プロシージャ定義元へのジャンプは gd
で可能です。
Wikiに書いてありました。
リポジトリ漁ってみたのですが、Vimのヘルプドキュメントが無いようだったので、キーマッピングがあるかどうかはVimScriptを読む必要がありそうです。
ソースコード上だと、以下にキーマッピングについて定義されてました。
https://github.com/alaviss/nim.nvim/blob/master/ftplugin/nim.vim#L106
まだ開発中のプラグインのようなので、今後に期待です。
補足
nimsuggestについて
nimsuggest
はNim公式が提供するNimコードの構文解析をするツールです。
公式が提供するツールなので、かなり安心感があります。
開発が滞ってプラグインが動かなくなる、といった懸念は低そうだと思います。
nimsuggest
に関する情報は、以下の公式ページに情報がまとまっています。
Nim IDE Integration Guide
以上です。