💪

Intellij 系 IDE で、Emacs キーバインドを使いたい! ideaVim で解決できます。

に公開

はじめに

こんにちは、皆さん、Emacs 使っていますか?
わたしは最近 Emacs にはまってます。
普段、仕事で使うのは AndroidStudio なので Emacs のキーバインドをそこでも使いたいなーと思っていました。

Emacs プラグインの問題点

Emacs のプラグインはあるにはあるのですが以下の問題がありました。

  • C-x u のような「キーバインドの途中で一度手を離すようなキーバインド」が実現できない
  • 自分独自のキーバインドを設定できない(ひとつのキーバインドで複数の操作をするような)

等々...

解決策

その反面、 ideaVim(Intellij 系 IDE の vim キーバインド用プラグイン) は柔軟性がありました。

  • 先程の「キーバインドの途中で一度手を離すようなキーバインド」が実現可能
  • 独自のキーバインドを設定できる
  • Intellij Actions が使える
    Intellij Actions には IDE のほとんどの操作が定義されています。
    これをキーバインドに定義できるためほとんどマウスを使わずに IDE を操作できます。

そこで、 ideaVim を使って Emacs のキーバインドを再現してみることにしました。

手順

  1. AndroidStudio(他の Intellij 系 IDE も同様) で、 ideaVim をいれます。
  2. Open ~/.ideavimrc で、設定ファイルを開きます。
    ideaVim をいれると、IDE の右下に V というマークがでます。そこをクリックすると Open ~/.ideavimrc があります。

ここまできたら後は .ideavimrc に書いていくだけです。
以下に基本的なキーバインドで書いたので、使ってください。

imap: インサートモード -> 基本このモードを使う
vmap: ビジュアルモード -> Emacs の Mark Set
map: ノーマルモード -> キーバインドが多い場合に使う

.ideavimrc

補足

  • <C-o> は一時的に normal mode にはいる
  • <Action>(アクション名) は IntelliJ Action という IDE の操作コマンド
    IDE に関わる操作をほとんど設定できます。
    以下にアクションリストがあるので参考にしてみてください。(恐らく有志でまとめてくださっています)
    https://gist.github.com/lexxish/6d629fa9b38581be3ece2a523879cfb7

自分の行った操作の Intellij Action が知りたいとき

SearchEverywhere を開いて(Shift 二回押し)、「ideavim track」と検索するとでてくる「Ideavim: Track Action IDs」を選択しエンターまたはクリックします。
画像のように ON 表示になっていれば良いです。
その後なにかしらの操作をすると、右下に Action 名がでてきます。

うまくいかないとき

❓キーバインドが反映されない

  • キーバインドが Intellij IDE や Mac のキーバインドと競合している
  • .ideavimrc の変更後、更新していない

Discussion