在将内容粘贴到我的iterm2终端时出现奇怪的字符

147

我正在使用Mac Sierra上的iterm2 v 3.0.15。 我在从其他地方(例如网页上的文本)复制和粘贴时遇到了麻烦。例如,我从网页中突出显示一些文本,按Command + C,然后转到终端,再按Command + V,会出现以下情况:

localhost:myproject nataliab$ 00~on the next01~

注意我文本前后的“00~”和“01~”。当我将其复制粘贴到文本编辑器或其他地方时,我看不到这些字符。如何消除这些特殊字符在我将其复制粘贴到iterm2终端时出现的情况?
12个回答

227
在终端窗口中输入reset,然后按回车键。现在,尝试将内容粘贴到终端中,应该可以正常工作。

24
这是简单而又有力的答案。顺便提一下,在iTerm2中,“⌘+R”是重置命令的快捷键,所以只需按“⌘+R”即可。 - kangbu
17
这个解决方案确实有帮助,但是您知道是什么原因导致了这个问题吗? - Vivek
3
我可以确认这个有效,但是为什么? - Player1
1
也很好奇为什么这个有效,但它确实有效!谢谢。 - Jessica
1
@amacleod 就算是我也遇到了这个问题,终端上显示了一个横幅消息,大概意思是“意外退出导致粘贴括号功能开启。您想关闭它吗?” 我选择了是,问题就解决了。我相信使用“reset”命令也能达到同样的效果,恢复稳定性。 - SrinR
显示剩余2条评论

63

要永久关闭括号粘贴模式,请打开首选项,搜索 "bracketing" ,取消勾选 "Terminal may enable paste bracketing"


14
这在“偏好设置 > 配置文件 > 终端 > [x] '终端可以启用粘贴括号'”下。 - Ben
3
太棒了。由于我无法预见将来需要使用括号粘贴的情况,我喜欢这个永久解决方案。谢谢。 - inspirednz
12
这个功能太糟糕了,默认开启有谁会想要呢? - Ian Smith
1
这应该是被接受的答案。任何人都不应该使用那个“功能”。 - Ecuador

58

我的解决方案:

printf'\e[?2004l'复制并粘贴到iTerm2终端,然后按下enter键即可。


1
这种东西是否可以以某种方式添加到 PS1 中,以确保始终处于括号粘贴模式? - jdotjdot
17
你能解释这个到底是干什么的,以及它为什么可以解决问题吗?帮助人们理解问题对于学习至关重要,仅仅给出答案虽然可以短期内解决问题,但并不能提高提问者的理解。 - Bryson
5
没错,这种方法可以解决问题,但有趣的是它无法粘贴到Mac的终端中,你必须手动输入。我很惊讶在2019年标准的键盘输入在Mac上不能用。 - Paul Lammertsma
在将此内容粘贴到iTerm中后,不要忘记手动删除开头的00〜和结尾的01〜 :) - Bakul G
11
此命令禁用“方括号粘贴模式”。参见说明。参见其他答案 - Carl G
显示剩余2条评论

14

我认为这是一个括号粘贴问题。

  1. 编辑 -> 粘贴特殊内容 -> 高级粘贴

  2. 取消勾选“括号粘贴模式”

  3. 重新启动终端


这就是实际的解决方案。 - Addo Solutions
确实,这对我也起作用了。我在想如何启用这个选项。有没有快捷键可以使用呢? - Francis Martens
截至2023年,这不是解决方案,因为用户界面似乎已经改变了。Jianwu Chen的答案是正确的。 - ankush981

13

我也遇到了同样的问题,但是不知道为什么出现这个问题,不过使用Command + Q关闭 iTerm2 并重新打开可以解决这个问题。


3
那是一把很大的锤子。你可以用“printf '\e[?2004h'”修复它。 - dbenhur
2
@dbenhur,你的评论也是一个大锤子。在哪里放置你建议的命令? - whiletrue
2
@Fábio,...嗯?“大锤”在口语中意味着你使用过多的力量来修复某些东西(可能同时会破坏其他东西)。我不明白这如何适用于dbenhur的评论,他的评论更加专注和细致。 - Charles Duffy

7

最近我在iterm2中也遇到了这种情况。杀死并重新启动会话可以解决问题,但会失去上下文。我发现这篇关于括号粘贴模式的评论,并尝试使用printf '\e[?2004h'退出括号粘贴模式并修复终端,对我很有效。


7

$ printf '\e[?2004l'

00~printf '\e[?2004l'01~


3

2

我不能保证这个修复的条件,因为我已经尝试了上述解决方案一段时间,但对我来说解决问题的方法是:

iTerm2 → 首选项 → 键 → 双击编辑 ⌘v 的目标 → 在 Speed 下,将 Chuck Size 设置为256B,将 Interchunck delay 设置为100ms。

“Original Answer”翻译成“最初的回答”


1
这对我有用。我将iTerm2 -> 首选项 -> 高级/剪贴板 ->“正常粘贴时每个块要粘贴的字节数”设置为256(安装了iterm2 v. 3.3.9的新版本将该值设置为667)。我将“...在缓慢粘贴时”值从16提高到64。我没有禁用括号粘贴模式(没有出现00、01附加问题)。我的原始问题是从vsCode复制到运行python 3的iTerm2(在OSX 10.15.4上)会包含奇怪的部分和多个重复的粘贴块。无论如何,这似乎已经解决了。如果该行为返回,我会更新的。谢谢! - Connor Dibble

1
我不得不执行shell-->硬重置才能立即使其工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接