Linux 如何禁用“中的奇怪字符?”;括号内的粘贴模式“;在Mac OS X默认终端上?
我的终端遇到了一个问题,当我粘贴文本时,它的前缀是Linux 如何禁用“中的奇怪字符?”;括号内的粘贴模式“;在Mac OS X默认终端上?,linux,macos,Linux,Macos,我的终端遇到了一个问题,当我粘贴文本时,它的前缀是00~,后缀是01~ 例如,我将突出显示文本并按下Command-C。然后我将Command-V推入终端,我看到那些奇怪的字符在文本的开头和结尾弹出 例如,我可以突出显示文本,并将其粘贴到终端中。然后我看到00~text01~ 文本可以来自任何地方,甚至来自终端本身。我没有安装任何复制/粘贴插件,这只是正常的复制/粘贴。我使用默认的Mac终端,没有任何修改 我在网上做了一些搜索,很明显,粘贴将文本包装成特殊字符,以便某些应用程序可以看到这是粘贴的
00~
,后缀是01~
例如,我将突出显示文本并按下Command-C
。然后我将Command-V
推入终端,我看到那些奇怪的字符在文本的开头和结尾弹出
例如,我可以突出显示文本
,并将其粘贴到终端中。然后我看到00~text01~
文本可以来自任何地方,甚至来自终端本身。我没有安装任何复制/粘贴插件,这只是正常的复制/粘贴。我使用默认的Mac终端,没有任何修改
我在网上做了一些搜索,很明显,粘贴将文本包装成特殊字符,以便某些应用程序可以看到这是粘贴的文本,并正确处理它。但是,终端没有正确处理这个问题,因此没有删除奇怪的字符。显然,这种粘贴模式被称为“带括号的粘贴模式”
我发现了另一个问题,它给出了如何在linux机器上解决这个问题的解决方案,但是在尝试了这个解决方案之后,我仍然有同样的问题
有人能告诉我如何为终端禁用带括号的粘贴模式吗?或者告诉我摆脱这些烦人角色的正确方法?这可能不会直接适用于您的问题,但我发现这种症状可能是由我选择的编辑“mcedit”(午夜指挥官)引起的 为了缓解bug问题,我在.bashrc文件中添加了以下函数:
####vvv“function mcedit”是对~0/~1粘贴问题的修复
函数mcedit(){command mcedit$@;printf'\e[?2004l';}
然后是“source.bashrc”
现在,每当我执行“mcedit”时,它会在我关闭时自动添加“printf”\e[?2004l””以重置“括号内粘贴模式”
对我来说很有用,YMMV。粘贴文本时会发生什么
xterm
)从复制缓冲区接收未更改的字符序列。终端知道这是粘贴,而不是键盘输入
ESC[?2 0 0 4 h
-粘贴的数据用转义序列括起来:ESC[2 0 0~ESC[2 0 1~
前台程序接收这些“修饰过的”数据,由程序来处理。一个幼稚的程序将所有这些数据都视为用户输入,这就是您所看到的
关于带括号的糊料的详细讨论,请参见
补救措施
在您的案例中有两个问题:终端意外地以括号中的粘贴模式结束;接收程序(可能是shell)不处理它
- 一种解决方案是user83536:识别使终端处于该状态的程序,并通过包装器调用它,该包装器在程序结束后简单地再次关闭括号内的粘贴模式
- 该程序可能试图关闭括号内的粘贴模式,但失败。原因之一可能是它发送了错误的转义序列。请尝试将
环境变量设置为最能描述终端的值终端
- 尝试在有问题的应用程序中关闭括号内的粘贴。在vim中,有人会说。这会阻止vim将终端置于括号内粘贴模式,并且在会话中设置时,会将“结束括号内粘贴模式”发送到终端
- 拥抱括号内的粘贴。这似乎是个好主意。对于bash和其他使用
的程序,可以将readline
。对于vim,可以遵循以下建议设置为启用括号内的粘贴
pbcopy
命令| pbcopy来捕获输出。堆栈溢出是一个编程和开发问题的网站。这个问题似乎与主题无关,因为它与编程或开发无关。请参见帮助中心。也许或者会是一个更好的地方很抱歉!我已经习惯了直接去stackoverflow问我所有的问题。有没有办法移动问题?最好的解决方法是什么?根据post,打开括号粘贴模式的终端代码是\e[?2004h
,而不是\e[?2004l
\e>[?2004l
用于禁用此模式。@谢谢,似乎是对的。