当我在终端中粘贴时,有时内容会以字符“^[[200~”作为前缀

当我在终端中粘贴时,有时内容会以字符“^[[200~”作为前缀

有时,当我将文本从剪贴板粘贴到终端时,生成的文本前面会添加以下字符“^[[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

如果您出于某种原因需要它们,则键InsertCtrl+Q仍然有效。quoted-insert


或者,如果你现在正在考虑“括号粘贴有什么用?”,你可以改为禁用它雷德莱恩通过添加到您的~/.inputrc

set enable-bracketed-paste off

但讽刺的是,括号内粘贴告诉程序按字面意思处理粘贴的文本,而不是将其解释为键盘输入。您可能会喜欢或不喜欢这一点。

例如,这使您可以在bash执行多个粘贴的行之前对其进行编辑,因为只有键盘上的换行符才会导致代码的执行。

相关内容