emacs大好き! 改め、
emacsの keymap(キーバインド) が 大好き!
な僕がIntelliJ IDEA導入後に行ったkeymap設定をご紹介します(*´ڡ`●)
僕のエディター遍歴
※2013年12月現在、エンジニア歴(=社会人歴)は5年です。
| エディター | 開発言語 | |
|---|---|---|
| 1年目 | emacs | PHP |
| 2~3年目 | vimとemacsをウロウロ | PHP |
| 4年目 | Eclipse | Java |
| 5年目 | IntelliJ IDEA | Java |
プログラミングで初めて使った(※1)エディターがemacsでした。
最初はemacs特有のCtrl + xx、Alt + xx系の操作に四苦八苦しながらも、慣れるともう、Ctrlキー(※2)が左手小指の定位置になっていました。
というわけで、根っからのemacs厨(※3)になった僕はJavaを書くことになったときも、Eclipseにemacsの一部のkeymapを移植して使っていました。
PHPの開発ではIDEを使ったことがなかったので、IDEの便利機能に感動しながら、さらにemacsのkeymapでハッピーな日々を送りました。
そして、今春のある日、チームにIntelliJが導入され、これはもうIntelliJでもemacsのkeymapを使うしかないわけで、以下で紹介する設定を行ったわけです。
※1…仕事として本格的に
※2…キーボード左下のCtrlキーではなく、CapsLockキーをコレでCtrlキーに変更
※3…でもこのとき気づいたんです。僕はemacsを愛していたわけではなく、emascのkeymapを愛していたのです∑(゚д゚lll)
僕のキラキラkeymap設定
EclipseにもIntelliJにも、もともとemacsやvimのkeymapが同梱されており、設定で切り替えることができるのはご存知かと思います。
なので、最初は、IntelliJに同梱されているemacsのkeymapをカスタマイズしようかと思いました。が、やめました。
IntelliJはインテリジェンスで素晴らしいエディターなので、デフォルトの機能を最大限に活かしたい と思ったのです。(これは、IntelliJマスターの同僚の受け売りです。)
※Eclipseでも、Eclipseデフォルトのkeymapにemacsのkeymapを自力で移植して使っていました。
※IntelliJのkeymapをカスタマイズする際は、まず、ベースとなる設定をcopyしてから始めてください。


具体的な設定内容
僕は以下のemacsのkeymapを、IntelliJのデフォルトのkeymapに移植しました。
-
Ctrl + AMove Caret to Line Start -
Ctrl + EMove Caret to Line End -
Ctrl + KCut up to Line End -
Ctrl + YPaste -
Alt + VPage Up -
Ctrl + VPage Down
あと、Eclipseにはあったけど、IntelliJではキー未割り当てのコマンドも設定しています。
-
Ctrl + DDelete Line -
Ctrl + Alt + ↓Duplicate Line or Block -
Alt + ↑Move Line Up -
Alt + ↓Move Line Down
書き出してみると案外少ないですが、この設定をするしないでは、自分の作業効率が大きく変わってきます。
でもこうやって、IntelliJデフォルトのkeymapをカスタマイズすると 2つの問題 がでてきます。
keymapのカスタマイズによる問題
1つ目:コマンド同士の競合
良い例としては、通常Ctrl + Aに割り当てられている "Select All (テキスト全選択)" です。
この場合は、 Select All の定義をCtrl + Alt + Aに変更しました。
同様に他にも被るコマンドについては、AltキーまたはShiftキーを定義に追加しました。
※キーの割り当て状況はここでわかります。

②の上でキーを押すと、そのコマンドを絞り込んで表示してくれます。

(変更済みのコマンドはIntelliJが青色で教えてくれます。)
2つ目:他のメンバーのIntelliJが使いにくい
知らんがな
まとめ
IntelliJ IDEAを導入する大きな目的の1つが、作業効率アップだと思います。
自分好みのkeymapで気持ちよくコーディングできればさらに効率アップ間違いなしです!
ぜひIntelliJをあなた色に染めてあげてください!!
--
P.S. 最近はSublime Text にお熱です。もちろん、sublemacspro でな( ー`дー´)キリッ