IdeaVIMがmapコマンドによるモード別キーマップに対応した

 ツイート 9  シェア 0  Hatena 9

IntelliJ IDEA

IdeaVIM は、JetBRAINS 社 IDE 製品のキーマップを Vim っぽくするプラグインです。Vim 好きの皆さんはご存知ですよね。

最近になって久しぶりに IdeaVIM が更新されたので CHANGELOG を眺めていたら、何と :map コマンドによるモード別キーマップがサポートされていました。

ideavim-changelog

早速 .ideavimrc に Vim のお気に入りキーマップをいくつか移植してみたところ、結構いい感じに動いています。この機能がずっと欲しかったので個人的には神アップデートです。

IdeaVIM はインストールはしていたものの、本家 Vim との動作の違いに馴染めず、タイプミスが多くなってしまうので使わずにいましたが、:map コマンドのサポートでかなり Vim に近い操作感でコーディングできるようになりました。

動作確認環境

  • Mac OSX Mountain Lion
  • PhpStorm7.0.3
  • IdeaVIM0.35

目次

  1. .ideavimrc サンプル
  2. IDE キーマップとの競合を解決
  3. VIM キーマップは削除
  4. IDE の機能をマップすることはできない
  5. 参考サイト

.ideavimrc サンプル

ホームディレクトリ直下の .ideavimrc に設定を記述します。私の .ideavimrc はこんな感じ。

利用可能なオプションは ideavim/doc/set-commands.md を参考に。

変更は IDE を再起動しなくても :source ~/.ideavimrc コマンドで再読み込みできます。


"検索をファイルの先頭へ循環しない
set nowrapscan

"大文字小文字の区別なし
set ignorecase

"検索時に大文字を含んでいたら大/小を区別
set smartcase

"検索対象をハイライト
"ハイライトを消す場合は:noh[l]
set hlsearch

"スクロール時に表示を10行確保
set scrolloff=10

"JIS 配列 C-[ で Esc
inoremap  

"x キー削除でデフォルトレジスタに入れない
nnoremap x "_x
vnoremap x "_x

"vv で行末まで選択
vnoremap v ^$h

"選択範囲のインデントを連続して変更
vnoremap <  >gv

"ノーマルモード中にEnterで改行
noremap  i

"インサートモードで bash 風キーマップ
inoremap  ^
inoremap  $
inoremap  
inoremap  
inoremap  
inoremap  
inoremap  
inoremap  
inoremap  D
inoremap  d^
inoremap  db

IDE キーマップとの競合を解決

Vim キーマップと IDE のキーマップ競合は、「Vim Emulation」という設定項目で管理するようになりました。

IDE Settings > Vim Emulation

ideavim-vim-emulation

.ideavimrc のキーマップと IDE のキーマップが競合すると「Undefined」で登録されるので、どちらを優先するか割り当てます。「Undefined」の状態でキー入力すると、以下のようなアラートが上がるのですぐ気づきますね。

ideavim-conflict

VIM キーマップは削除

これまで IdeaVIM を使っていた方は 「Vim」というキーマップが IdeaVIM のインストール時に自動生成されているはずです。こちらのキーマップは不要になったので、削除して1からキーマップを設定しなおすことをおすすめします。

IDE の機能をマップすることはできない

残念ながら IDE としての機能をマップすることはできません。:map や :command に IDE の機能を割り当てられるようになったらと思うと夢が膨らみます。今後に期待しています。

参考サイト

 ツイート 9  シェア 0  Hatena 9