Jetbrainsのキーマップ、Mnemonicを試してみました。その感想になります。
導入経緯
とある案件でREST APIを構築することになり、Pycharmで実装していこうと思ったのですが、最近はNeovim触ったりVSCode触ったりしていて手が思うように動きませんでした。
そこで、やっぱりJetbrainsとVSCodeはキーバインドをできるだけ統一したいと思いました。今の所メインはJetbrainsなのでJetbrainsのキーマップを中心に調べていたら、以下の記事に出会いました。
https://zenn.dev/shyne/articles/77e59629635fd4
自分の中にあった、VSCodeとJetbrainsのキーバインドの不一致という問題を解決できるものではないのですが、興味をもったので使ってみました。
Jetbrainsのキーマップをだいぶ忘れていたので、新しいキーマップを試すのは良いタイミングだとも思いました。
感想
使ってみた感想ですが、使いやすいキーマップだと思います。
このキーマップは、Windows/Mac/LinuxのOS問わず使えるのを主目的としています。そのためかキーマップは複合キーばかりになっています。
導入前は 複合キーが多いので使いづらいかなと思ったのですが、実際使ってみると複合キーは全然苦ではありませんでした。複合キーは慣れの問題ですぐに解決するかと思います。
OS問わず使えるのを目指しているというのが個人的には好感触です。VSCodeはともかくJetbrainsはWindowsとMacでだいぶキーが違いますからね。Macに切り替えたばかりの頃は、かなり戸惑いました。
またいつメインPCがWindowsに回帰するかわかりませんし、OS共通のキーマップはありがたいです。
いいと思ったところ
覚えやすいキーマップ
キーの設定が覚えやすいのがいいです。
VSCodeもそうですが、Jetbrainsのデフォルトキーマップも一度手になじませることができれば良いのですが、はじめて触るときやしばらく時間を空けたときは、キーマップを忘れてしまい思い出すことができません。それは機能とキーマップに関連性がないからです。例えば、定義ジャンプはVSCodeだとF12、JetbrainはCmd+Bとかで、何の関連性もありません。
その点、このMnemonicはCmd J −>Dとなっているのですが、J=Jump、D=Definitonなので覚えやすいです。忘れていてもすぐにおもいだせます。この思想がいいです。
私はこのキーマップを使い始めてまだ数日しか経っておらず、まだ時々手が止まってしまうことがありますが、このコンセプトのおかげでストレスなく使えます。
割り当てが豊富で公式のREADMEが丁寧
公式のREADMEがすごく丁寧でわかりやすいです。
https://github.com/dmimat/intellij-mnemonic-keymap#readme
英語ですが長文はなく読みやすいですし、キーの割り当ての一覧を載せてくれているので検索もしやすいです。
また標準で割り当てられている機能が豊富なので、やりたいことができないということはほとんどありません。READMEにあるキーバインドを一通り実行すると、今まで使っていなかった機能の発見もありました。
微妙だと思ったところ
細かい微調整、カスタムは必要かも
デフォルトのままでほとんど問題ありませんが、人によっては少し微調整が必要になるかもしれません。
私は、コメントとPage Top/Endは割り当てキーを増やしました。
コメントはCmd L -> C (Line -> Commet)なのですが、私はこれに加えて従来のCmd /を追加しました。既に何かに割当たっていましたが、それは削除しました。私は複数行を連続でコメントアウトすることがあって、コメントアウトキーを連打することがあるのですが、Cmd L->Cを連打すると、Cmd C * 2でdeepLが起動してしまう問題がありました。それを回避するためにCmd /も使うことにしました。
またページのTopとEndの移動は、JetbrainsデフォルトのCmd Home/Endのままです。これも使いづらいので、Cmd Up/Downを追加しました。これも既存割り当てがありましたが、削除しました。
ターミナルにフォーカスするとキーが効かなくなる
ターミナルにフォーカスするとキーマップが効かなくなる問題があります。
これはおそらくですが、すべてのキーマップはCmdを起点としているため、iTermの何かと干渉しているのかも知れません。なので未確認ですが、Windwosでは発生しない問題かもしれません。
iTerm側の設定をいじれば解決するかもしれませんが、まだ調べ切れていません。もしくはJetbrains側のターミナルのToggleをファンクションキーのどれかにして、一度ターミナルのcloseを経由するなどすれば解決するかもしれません。
ターミナルはかなり使うので、その度にマウスに移行されるのは辛いです。早めになんとかしたいと思っております。
今の所はJetbrains特化になる
私は元々は、JetbrainsとVSCodeのキーマップを同じにしたいと思っていたのですが、このキーマップでは解決できません。
このキーマップはJetbrainsだけに提供されています。VSCodeの拡張機能にはありません。どうしてもVSCodeで使いたければ、自分で設定していくしかなさそうです。
なので私はとりあえずVSCodeはデフォルトのまま使っています。これも気持ち悪いので、公式がVSCode対応してくれるか他の誰かがやってくれることを願っています(他力本番😇)
