防止 bash 中的多行粘贴

防止 bash 中的多行粘贴

我经常使用ctrl+c鼠标右键单击菜单并粘贴从某些 GUI 应用程序复制文本,然后将其粘贴到我的终端模拟器(终结器)中。有时我忘记剪贴板包含几行,当粘贴到 bash 中时会导致每一行被“执行”

有没有一些解决方案可以完全防止多行粘贴?

答案1

Bash 现在提供enable-bracketed-paste选项:

启用括号粘贴
当设置为“打开”时,Readline 将以某种方式配置终端,使其能够将每个粘贴作为单个字符串插入到编辑缓冲区中,而不是将每个字符视为从键盘读取的字符。这可以防止粘贴的字符被解释为编辑命令。默认为“关闭”。

所以将其添加到~/.inputrc

set enable-bracketed-paste on

答案2

该答案并不是针对用户问题的最具体答案请看我的第二个答案。我将其留在这里是因为它解决了更多问题一般的问题。

根据对您原始帖子的评论,您需要(1)一个支持的终端模拟器括号内的粘贴(2) 对终端中运行的任何内容的相应支持,即vim, bash, zsh。支持括号粘贴的终端模拟器(列表将根据本文的评论进行更新):

  • xterm - 自从 ??
  • gnome-terminal- 自从 ??
  • putty- 从 0.63 开始(2013-08-06 发布日期)

支持括号模式的应用程序:

  • vim
  • zsh

对于bash,StéphaneChazelas 整理了一个外壳脚本以便于检测该模式并采取适当的措施。

如果不知道按下粘贴时正在运行的 UNIX 程序,则无法回答更具体的答案(防止行被截断)。

A剪贴板管理器也许你需要什么。

相关内容