IdeaVIMを地味に使いやすくする

YouTrackのideavimカテゴリをつらつら見ていたら「これ,IdeaVIM直さなくてもできるな」ってのを見かけたので,ちょっと試してみた。

コード補完の候補や,その他のポップアップウィンドウの選択候補をCtrl+J/Ctrl+Kでカーソル移動させたいってやつ。別にIdeaVIM直さなくても,普通にKeymapでカーソル上下をそれぞれCtrl+K, Ctrl+Jにリマップするだけで済む。もちょっと詳しく書くと,

Settings -> Keymap
  Editor Action -> Down  : Ctrl+J
  Editor Action -> UP    : Ctrl+K

とする。たぶん,Ctrl+Jは"Join Lines"にマッピング済みだと思うけど,IdeaVIM使ってて,これ使う事は希なのでバッサリ割当てを外す。調子にのって,Ctrl+L, Ctrl+Hをカーソル左右に割り当てても面白いかと思ったけど,そこまでやってない。


今までは,他のツール使ってWindowsのJISキーボードだと「カナ/かな」キーを「↓」キーに割り当て直したりしてたけど,こっちのほうが断然便利だと思う。

さっきのCtrl+J/Ctrl+Kのカーソル移動と似たような感じで,あんまり使ったとこがない「Move Line Up/Down」や「Move Statement Up/Down」をJ/K系のコンビネーションで実現したいって話。これもIdeaVIM弄らなくても単純にKeymapの設定だけで実現できる。

Settings -> Keymap
  Main Menu -> Code -> Move Statement Down  : Alt+J
  Main Menu -> Code -> Move Statement Up    : Alt+K
  Main Menu -> Code -> Move Line Down       : Alt+Shift+J
  Main Menu -> Code -> Move Line Up         : Alt+Shift+K

Move Lineより,Move Statementのほうが使いでがありそうだったので,コンビネーションキーの少ない方を割り当てたけど,この辺は好みの問題かと。ショートカットキーが分かりやすくなったら,使う場面も増えるのかしらん?

Ctrl+AとCtrl+Xでカーソル位置の数字を増やしたり減らしたりするvimのあれ。よく使ってるKaoriya版gVimでは,Ctrl+Aは全選択,Ctrl+Xはカットに割り当ててるんで,そんな機能がある事は知っているけど使った事は無いw


とは言え,あったら便利な機能ではあるので,あるなら使いたい(&覚えたい)と思っていたら,Shifterという打って付けなプラグインがあったので,これを利用させてもらう。

問題になるのは,どのキーコンビネーションにマッピングするかなんだけど,Shifter標準のキーマップもたいがい気がふれてるw(Ctrl+Shift+Alt+, と Ctrl+Shift+Alt+. だ)。とは言え,カンマとピリオドを使うアイデアは悪く無いので,こんな風にリマップしておいた。この辺は好みの問題。

Settings -> Keymap
  Plug-ins -> Shifter -> Shift-Down Word at Caret : Ctrl+,
  Plug-ins -> Shifter -> Shift-Up Word at Caret   : Ctrl+.

デクリメントが微妙な感じだけど,使い勝手は悪くは無かった。ただ残念な事に,このやり方だとIdeaVIMのマクロ(qコマンド)では使えなかった。:-(
一応,対策はあって,ここのオレオレIdeaVIMを使って,Shifterの機能をIdeaVIMのキーマップにアサインしなおせばIdeaVIMのマクロからも使えた。なんで,"qayypCtrl+.q"みたいなマクロを登録して,

10

とかって行上で "10@a"とかってすると,こんな結果になった。うれしい。:-)

10
11
12
13
14
15
16
17
18
19
20

こっちのやり方は特殊すぎるので詳しいやり方は割愛。一応,自前の_ideavim.groovyこんなの
あと,ここまでやってから知ったのだけど,じゃあ本家のvim/gVimのincrement/decrementをCtrl+./,にリマップしようと思ったら,vimに反応できないのでリマップできんかった。ぐぬぬ。しようが無いので,だいぶ不本意だけど _vimrc に,こんな定義しといた。

noremap <C-Up> <C-a>
noremap <C-Down> <C-x>


ps.
嗚呼,こうやって他の人には使えないIntelliJ/IdeaVIMが出来ていくんだな...(でもイヤじゃないw