Opa*_*des 10 osx bash terminal
当我粘贴到我的终端会话中时,shell 会立即执行命令,而无需我按下 Enter 键。
我真的不知道如何禁用这种行为。
我在 MacOS Yosemite 上使用预装的终端。
Sté*_*las 18
使用bash
4.4 或更新版本并在支持括号粘贴 a la 的终端中xterm
,您可以执行以下操作:
bind 'set enable-bracketed-paste'
Run Code Online (Sandbox Code Playgroud)
(或添加set enable-bracketed-paste
到您的~/.inputrc
)
这将导致在提示符处插入复制粘贴缓冲区,而不是将其中的字符解释为输入(如果该缓冲区包含类似的字符^C
,^Z
您仍然可能遇到问题,并且您的终端模拟器没有将它们过滤掉) .
zsh
自 5.1 版起默认执行此操作。
对于其他外壳或终端,另请参阅:如何保护自己免受这种剪贴板滥用?
在粘贴之前,输入单引号,然后粘贴。control-c 和向上箭头将其编辑为一条巨线。
双引号也有效,以防文本包含单引号但不包含双引号。如果它包含$
或其他在双引号内展开的内容也没关系,因为您实际上并没有将引用的巨行作为一个命令运行。
您实际上无法在那里编辑整个内容,因为换行符确实会开始一个延续提示(不是官方术语),而不是制作一个长长的行。
鉴于这 4 行:
echo
ls
foo
bar
Run Code Online (Sandbox Code Playgroud)
按照我的建议粘贴会在您的屏幕上显示:
$ 'echo
> ls
> foo
> bar <or cursor here if you didn't include a trailing newline
> [cursor here]
Run Code Online (Sandbox Code Playgroud)
然后您可以按 control-C 和向上箭头。(control-C 会破坏光标所在行上的所有内容,因此如果那里有有用的文本,请先按回车键。)
另一种方法是关闭报价并按回车键,然后向上箭头。
无论如何,在向上箭头之后
$ 'echo
ls
foo
bar
Run Code Online (Sandbox Code Playgroud)
control-a 并删除领先的'
. 使用 control-left 和 control-right 快速移动粘贴块(按单词)。或者,如果您的终端设置不支持控制箭头键、alt-b 和 alt-f。
文字换行符实际上将命令分开,这 4 行将分别进入您的命令历史记录。您可能希望将它们更改为;
或&&
。(我不知道这有什么技巧,只需使用键重复向前或向后词即可快速到达那里并手动完成。)
归档时间: |
|
查看次数: |
2584 次 |
最近记录: |