Linux-终端该如何粘贴内容
复制粘贴后为什么会出现 ^[[200~ … ~?
在用终端(Terminal)复制粘贴一段 GitHub 地址时,遇到了一个奇怪的现象:
1  | ^[[200~https://github.com/microsoft/markitdown.git~  | 
好好的链接前后突然多了 ^[[200~ 和 ~。这到底是什么?会不会把命令弄坏?本文用最通俗的语言把原因、影响以及避免方法一次讲清。
1 现象还原
| 步骤 | 我的操作 | 
|---|---|
| ① | 在网页上复制了地址 https://github.com/microsoft/markitdown.git | 
| ② | 回到终端,先按了 Ctrl+V | 
| ③ | 发现没反应,又右键选择 Paste | 
| ④ | 终端里出现 ^[[200~https://github.com/microsoft/markitdown.git~ | 
2 罪魁祸首:终端的“括号粘贴模式”
现代终端(Linux 的 gnome-terminal、macOS 的 iTerm2、Windows 的 Windows Terminal、VS Code 的内置终端等)都支持一项叫 Bracketed Paste(括号粘贴) 的功能。
- 目的:让 shell 或编辑器知道“这是一整块粘贴”,防止粘贴内容被意外解释成命令。
 - 做法:在真正文本前后插入两串看不见的转义字符  
- 开头:
ESC[200~(终端里显示成^[[200~) - 结尾:
ESC[201~(有时只显示成单独的~) 
 - 开头:
 
所以:
1  | ^[[200~https://github.com/microsoft/markitdown.git~  | 
其实就是:
1  | ESC[200~ 真正内容 ESC[201~  | 
3 触发条件
- 你先按了 
Ctrl+V
在很多终端里,Ctrl+V不是“粘贴”,而是告诉终端“我要开始一次带括号的粘贴”。 - 紧接着又点了右键 → Paste
终端收到两次“粘贴”信号,于是把转义字符也一起输出了。 
4 如何避免
| 目标 | 正确姿势 | 
|---|---|
| 只想粘贴 | **别按 Ctrl+V**,直接右键 Paste 即可 | 
| 想彻底关闭该功能 | 在对应 shell 里执行一条命令: Bash/Zsh: bind 'set enable-bracketed-paste off'Fish: set -g fish_paste_bracketed off | 
| 已经粘进来了 | 手动删掉 ^[[200~ 和末尾的 ~,再回车即可,不会影响命令本身 | 
5 一句话总结
终端为了“安全粘贴”自动加了
^[[200~ … ~,不是链接坏了,删掉即可;下次直接右键 Paste,别再按Ctrl+V,就能彻底告别这串奇怪字符。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 念念不忘,必有回响!




