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