メモ。
Vim には対応する括弧にカーソルを移動する %
キーがあるが、
matchit.vim というプラグインを使うと、html の場合に <
から >
までではなく
対応するタグ ( <body> ~ </body>
) にジャンプできる。
VSCode にも Vim エクステンション を入れて使っているが、これと同じ操作ができないか調べてみた。
まさにこれでした。
どうやら、 editor.emmet.action.matchTag
というコマンドが標準でサポートされており、これにショートカットキーを割り当てればよさそう。
ただ、問題点が1つ。
これをこのまま設定してしまうと、html 以外のファイルを開いているときに %
で対応する括弧を移動するショートカットが効かなくなってしまう。
stack overflow だとバッティングを避けるために Cmd+% (Cmd+Shift+5)
に割り当ててるみたいだけど、できれば元の Vim と同じように操作したい。
VSCode でショートカットキーを設定する際、 when
というオプションがあるが、これで特定の拡張子のときだけ有効になるように制御できないものか。
と思い調べてみるとちゃんとあった。
How can I add a key binding for only certain file types?
Use theeditorLangId
context key in yourwhen
clause:
{ "key": "shift+alt+a", "command": "editor.action.blockComment", "when": "editorTextFocus && editorLangId == csharp" },
指定可能な editorLangId
のリストは
https://code.visualstudio.com/docs/languages/identifiers
にある。
というわけで、html ファイルを編集中のみ %
を対応するタグの移動に割り当てるには、 keybindings.json
に以下のように書けばいい。
{ "key": "shift+5", "command": "editor.emmet.action.matchTag", "when": "editorLangId == html" }
残念なところ
1個だけどうにもならなかった点があって。
Vim だと、 %
と Visual Mode を組み合わせて
Shift+v
で開始タグがある行を選択- そのまま
%
を押し、閉じタグまでを選択 d
でまるっと削除
とかができたんだけど、VSCode ではできなかった。諦める。