Windows でも Emacs 風のカーソル移動
方針
やりたいこと
- Windows でも Ctrl + N, B, F, P, A, E, K を Emacs 風の 矢印キー操作をしたい
妥協/回避すること
- Ctrl + K については、既存動作を上書きせず、仕方ないので Ctrl + K, K とする
- Ctrl + F, P, A, H のデフォルト動作が使えなくなるのは困るので、 Alt + F, P, A, H に置き換える
できないので割り切ること
- Terminal での Emacs 風動作は諦める
- スクリプトでのファイル操作をあまりしないなら困らないか
上書きされるデフォルト動作(Windows)
キー | デフォルトの意味 | 代替 | 備考 |
---|---|---|---|
Ctrl + N | 新しいファイルを作成 | workbench.action.files.newUntitledFile | |
Ctrl + B | サイドバーの表示/非表示 | toggleSidebarVisibility | |
Ctrl + F | 検索 (ファイル内検索) | ✅ | actions.find |
Ctrl + P | クイックオープン (ファイル検索) | ✅ | workbench.action.quickOpen |
Ctrl + A | 全選択 (行頭移動はない) | ✅ | editor.action.selectAll |
Ctrl + E | 最近使ったファイル一覧を開く (Windows版) | workbench.action.openRecent | |
Ctrl + K | プレフィックス (複合キー用) | 上書きせず Ctrl + K, K に変更 | |
Ctrl + D | 選択中の次の出現箇所も選択 (multi-cursor) | editor.action.addSelectionToNextFindMatch | |
Ctrl + H | 検索と置換パネルを開く | ✅ | editor.action.startFindReplaceAction |
keybindings.json 設定
keybindings.json
[
// Emacs 風カーソル移動
{
"key": "ctrl+n",
"command": "cursorDown",
"when": "editorTextFocus"
},
{
"key": "ctrl+p",
"command": "cursorUp",
"when": "editorTextFocus"
},
{
"key": "ctrl+b",
"command": "cursorLeft",
"when": "editorTextFocus"
},
{
"key": "ctrl+f",
"command": "cursorRight",
"when": "editorTextFocus"
},
{
"key": "ctrl+a",
"command": "cursorHome",
"when": "editorTextFocus"
},
{
"key": "ctrl+e",
"command": "cursorEnd",
"when": "editorTextFocus"
},
{
"key": "ctrl+k ctrl+k",
"command": "deleteAllRight",
"when": "editorTextFocus"
},
{
"key": "ctrl+d",
"command": "deleteRight",
"when": "editorTextFocus"
},
{
"key": "ctrl+h",
"command": "deleteLeft",
"when": "editorTextFocus"
},
// Emacs 風カーソル移動で無効になったキーの代替
{
"key": "alt+f",
"command": "actions.find"
},
{
"key": "alt+p",
"command": "workbench.action.quickOpen"
},
{
"key": "alt+a",
"command": "editor.action.selectAll"
},
{
"key": "alt+h",
"command": "editor.action.startFindReplaceAction"
},
]
補足
- Alt + F, P を登録したせいか、Cmd 系の手癖で、Alt + S, V を押してしまうが、これ以上 変な癖をつけるのも良くないので、いったん登録しないでおく