VSCode Vim マルチカーソルを使いこなそう!

VSCode Vim マルチカーソルを使いこなそう!

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モードで行う必要があります。

Vimカテゴリの最新記事