まえがき
- 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>"
let g:asyncomplete_smart_completion = 1
let g:asyncomplete_auto_popup = 1
'''
[[plugins]]
repo = 'alaviss/nim.nvim'
on_ft = ['nim', 'nimble']
hook_add = '''
au User asyncomplete_setup call asyncomplete#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
以上です。