1. はじめに
以下の過去5年間のGoogle検索トレンド (全世界) の結果を見て下さい。もはやVSCodeが一番検索キーワードが多く、vimが健闘しているのが意外ですが、Emacsは右肩下がりです。こんなエディタ情勢の中でもあなたはEmacsを使いますか?応えはNoですよね?
とは言っても、VSCodeでも慣れ親しんだEmacsキーバインド使いたいですよね?
そんなEmacsユーザのために最新のEmacsキーバインドのExtensionを調査してみましたので、2019/12/15時点の最新情報としてまとめておきます。
2. まず結論から
一通り触ってみた結果をもとに結論から伝えておきます。
キーバインドのサポート数が一番多く機能的にほぼ問題がなく、日本人の方 (tuttieeeさん) が他と比べると頻繁に更新されているなどの理由から、Awesome Emacs Keymapが一番お勧めかと思います。
不具合や改善点があれば、githubの以下のリポジトリにissueを投稿しましょう!
https://github.com/tuttieee/vscode-emacs-mcx
たた、個人的によく使うバッファの先頭/末尾に移動するM - >
, M - <
が使えるものはありませんでした…
こちらは私の認識間違いでして、@tuttieee さんからコメント頂きまして、ESCではなくAltを割り当てられているとのことでした!
M - >
, M - <
のバッファ移動系もAwesome Emacs Keymapだと問題なく動きますね。
こちらについては、ESCと他キーの組み合わせはキーバインドとして定義できないのです…
明記されたドキュメントは見つけられませんでしたが、おそらくVSCodeの仕様上の制約です。
Awesome Emacs Keymapでは、ESCの代わりのメタキーとして、altをアサインしています。
他のVSCodeのemacsプラグインもそうしていると思います(というかAwesome Emacs KeymapのキーバインドはEmacs Friendly Keymapから拝借していまして、hiro-sunから脈々と受け継がれた流儀ですw)
3. VSCodeでも最低限使いたいキーバインド
3-1. カーソル移動
コマンド |
機能 |
C-p |
1行上に移動 |
C-n |
1行下に移動 |
C-f |
1文字前に移動 |
C-b |
1文字後に移動 |
C-a |
行先頭に移動 |
C-e |
行末尾に移動 |
C-v |
1画面分下に移動 |
M-v |
1画面上に移動 |
M-< |
バッファ (ファイル) の先頭に移動 |
M-> |
バッファ (ファイル) の末尾に移動 |
3-2. 検索
コマンド |
機能 |
C-s |
前方検索 |
C-r |
後方検索 |
3-3. 編集
コマンド |
機能 |
C-y |
貼り付け |
C-d |
カーソルの文字を削除 |
C-k |
カーソル位置以降の文字を削除 (削除部分はクリップボードにコピーされているので、C-yで貼り付け可能) |
C-Space |
マークセット |
C-w |
マーク部分からカーソル位置までカット |
M-% |
文字検索と置換 (一つ一つ確認しながらの置換) |
3-4. ウインドウ操作
コマンド |
機能 |
C-x 2 |
2行に分割 |
C-x 3 |
2列に分割 |
C-x 0 |
カーソルのあるほうの分割したウィンドウを閉じる |
4. Emacsキーバインドの拡張機能一覧
emacsで検索してヒットしたキーバインド系の拡張機能を上位からいくつか調査してみました。
4-1. Awesome Emacs Keymap
バージョン |
0.14.1 (2020/2/21) |
感想 |
個人的には完璧です。M-> (最初/最後の行への移動) などのESCキーはVSCodeの制約から使えず、代わりにAltキーをアサインしているとのことでした。 |
4-2. Emacs Friendly Keymap
バージョン |
0.9.0 (2019/6/6) |
感想 |
個人的には1行削除→Undoした後のカーソル位置が元の位置に戻らずに行末に移動するのが好みではないのと、少し動作が他に比べると遅いです。 |
4-3. VSCodeEmacs
バージョン |
0.8.2 (2017-10-09) |
感想 |
ESC系のコマンドがありませんが、それ以外は大体使えたという感じです |
4-4. Emacs
バージョン |
0.0.9 (2016/2/12) |
感想 |
カーソルの上下移動コマンドのC-n, C-pがカーソル移動ではなく、画面スクロールだった… |
4-5. emacs-region
バージョン |
1.3.0 (2017/7/17) |
感想 |
1行削除のC-kが使えないのでNG |
4-6. Emacs Keymap Improved
バージョン |
1.1.0 (2018/8/25) |
感想 |
ESC系のコマンドがありませんが、それ以外は大体使えたという感じです |
4-7. emacs-mode
バージョン |
0.0.4 (2019/7/21) |
感想 |
Undo (Ctrl-/)が使えない |
4-8. Emacs Keymap
バージョン |
0.1.1 (2016/11/10) |
感想 |
例えばC+2など、画面分割系コマンドが使えない |