セットプチフォッカ

勉強したアウトプット、ときどきフォッカチオ作っていました

RubyMineのIdeaVimで、jjをEscにマッピングする方法

タイトルの通り設定しました。設定の再読み込みがコマンドラインからうまく実行できなかったですが(現在も原因はわからぬまま)、とりあえず設定自体はできたので書きます。

結論以降は試行錯誤の記録なので、設定方法だけわかればいいという方は飛ばしてください。

結論

  1. ~/.ideavimrcを開く
  2. imap jj <Esc>を入力して保存
  3. RubyMineを再起動

環境

  • macOS Catalina 10.15.6
  • RubyMine f:id:ikmbear:20200814073502p:plain
  • シェル:zsh

~/.ideavimrcにキーマッピングを追記

デフォルトのキーマッピングだけで頑張ってきたのですが、Escはどうも手が届かないのでjjに変更しようと思い、下記参考に設定しました。
vim - Intellij Ideavim how to set key map for - Stack Overflow

具体的には

% vim ~/.ideavimrc

もしくは、RubyMineの画面右下にIdeaVimのアイコンがあるので、そこから開いても良しです。

f:id:ikmbear:20200814074338p:plain

そして、.ideavimrcに

imap jj <Esc>

と記述して、保存。ここまでは何も問題ありませんでした。

コマンドラインからの再読み込みがうまくいかない

こういう設定ファイルの常ですが、設定を追記したら再読み込みしないと設定が適用されません。

というわけで再読み込みを実行するわけですが...

% source ~/.vimrc
.ideavimrc:1: parse error near `>'

う〜ん、>付近で解析できなかったと言われてもコマンドはこれだしなあ...。いろいろググって、似たような事例で「''」で囲むといいよという例あり。試してみる。

ruby on rails - zsh: parse error near `\ ' when Adding AWS keys as environment variables - Stack Overflow

% vim ~/.ideavimrc
# シングルクォートで囲む
imap jj '<Esc>'

そして実行

% source ~/.ideavimrc
command not found: imap

imapコマンドがないと言われてしまえば、もうお手上げ。残念無念また来年。

RubyMine自体を再起動しました

結局RubyMine自体を再起動すれば、設定ファイルは読み込みされるので再起動しました。

ちなみに、現在起動中のプロジェクトを閉じると、プロジェクト選択ウィンドウが出ますが、こちらも閉じないと再起動にはなりませんのでご注意を。

f:id:ikmbear:20200814075447p:plain

再起動すると、無事にjjでINSERT MODEから抜けられるようになりました...!? f:id:ikmbear:20200814075834g:plain

NORMAL MODEにはなっているのですが、「''」が入ってしまいました。 これは先ほどの試行錯誤で

% vim ~/.ideavimrc
# シングルクォートで囲む
imap jj '<Esc>'

としたせいです。つまり「jjというキーをおしたら、''を入力して、'Esc'するよ」というキーバインドになってしまいました。なので元の通りの設定に直しておきましょう。

% vim ~/.ideavimrc
# シングルクォートを除外する
imap jj <Esc>

bashでも試してみる

たまにzsh特有のエラーである可能性もあるので、RubyMineのシェルをbashに変更して試してみます。 シェルの変更方法はターミナル - 公式ヘルプ | RubyMineを参照しています。

f:id:ikmbear:20200814080703p:plain

Prefereceを開き、TerminalメニューにあるShellPathを/bin/bashに変更します。 f:id:ikmbear:20200814080849p:plain

APPLYを押して、設定を閉じます。ターミナルを一度閉じてもう一度開くと、bashに切り替わるので、zshと同じように試してみます。

$ source ~/.ideavimrc
syntax error near unexpected token `newline'

bashでもzshと同様にエラーが出てしまいました。どうやら大人しくRubyMineを再起動した方が良さそうですね。

感想

結局コマンドラインからの再読み込みはできずじまいで、少しもやもやです。 そんな頻繁に設定いじらないからいいんですけどね。