Windowsで「^[[200~
」のような文字列が付加されてしまう問題は、通常、ターミナルエミュレータの設定またはクリップボードの内容をペーストする際に問題が発生することが原因です。具体的には、以下の要因が考えられます。
原因
- Bracketed Paste モードの影響
- 「
^[[200~
」は「Bracketed Paste(ブラケット付きペースト)」モードに関連するシーケンスです。このモードは、ターミナルにおいてペーストされた内容が明確に分かるようにするためのもので、コピー&ペーストの開始と終了を示す制御文字を自動で挿入します。 - これは通常、LinuxやUnix系のシェル(例えば、
bash
やzsh
)で有効になっており、特にエディタやターミナルエミュレータによってはこの機能が自動で利用されることがあります。
- ターミナルエミュレータやコマンドプロンプトの設定
- Windows環境で使われているターミナルエミュレータ(例えば、
PowerShell
、cmd
、Windows Terminal
など)によっては、コピー・ペーストの扱いが異なり、その際にエスケープシーケンスが意図せず含まれることがあります。 - 例えば、ペーストを行う際に特定のキーコンビネーションが反応してしまうことで、このような余計な文字列が付加される場合があります。
- クリップボードの内容が不正な形式でコピーされている
- コピーしたときに、余計な制御文字やエスケープシーケンスがクリップボードに含まれていることも考えられます。
- これは、コピー元のアプリケーションやエディタの状態によって発生することがあります。
解決策
- Bracketed Paste モードの無効化
bash
やzsh
などの設定ファイル(例えば.bashrc
や.zshrc
)で「Bracketed Paste」を無効化することができます。次のような行を設定ファイルに追加してから、シェルを再起動してください。bash bind 'set enable-bracketed-paste off'
- これによって、ペースト時に「
^[[200~
」のような制御文字が付かなくなる場合があります。
- 別のターミナルエミュレータの使用
- Windows Terminal、Git Bash、またはWSL(Windows Subsystem for Linux)などのターミナルエミュレータを使用すると、この問題が解消されることがあります。これらのターミナルエミュレータはLinux環境により近い動作をするため、Windowsの
cmd
やPowerShell
での互換性の問題が回避されます。
- クリップボードの内容を確認・修正
- クリップボードにコピーされた内容をテキストエディタ(例えば、メモ帳)に一度貼り付けて、不要な文字列が含まれていないことを確認してから、再度コピーしてターミナルにペーストするのも一つの解決策です。
- ターミナルの設定変更
- 使用しているターミナルの設定(特に「Bracketed Paste」関連の設定)を確認し、それを無効化することでこの問題を回避できることがあります。
Windows環境で発生するこれらのシーケンスは、特にbash
やUnix系シェルをWindows上で使っている場合に発生しやすいため、上記の対応を試してみてください。それでも解決しない場合は、使っているターミナルエミュレータの種類と設定をもう一度見直してみることをおすすめします。