Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
10
Help us understand the problem. What is going on with this article?

More than 3 years have passed since last update.

@morizotter

Visual StudioCodeにMacのEmacs風キーバインディングを追加する

右手の小指を守る

最近、Windowsを久しぶりに購入したので、Windowsでのプログラミングに慣れようとしています。 CtrlCaps Lock を入れ替えたり、開発環境を整えたりしてだいぶ使えるようになってきたのですが、カーソルの移動だけは未解決でした。Macで使えた Ctrl+aCtrl+p などの移動系のキーバインディングが使えないので、矢印キーに頻繁に指を動かすことで 小指がツリそうになっています

OSレベルだと AutoHotKeyなどでいろいろ自由に変えられるらしいのですが、すごく面倒だったので、とりあえずはVisual Studio Code だけでできればなと思っています。

方針

  • 右手の小指を守ることが目的であってemacsキーバインディングを使えるようにすることが目的ではない。
  • MacのEmacsキーバインディングでカーソル移動周りのよく使うものだけ変更する。それ以外はMicrosoftの世界にゆだねる。

編集

キー 動作 コンフリクト 既存キー変更
ctrl+p 上に移動 workbench.action.quickOpenNavigateNext, workbench.action.quickOpen ctrl+alt+p
ctrl+n 下に移動 workbench.action.files.newUntitledFile ctrl+alt+n
ctrl+f 右に移動 defaultSettings.action.focusSearch, actions.find ctrl+alt+f
ctrl+b 左に移動 workbench.action.toggleSidebarVisibility ctrl+alt+b
ctrl+a 行頭に移動 editor.action.selectAll ctrl+alt+a
ctrl+e 行末に移動 workbench.action.quickOpen, workbench.action.quickOpenNavigateNext ctrl+alt+e
ctrl+k ctrl+k 行末まで削除 editor.action.defineKeybinding なし

ctrl+k はVisual Studio Codeでは複数キーの組み合わせの最初の一つとして使われているので、そのまま上書きはしずらかったので、ちょっと工夫して2回押すことで表現しました。この組み合わせによって上書きされてしまう editor.action.defineKeybinding はあまり使うことはないかなぁと思って代替えキーを用意していません。

とりあえず既存キーは alt をつけること退避したけれど、よく使うものに関してはほかの手段を用意してもよいかもしれない。

keybindings.json
[
    {
        "key": "ctrl+p",
        "command": "cursorUp",
        "when": "editorTextFocus"
    },
    {
        "key": "ctrl+alt+p",
        "command": "workbench.action.quickOpenNavigateNext",
        "when": "inQuickOpen"
    },
    {
        "key": "ctrl+alt+p",
        "command": "workbench.action.quickOpen"
    },
    {
        "key": "ctrl+n",
        "command": "cursorDown",
        "when": "editorTextFocus"
    },
    {
        "key": "ctrl+alt+n",
        "command": "workbench.action.files.newUntitledFile"
    },
    {
        "key": "ctrl+f",
        "command": "cursorRight",
        "when": "editorTextFocus"
    },
    {
        "key": "ctrl+alt+f",
        "command": "defaultSettings.action.focusSearch",
        "when": "defaultSettingsEditor"
    },
    {
        "key": "ctrl+alt+f",
        "command": "actions.find"
    },
    {
        "key": "ctrl+b",
        "command": "cursorLeft",
        "when": "editorTextFocus"
    },
    {
        "key": "ctrl+alt+b",
        "command": "workbench.action.toggleSidebarVisibility"
    },
    {
        "key": "ctrl+a",
        "command": "cursorHome",
        "when": "editorTextFocus"
    },
    {
        "key": "ctrl+alt+a",
        "command": "editor.action.selectAll"
    },
    {
        "key": "ctrl+e",
        "command": "cursorEnd",
        "when": "editorTextFocus"
    },
    {
        "key": "ctrl+alt+e",
        "command": "workbench.action.quickOpenNavigateNext",
        "when": "inQuickOpen"
    },
    {
        "key": "ctrl+alt+e",
        "command": "workbench.action.quickOpen"
    },
    {
        "key": "ctrl+k ctrl+k",
        "command": "deleteAllRight",
        "when": "editorTextFocus"
    }
]

使い方

image

使い方は簡単で、File > Preferences > Keyboard Shortcuts を開くと、デフォルトのショートカットキーとユーザーが上書きできる、 keybindings.json が開くので、こちらに上記のjsonを貼り付けるだけです。

拡張機能

などがよくつかわれているようです。二つ試した感じでは、一つ目のEmacs Keymapが結構よいのかなと思いました。ただ、僕はそこまでemacsを使いこなしているわけではないので、Macで使える基本的なものがあればよいと思っています。

また、これでEmacsのキーバインドに慣れてしまうと、Windowsの癖が身につかないと思い、アンインストールしました。

参考

Windowsと右手の小指について

Windows10は想像以上に使いやすく、ちゃんとWindowsのためによく使うショートカットなどは覚えようと思っています。ただ、カーソル移動をホームポジションからできないとプログラミングするときに小指を矢印まで毎回伸ばすことになるのでつらいなぁと思っていました。そこで、今回、最小限のキーバインディングを設定してみました。

10
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
10
Help us understand the problem. What is going on with this article?