こんばんは。
footlogを開発している@amount86です。
mac OSには、デフォルトでemacsバインドが備わっています。
emacsバインドとは、以下のようなキーバインドです。
矢印キー | emacsバインド | 備考 |
---|---|---|
↑ | C-p(Ctrl + p) | previousの「p」 |
↓ | C-n(Ctrl + n) | nextの「n」 |
→ | C-f(Ctrl + f) | forwardの「f」 |
← | C-b(Ctrl + b) | forwardの「f」 |
home | C-a(Ctrl + a) | ??? |
end | C-e(Ctrl + e) | endの「e」 |
BacSpace | C-h(Ctrl + h) | ??? |
delete | C-d(Ctrl + d) | deleteの「d」 |
emacsバインドの何がいいかというと、ホームポジションから離れずにコーディングができることです。
プログラムを書く人間にとって、特に「矢印キー」は多用するキーにも関わらず、デフォルトのバインドだと、一度ホームポジションから離れないと打てません。
ということで、emacsバインドを使ってみようと思い使ってみると、長年使われている理由が分かる、とても癖になるキーバインドでした。
ただし、一つ問題があります。
他にもMetaキーに割り当てられている単語単位の移動も動作しないなど。
色々調べてみると、VSCodeではOSで受け取ったキー入力をそのまま受け取っているわけではなく、VSCode上でキー入力とショートカットがマッピングされているみたいです。
mac OSのVSCodeでは、デフォルトで「cursorRightSelect」に「Shift + C-f」が割り当てられていないことが原因でした。
なので、キーボードショートカット(⌘K ⌘S)を開いて、マッピングをおこなうことで意図した挙動を設定することができますが・・・
特殊なことをすると端末を変えた際の再現性が低いので、emacsバインドの拡張機能(Awesome Emacs Keymap)を導入することで(上述の「Shift + C-f」はそもそも本家emacsのバインドではなかったので再現できなかったのですが)解決しました。
数あるemacsバインドの拡張機能の中からAwesome Emacs Keymapを選んだ理由については、別の記事として投稿する予定です。
みなさんもぜひemacsバインド使ってみてください。