Skip to main content

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 を押してしまうが、これ以上 変な癖をつけるのも良くないので、いったん登録しないでおく