IdeaVim が意外とよく出来ている

最近はコーディングに JetBrains の IntelliJ IDEA を使う事が多い。元々は Scala を書くために導入したものだが、プラグインを導入すれば TypeScript や Go、Ruby、その他様々な言語もサポートしてくれるようになるので広く使うようになった。

IntelliJ IDEA には Vim のようにエディタを操作できる IdeaVim というプラグインを導入して使用している。Vim のモードやカーソル移動がサポートされていれば十分と思っていたが、調べていくと意外と高機能であった。

設定は .ideavimrc に記述できる。

IdeaVim の設定は .vimrc と同様に .ideavimrc に記述することができる。

source コマンドで .ideavimrc から既存の .vimrc を読み込んだりすることができる。

source ~/.vimrc

set multiple-cursors
set clipboard=unnamed
set scrolloff=10
set sidescrolloff=16

Vim プラグインのサポート

驚くべきことに Vim プラグインにも対応している。 ドキュメントを見る限り対応プラグインは限定的だが、 vim-plug と同様に .ideavimrc に Plug 'foo/bar' と記述するだけで使用可能になる。

対応プラグインの一覧を見ると NERDTree にも対応していた。IDE のプロジェクトツールウィンドウと連動して動作する。

Plug 'preservim/nerdtree'
set NERDTree

キーマップ

キーマップにも対応している。Vim を使うときは;をリーダーとして設定し様々なアクションを設定していたので、こちらも同じように設定してみる。

let mapleader = ";"
nnoremap <Leader>n :NERDTreeToggle<CR>
nnoremap <Leader>f :action GotoFile<CR>

IDE 側のアクションも呼び出せるようになっているので、Vimfzf を呼び出すように、ファイル検索のランチャーが起動するように設定している。用意されているアクション一覧は :actionlist で確認することができた。

こちらによるとキーマップは IDE のエディタ部分にフォーカスが当たっているときだけ有効になるらしい。:NERDTreeToggle でプロジェクトツールウインドウに切り替わったあと、そのまま :NERDTreeToggle で閉じたりできないのは少し残念。