我经常使用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剪贴板管理器也许你需要什么。