VSCode カーソル移動やテキスト選択に矢印キーを使わない方法

VSCode のショートカットキー(Mac

Vimプラグインを試していたが、毎回:を打つのが面倒だったりしてあまり手になじまなかったので、VSCode 流にすることにした。

デフォルトのショートカットキー

Visual Studio Code ショートカットキー MasOS用(PDF)

特に使えそうなものをピックアップ。

キー 動作 備考
cmd + L 現在の行を選択
cmd + C 現在の行をコピー cmd + V で貼り付け
cmd + X 現在の行を切り取り cmd + V で貼り付け
shift + cmd + K 現在の行を削除

単語単位でのカーソル移動や行を丸ごと移動させるなど、Vim っぽい(?)操作も可能。

キー 動作
option + ↓ 現在の行を下の行と入れ替え
option + ↑ 現在の行を上の行と入れ替え
shift + option + ↓ 現在の行を下にコピー
shift + option + ↑ 現在の行を上にコピー
option + cmd + ↓ 下の行にカーソル追加(矩形選択)
option + cmd + ↑ 上の行にカーソル追加(矩形選択)

ショートカットキーのカスタマイズ

拡張機能のショートカットキーを追加したりはしていたが、改めてチートシートを見ると思っていたよりたくさんのことがキーボードだけでできることがわかった。

cmd + K => cmd + Sでキーボードショートカット(KS)一覧が出せる。ここで変更もできる。

f:id:masuyama13:20200801143601p:plain

決定の意味の Enter キーまでショートカットに含まれてしまうなどうまくいかないときは、JSON ファイル(keybindings.json)を直接編集する方法もある。

f:id:masuyama13:20200801213006p:plain

またはcmd + shift + Pでコマンドパレット表示 => keyboardで検索。

f:id:masuyama13:20200801103345p:plain

ちなみに、押下するキーに対する機能の割り当てのことをキーバインドと言ったりするが、 VSCode ではショートカットキー(キーボードショートカット)と同じ意味で使われているようだ。

(参考)

矢印キーを P / N / B / F に変更

今矢印キーのないキーボード(HHKB)を使っているので、よく使いそうなものは矢印キーを使わなくてすむように変更することにした。

まず、Mac デフォルトでできることを確認。下の記事に書いてあるものは VSCode 上でも使える。

テキスト入力ショートカットキー(Mac) - No Solution for Life

キー 動作
control + P 上の行へカーソル移動
control + N 下の行へカーソル移動
control + B 左へカーソル移動
control + F 右へカーソル移動

ブログを書くときなどカーソル移動はいつも control + P/N/B/F を使っているので、PNBFに置き換えていった。

単語ごとの移動

Vim の好きなところの一つが、WBで単語間を素早く移動できるところだった。VSCode でもできた。cursorwordで検索すると、このようにたくさんのショートカットキーが設定されていることがわかる。

f:id:masuyama13:20200801110229p:plain

ただ、option + で右側の単語の末尾にカーソル移動するのに対して、option + では左側の単語のにカーソル移動するなど、若干クセがある。とりあえずcursorWordStartRight / cursorWordStartLeftに、option + F / Bを設定した。適宜カスタマイズしつつしばらく使ってみよう。

矢印キーの代わりにF / Bに変更すると、全体として以下のようになり覚えるのも楽だ。

キー 動作 備考
control + F 右へカーソル移動 Mac デフォルト
control + shift + F 右側のテキストを選択 カスタマイズ(下記参照)
option + control + F 右側の単語へカーソル移動 → を F に変更
option + shift + control + F 右側の単語までを選択 → を F に変更

テキスト選択のショートカットキー

これを書いていて気づいたが、テキスト選択も矢印キー(shift + 矢印キー)になっていたので変更。

キー 動作 備考
control + shift + P 上側のテキストを選択 ↑ を P に変更
control + shift + N 下側のテキストを選択 ↓ を N に変更
control + shift + B 左側のテキストを選択 ← を B に変更
control + shift + F 右側のテキストを選択 → を F に変更

このテキスト選択のショートカットキーは、ブラウザや Pages などではデフォルトで使えるが、VSCode ではshift + 矢印キーでショートカットキーが設定されているため上書きする必要がある。検索でまとめて出てこなくて若干面倒だったので一応 JSON 貼っときます。

keybindings.json(テキスト選択をshift + 矢印キー から control + shift + P/N/B/F に変更)

// Place your key bindings in this file to override the defaultsauto[]
[
  {
    "key": "ctrl+shift+f",
    "command": "cursorRightSelect",
    "when": "textInputFocus"
  },
  {
    "key": "shift+right",
    "command": "-cursorRightSelect",
    "when": "textInputFocus"
  },
  {
    "key": "ctrl+shift+b",
    "command": "cursorLeftSelect",
    "when": "textInputFocus"
  },
  {
    "key": "shift+left",
    "command": "-cursorLeftSelect",
    "when": "textInputFocus"
  },
  {
    "key": "ctrl+shift+n",
    "command": "cursorDownSelect",
    "when": "textInputFocus"
  },
  {
    "key": "shift+down",
    "command": "-cursorDownSelect",
    "when": "textInputFocus"
  },
  {
    "key": "ctrl+shift+p",
    "command": "cursorUpSelect",
    "when": "textInputFocus"
  },
  {
    "key": "shift+up",
    "command": "-cursorUpSelect",
    "when": "textInputFocus"
  }
]

キー割り当てがかぶったとき

VSCode には数多くのショートカットキーがあるため、すでに割り当てられるものとかぶることがある。キーボードショートカットの一覧(cmd + K => cmd + S)から登録するときは、同じキーのものがいくつあるか、どこにあるかすぐにわかるようになっている。

自分の場合はかぶったもの(すでに登録されているもの)があまり使っていないものだったら、そっちを適当に変更してかぶらないようにした。適当に変えてわからなくなっても、変更したものは keybindings.json を見ればわかるしいつでもデフォルトには戻せるので特に問題ない。