RubyMineのIdeaVimで、jjをEscにマッピングする方法
タイトルの通り設定しました。設定の再読み込みがコマンドラインからうまく実行できなかったですが(現在も原因はわからぬまま)、とりあえず設定自体はできたので書きます。
結論以降は試行錯誤の記録なので、設定方法だけわかればいいという方は飛ばしてください。
結論
- ~/.ideavimrcを開く
imap jj <Esc>
を入力して保存- RubyMineを再起動
環境
~/.ideavimrcにキーマッピングを追記
デフォルトのキーマッピングだけで頑張ってきたのですが、Escはどうも手が届かないのでjj
に変更しようと思い、下記参考に設定しました。
vim - Intellij Ideavim how to set key map for
具体的には
% vim ~/.ideavimrc
もしくは、RubyMineの画面右下にIdeaVimのアイコンがあるので、そこから開いても良しです。
そして、.ideavimrcに
imap jj <Esc>
と記述して、保存。ここまでは何も問題ありませんでした。
コマンドラインからの再読み込みがうまくいかない
こういう設定ファイルの常ですが、設定を追記したら再読み込みしないと設定が適用されません。
というわけで再読み込みを実行するわけですが...
% source ~/.vimrc .ideavimrc:1: parse error near `>'
う〜ん、>付近で解析できなかったと言われてもコマンドはこれだしなあ...。いろいろググって、似たような事例で「''」で囲むといいよという例あり。試してみる。
% vim ~/.ideavimrc # シングルクォートで囲む imap jj '<Esc>'
そして実行
% source ~/.ideavimrc command not found: imap
imapコマンドがないと言われてしまえば、もうお手上げ。残念無念また来年。
RubyMine自体を再起動しました
結局RubyMine自体を再起動すれば、設定ファイルは読み込みされるので再起動しました。
ちなみに、現在起動中のプロジェクトを閉じると、プロジェクト選択ウィンドウが出ますが、こちらも閉じないと再起動にはなりませんのでご注意を。
再起動すると、無事にjj
でINSERT MODEから抜けられるようになりました...!?
NORMAL MODEにはなっているのですが、「''」が入ってしまいました。 これは先ほどの試行錯誤で
% vim ~/.ideavimrc # シングルクォートで囲む imap jj '<Esc>'
としたせいです。つまり「jj
というキーをおしたら、''
を入力して、'Esc'するよ」というキーバインドになってしまいました。なので元の通りの設定に直しておきましょう。
% vim ~/.ideavimrc # シングルクォートを除外する imap jj <Esc>
bashでも試してみる
たまにzsh特有のエラーである可能性もあるので、RubyMineのシェルをbashに変更して試してみます。 シェルの変更方法はターミナル - 公式ヘルプ | RubyMineを参照しています。
Prefereceを開き、TerminalメニューにあるShellPathを/bin/bash
に変更します。
APPLYを押して、設定を閉じます。ターミナルを一度閉じてもう一度開くと、bashに切り替わるので、zshと同じように試してみます。
$ source ~/.ideavimrc syntax error near unexpected token `newline'
bashでもzshと同様にエラーが出てしまいました。どうやら大人しくRubyMineを再起動した方が良さそうですね。
感想
結局コマンドラインからの再読み込みはできずじまいで、少しもやもやです。 そんな頻繁に設定いじらないからいいんですけどね。