VSCodeにVim拡張機能をインストールしていると、エクスプローラーにフォーカスが当たっている場合のショートカットキーが変わります。 ショートカットキー 操作 キー 上へ移動 k 下へ移動 j ツリ…
VSCode Vimでマルチカーソルの使い方について説明したいと思います。
VSCodeが元々持つマルチカーソルと合わせて使うことで、より便利に編集することが出来ます!
Vim標準のマルチカーソルはg -> b
Normalモードでg -> bと順番に入力することで、
カーソル位置の単語と同じ文字列に対してマルチカーソルを追加できます。
選択時はVisualモードになっています。
vキーを押すことで、マルチカーソルを維持したままNormalモードへ移行できます。
以下のようにsettings.jsonに設定を追加すると、g -> bと続けてキーを押さなくても
Ctrl+nでマルチカーソルを追加していけるので便利です。
結構な数のマルチカーソルを追加する場合は圧倒的に楽なので、ぜひ設定してください。
"vim.normalModeKeyBindingsNonRecursive": [
// カーソル位置の単語をマルチカーソルで選択
{ "before": [ "<C-n>" ], "after": [ "g", "b" ] },
]
マルチカーソル状態から編集する
マルチカーソルを追加し、vキーを押してNormalモードへ移行したら、あとは通常のVim操作と変わりません。
Vim特有の強力なカーソル移動やテキストオブジェクトの編集がそのまま使えるので、一括で編集していきましょう。
マルチカーソル状態からコピー&ペースト
マルチカーソルで複数選択している状態でヤンクすると、各カーソルごとにバッファが用意され、
ペーストするとマルチカーソルごとにペーストできます。
例
編集前
string test1 = "";
string test2 = "";
string test3 = "";
編集後
string test1 = "test1";
string test2 = "test2";
string test3 = "test3";
矩形選択で同じ列に対して入力する
マルチカーソルではありあせんが、Ctrl+vを押すことでVisualブロックモード(矩形選択)が利用できます。
先のg -> bから使用するマルチカーソルでは、同じ単語でなければマルチカーソルに出来ませんが、
矩形選択では同じ列に対して文字列を挿入できます。
例
編集前
"AAA";
"BBB";
"CCC";
編集後
"・AAA";
"・BBB";
"・CCC";
ただし、マルチカーソルではないのでNormalモードへ移行することは出来ません。
あくまで同じ列に対して同じ文字列を挿入したり、Visualモードから出来る操作に限定されます。
そのため、カーソルごとにヤンク・ペーストすることはできません。
VSCodeのマルチカーソルを併用する
VSCodeのマルチカーソルは矩形選択のようにカーソルから上下にマルチカーソルを追加できます。
Windowsの場合はCtrl+Alt+Up (Down)で同じ列に対してマルチカーソルで選択できます。
さらに、マルチカーソルがセットされたあとはVSCode Vimのマルチカーソルと同様に操作できるので、
同列で選択し、各カーソル単位で移動した後にヤンク・ペーストをすることも可能です。
例
編集前
"ABC";
"EFG";
"HIJ";
編集後
"ABCABC";
"EFGEFG";
"HIJHIJ";
注意点
VSCode Vimのマルチカーソルでは、各カーソルでバッファを持ってヤンクできますが、期待通りに動くのはNormalモードに限られます。
マルチカーソル状態のNormalモードでヤンクした後、Insertモードに移行してCtrl+0でペーストすると、
全てのカーソルでヤンクした内容が各カーソルにペーストされます。
ペーストする場合は、そのままNormalモードで行う必要があります。
コメントを書く