Windows Terminalでvimの矩形ビジュアルモードにできないときの対処法

先日Windows Terminalをインストールし、vimでhtmlファイルの編集中に矩形ビジュアルモードに変更しようとしたら、なぜかクリップボードの内容がペーストされ、挿入モードになり困惑しました。

windows terminalの設定ファイルを適切に設定することで、この問題を解決することが出来ました。

この記事ではWindows Terminalでvimを使った時に、ctrl+vで矩形ビジュアルモードにするための方法を解説します。

起きた問題

Windows TerminalでPower Shellを開き、vimでhtmlファイルを編集してました。liタグをまとめて編集するために、ctrl+vで矩形ビジュアルモードにスイッチしようとすると、クリップボードの内容が挿入され、インサートモードになるという予想外の動作をしました。

Windows Terminalを使わずにvimで編集した時はctrl+vで矩形ビジュアルモードにスイッチできていたので、おそらくWindows Terminalの設定の問題かなと思いました。

対処法

Windows Terminal上で開いたvimでctrl+vで矩形ビジュアルモードにスイッチするにはWindows Terminalの設定ファイルであるsettings.jsonを編集しキーバインドの設定を変更する必要があることがわかりました。

settings.jsonはWindows Terminalの追加設定をするための設定ファイルです。キーバインドの設定やカラースキームの設定などいろいろな設定をすることが出来ます。

settings.jsonは下画像のプルダウンメニューからsettingsをクリックし、左下の歯車のアイコンをクリックすることで開くことが出来ます。

settings.jsonの20行目あたりに下のコードがあります。

{
    "command": "paste"、
    "keys": "ctrl+v"
}

その下に以下の行を追記することでctrl+vのキーバインドを無効化することが出来ます。

{
    "command": "null"、
    "keys": "ctrl+v"
}

変更後のソースコードは次のようになります。(写真にはダブルクォテーションが写っていないだけです。)

{
    "command": "paste"、
    "keys": "ctrl+v"
}、
{
    "command": "null"、
    "keys": "ctrl+v"
}

ちなみに、ctrc+vでペースが出来なくてなってもctrl+shift+vでペーストできる場合があります。

左下の歯車をクリックしてsettings.jsonを開くときに、altキーを押しながらクリックするとdefaults.jsonというWindows Terminalの設定ファイルが開きます。そこにctrl+shfit+vでペーストするという設定がある場合には、ctrl+shift+vでペーストが出来ます。

もしなくても、settings.jsonもしくはdefaults.jsonにその設定、もしくは自分の好みのキーバインドを設定すればペーストを行うことが可能です。ctrl+shift+vでペースト行う設定を書き足す場合はこのようになります。

{
  "command": "paste"、
  "keys": "ctrl+shfit+v"
}

まとめ

  • 原因はWindows Terminalのキーバインドとvimのキーバインドがかぶっていたこと
  • 対処法は、settings.jsonでWindows Terminalのキーバインドを無効化すること