有时,当我将文本从剪贴板粘贴到终端时,生成的文本前面会添加以下字符“^[[200~”。
我该如何预防?
答案1
在终端中输入Ctrl+V不会像您预期的那样粘贴。默认情况下,使用雷德莱恩库(例如bash
)在收到该字符时将按字面意思处理下一个字符,而不是将其视为控制代码。
您需要输入Ctrl+ Shift+V才能粘贴文本。这由终端本身处理,并且只有粘贴的文本才能被雷德莱恩。
或者,至少曾经是这样的。
如果程序告诉终端它们理解它们,就像雷德莱恩从 Ubuntu 20.04 开始默认这样做,此文本将被终端换行粘贴括号、控制代码^[[200~
和^[[201~
。
猜猜 当您意识到自己的错误时,如果您立即输入Ctrl+V然后再输入Ctrl+ Shift+,会发生什么情况。V
是的,打开的粘贴括号^[[200~
将被粘贴为文本,而不是被解释为控制代码。
解决这个问题的一个方法是告诉雷德莱恩忽略Ctrl+ V。为此,请将以下内容添加到您的~/.inputrc
文件中(如有必要,请创建它):
"\C-v": ""
这将覆盖默认绑定:
"\C-v": quoted-insert
如果您出于某种原因需要它们,则键Insert和Ctrl+Q仍然有效。quoted-insert
或者,如果你现在正在考虑“括号粘贴有什么用?”,你可以改为禁用它雷德莱恩通过添加到您的~/.inputrc
:
set enable-bracketed-paste off
但讽刺的是,括号内粘贴告诉程序按字面意思处理粘贴的文本,而不是将其解释为键盘输入。您可能会喜欢或不喜欢这一点。
例如,这使您可以在bash
执行多个粘贴的行之前对其进行编辑,因为只有键盘上的换行符才会导致代码的执行。