IdeaVIM は、JetBRAINS 社 IDE 製品のキーマップを Vim っぽくするプラグインです。
最近になって久しぶりに IdeaVIM が更新されたので CHANGELOG を眺めていたら、何と :map コマンドによるモード別キーマップがサポートされていました。
早速 .ideavimrc に Vim のお気に入りキーマップをいくつか移植してみたところ、結構いい感じに動いています。この機能がずっと欲しかったので個人的には神アップデートです。
IdeaVIM はインストールはしていたものの、本家 Vim との動作の違いに馴染めず、タイプミスが多くなってしまうので使わずにいましたが、:map コマンドのサポートでかなり Vim に近い操作感でコーディングできるようになりました。
動作確認環境
- Mac OSX Mountain Lion
- PhpStorm7.0.3
- IdeaVIM0.35
目次
.ideavimrc サンプル
ホームディレクトリ直下の .ideavimrc に設定を記述します。私の .ideavimrc はこんな感じ。利用可能なオプションは ideavim/doc/set-commands.md を参考に。変更は IDE を再起動しなくても :source ~/.ideavimrc コマンドで再読み込みできます。
.ideavimrc
"検索をファイルの先頭へ循環しない
set nowrapscan
"大文字小文字の区別なし
set ignorecase
"検索時に大文字を含んでいたら大/小を区別
set smartcase
"検索対象をハイライト
"ハイライトを消す場合は:noh[l]
set hlsearch
"スクロール時に表示を10行確保
set scrolloff=10
"JIS 配列 C-[ で Esc
inoremap <c-]> <esc>
"x キー削除でデフォルトレジスタに入れない
nnoremap x "_x
vnoremap x "_x
"vv で行末まで選択
vnoremap v ^$h
"選択範囲のインデントを連続して変更
vnoremap < <gv
vnoremap > >gv
"ノーマルモード中にEnterで改行
noremap <cr> i<cr><esc>
"インサートモードで bash 風キーマップ
inoremap <c-a> <c-o>^
inoremap <c-e> <c-o><right>
inoremap <c-b> <left>
inoremap <c-f> <right>
inoremap <c-n> <down>
inoremap <c-p> <up>
inoremap <c-h> <bs>
inoremap <c-d> <del>
inoremap <c-k> <c-o>D<right>
inoremap <c-u> <c-o>d^
inoremap <c-w> <c-o>db
IDE キーマップとの競合を解決
Vim キーマップと IDE のキーマップ競合は、「Vim Emulation」という設定項目で管理するようになりました。
IDE Settings > Vim Emulation
.ideavimrc のキーマップと IDE のキーマップが競合すると「Undefined」で登録されるので、どちらを優先するか割り当てます。「Undefined」の状態でキー入力すると、以下のようなアラートが上がるのですぐ気づきますね。
VIM キーマップは削除
これまで IdeaVIM を使っていた方は 「Vim」というキーマップが IdeaVIM のインストール時に自動生成されているはずです。こちらのキーマップは不要になったので、削除して1からキーマップを設定しなおすことをおすすめします。
IDE の機能をマップすることはできない
残念ながら IDE としての機能をマップすることはできません。:map や :command に IDE の機能を割り当てられるようになったらと思うと夢が膨らみます。今後に期待しています。