【VSCode】Ctrl-mで決定する

2022-05-29

以前VSCodeで改行の入力にCtrl-mを使えるように設定したが、クイックオープンなどで効かないのでまだ不便だった。 なのでショートカットキーの設定を追加する。

クイックオープン

Cmd-p でプロジェクト内のファイルを選択して開く際の決定を割り付けるには、keybindings.json に以下を追加する:

{
...
{
"key": "ctrl-m",
"command": "workbench.action.acceptSelectedQuickOpenItem",
"when": "inQuickOpen"
}

Shift-Cmd-p でのコマンドパレットや、Ctrl-g の行ジャンプなどにも反映される。

エクスプローラ

Shift-Cmd-e でエクスプローラにフォーカスがある状態で Ctrl-m でカーソル位置のファイルを開くには、同様に

{
...
{
"key": "ctrl+m",
"command": "list.select",
"when": "explorerViewletFocus"
}
  • 上記の設定をせずとも、スペースキーで決定できる
    • スペースキーだと一時的な状態で開くのと、フォーカスがエクスプローラのまま、という違いがある

検索ボックス

Cmd-f のエディタ内検索や Cmd-Option-f のエディタ内置換で使えるようにする:

{
...
{
"key": "ctrl+m",
"command": "editor.action.nextMatchFindAction",
"when": "findInputFocussed"
},
{
"key": "ctrl+m",
"command": "editor.action.replaceOne",
"when": "replaceInputFocussed"
}
  • 置換時、検索ボックスだったら置換せずに次の候補に、置換ボックスだったら現在の候補を置換して次に、となっている

コンテキストの調べ方

when に使える条件をどうやって調べたらいいか。

when clause contexts | Visual Studio Code Extension API に少し書かれているが、すべてはない。 同ページ下の Inspect Context Keys utility に調べ方が書かれている:

  • コマンドパレットから「Developer: Inspect Context Keys」を選ぶとコンソールに出力される
  • コンソールはメニューの Help > Toggle Developer Tools

項目多すぎて、また何がどの項目なのかさっぱりわからん…

締め

個別にコンテキストとコマンドを指定していく必要があるのが辛い。 Ctrl-m 入力が Enter キー入力と同じという扱いにしてくれればいいんだけど…。