Bracketed Paste モードの無効化

Windowsで「^[[200~」のような文字列が付加されてしまう問題は、通常、ターミナルエミュレータの設定またはクリップボードの内容をペーストする際に問題が発生することが原因です。具体的には、以下の要因が考えられます。

原因

  1. Bracketed Paste モードの影響
  • ^[[200~」は「Bracketed Paste(ブラケット付きペースト)」モードに関連するシーケンスです。このモードは、ターミナルにおいてペーストされた内容が明確に分かるようにするためのもので、コピー&ペーストの開始と終了を示す制御文字を自動で挿入します。
  • これは通常、LinuxやUnix系のシェル(例えば、bashzsh)で有効になっており、特にエディタやターミナルエミュレータによってはこの機能が自動で利用されることがあります。
  1. ターミナルエミュレータやコマンドプロンプトの設定
  • Windows環境で使われているターミナルエミュレータ(例えば、PowerShellcmdWindows Terminalなど)によっては、コピー・ペーストの扱いが異なり、その際にエスケープシーケンスが意図せず含まれることがあります。
  • 例えば、ペーストを行う際に特定のキーコンビネーションが反応してしまうことで、このような余計な文字列が付加される場合があります。
  1. クリップボードの内容が不正な形式でコピーされている
  • コピーしたときに、余計な制御文字やエスケープシーケンスがクリップボードに含まれていることも考えられます。
  • これは、コピー元のアプリケーションやエディタの状態によって発生することがあります。

解決策

  1. Bracketed Paste モードの無効化
  • bashzshなどの設定ファイル(例えば.bashrc.zshrc)で「Bracketed Paste」を無効化することができます。次のような行を設定ファイルに追加してから、シェルを再起動してください。
    bash bind 'set enable-bracketed-paste off'
  • これによって、ペースト時に「^[[200~」のような制御文字が付かなくなる場合があります。
  1. 別のターミナルエミュレータの使用
  • Windows Terminal、Git Bash、またはWSL(Windows Subsystem for Linux)などのターミナルエミュレータを使用すると、この問題が解消されることがあります。これらのターミナルエミュレータはLinux環境により近い動作をするため、WindowsのcmdPowerShellでの互換性の問題が回避されます。
  1. クリップボードの内容を確認・修正
  • クリップボードにコピーされた内容をテキストエディタ(例えば、メモ帳)に一度貼り付けて、不要な文字列が含まれていないことを確認してから、再度コピーしてターミナルにペーストするのも一つの解決策です。
  1. ターミナルの設定変更
  • 使用しているターミナルの設定(特に「Bracketed Paste」関連の設定)を確認し、それを無効化することでこの問題を回避できることがあります。

Windows環境で発生するこれらのシーケンスは、特にbashやUnix系シェルをWindows上で使っている場合に発生しやすいため、上記の対応を試してみてください。それでも解決しない場合は、使っているターミナルエミュレータの種類と設定をもう一度見直してみることをおすすめします。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です