Mac Os 在终端下复制粘贴字符串的时候,偶然多了一对 00~ 01~ 字符

Mac Os 在终端下复制粘贴字符串的时候,偶然多了一对 00~ 01~ 字符

bread
2024-12-14 / 0 评论 / 8 阅读 / 正在检测是否收录...

Mac Os 的终端有一个鲜为人知很少使用的功:是括号粘贴模式(bracketed paste mode)。当您处于括号粘贴模式并粘贴到终端时,内容将由序列 \e[200~ 和 \e[201~ 包裹。

例如,假设我从网站复制了字符串 echo 'hello'\n。当我粘贴到终端时,它会向正在运行的任何程序发送 \e[200~echo 'hello'\n\e[201~

这个功能可以让程序可以区分您手动输入的内容和您粘贴的内容。

为什么需要这个功能呢?例如,许多终端应用程序专门处理某些字符:特别是当您按下回车键时,它会发送一个换行符。大多数 shell 会在此时执行输入缓冲区的内容。这通常是您想要的,但也可能不是。同时,这意味着如果您粘贴到终端中的任何内容中有换行符,它们也会运行输入缓冲区的内容。

有时发现突然终端打开了括号粘贴模式,为什么终端会打开括号粘贴模式呢?其实大部分情况都不是我们主动开启的,是由个别软件在无意中将括号粘贴模式开启的。当开启了括号粘贴模式粘贴的字符串收尾会多了一对字符:00~ xxx 01~,一般情况下我们把括号粘贴模式关闭就可以了。

解决方案

只需在终端关闭括号粘贴模式即可:

printf "\e[?2004l"

那如果想主动开启括号粘贴模式该如何操作呢?也只需在终端开启括号粘贴模式即可:

printf "\e[?2004h"
0

评论

博主关闭了所有页面的评论