長年Windows上ではxyzzyで生活してきたが、更新が止まって6年以上ということもありさすがに苦しくなってきた。今風の開発をしようとすると、今風のエディタが欲しくなる。そこで、Visual Studio Codeに宗旨変えすることとした。Visual Studio Codeは完成度の高いエディタで、今風の開発に必要なものはすべて揃っている。動作も軽快な部類で文句の付け所がない。
しかしながら、さすがにキーバインディングだけはemacs風にしないと生活できない。同じ病を抱えた人が多数いるため、さまざまなextentionが公開されている。とりあえず評判の良さそうなAwesome Emacs Keymapを導入することにした。まだ使い始めて日が浅いが、大きな問題はなさそうだ。
ここで恥を忍んでお話すると、実はemacsのキーバインディング100%で生活しているわけではなく、undo, cut, copy, pasteだけはWindows風のショートカットを好んで使用している。こればかりは他のアプリケーションとの兼ね合いもあり、どうしても必要だ。xyzzyではこの部分をうまくサポートしてくれるwinkeyを使用していた。
Visual Studio CodeとAwesome Emacs Keymapの組み合わせでは、デフォルトでもC-z, C-cは期待通りに動作してくれる。Windows上ではsuspend-frameは使わないし、ユーザ用に予約済みのキーバインディングを借用しても問題ない。
ところが、C-vはscroll-up-commandに割り当てられているので、これを明示的に殺す必要がある。Happy Hacking KeyboardではPg Up/Dnが便利な場所にあるので普段はそちらを使用しており、C-vを殺しても不便がない。これには、Keyboard Shortcutsの設定から削除するか、keybindings.jsonに以下を追記すれば良い。
{
"key": "ctrl+v",
"command": "-emacs-mcx.scrollUpCommand",
"when": "editorTextFocus && !suggestWidgetVisible"
}
もう一つの問題はC-xで、Prefix Keyとしてあまりに広く使われているため、C-vのようにそのまま殺すわけにはいかない。そこで一工夫し、テキストが選択されている場合のみcutとして動作し、その他の場合はemacs用のprefix keyとして動作させる。そのためには、keybindings.jsonに以下を追記すれば良い。
{
"key": "ctrl+x",
"command": "editor.action.clipboardCutAction",
"when": "editorHasSelection"
}
コメント