无论我使用ctrl + shift + v还是从右键菜单中粘贴,都会发生这种情况。
如何停止这种行为?
无论我使用ctrl + shift + v还是从右键菜单中粘贴,都会发生这种情况。
如何停止这种行为?
Answers:
不要复制多行文字进行粘贴。我几乎可以保证您只是复制了该行的最后一部分。如果您单击三次以复制要粘贴的代码行,则将在行尾添加换行符。如果您想确定这确实是问题所在,请复制整行(最后一个字母/数字除外),然后查看粘贴是否还包括换行符。
您要粘贴的文本包括尾随换行符。粘贴换行符时,在终端中运行的shell会看到按Enter,因此它会执行命令。
粘贴操作由终端仿真器执行;它将粘贴的文本传递给终端中运行的应用程序,就像传递用户键入的文本一样。请参阅键盘输入和文本输出如何工作?有关输入如何工作的更多信息。该应用程序(在此为外壳程序)无法区分击键和粘贴操作。
如今,许多终端仿真器都支持带括号的粘贴。在方括号粘贴模式下,应用程序可以将粘贴操作与击键区分开。括号粘贴仅在应用程序对粘贴的文本执行某些操作时才有用,因此可以通过支持应用程序来启用它,而不是由终端仿真器的用户配置的。
Zsh 5.1(于几周前发布,因此在大多数发行版中均不可用)添加了对括号内粘贴模式的支持。粘贴文本时,它只是插入到命令行中,可以在按Enter执行命令行之前对其进行编辑。
oh-my-zsh的用户即使在早期版本的zsh中也可以使用安全粘贴插件。
在zsh中,您可以做的另一件事是使选择内容作为字符串插入,并带有引号(在每个shell特殊字符(如空格)之前加反斜杠)。键入`xsel`
以获取主要选择(自动鼠标选择),或`xsel -b`
获取剪贴板内容(以Ctrl+ 复制的文本C),然后按Tab。
如果您使用的是zsh较旧的版本,并且希望插入剪贴板内容而不引用它,则可以定义一个函数来插入所选内容。
function zle_insert_x_selection {
LBUFFER+=$(xsel ${NUMERIC+-b} -o </dev/null)
}
zle -N zle_insert_x_selection
bindkey '\e\C-v' zle_insert_x_selection
使用此功能.zshrc
,您可以按Ctrl+ Alt+ V插入主要选择,或按Ctrl+ U Ctrl+ Alt+ V插入剪贴板内容。它们被插入到光标之前,除了没有尾随换行符外没有改变。请参阅在bash和X11之间共享剪贴板,以获取与bash类似的内容。
如果您使用bash作为外壳,则可以按调Ctrl-X Ctrl-E
出一个编辑器(例如,由$ VISUAL或$ EDITOR定义,vi
或者nano
)。
然后,可以像编辑文件一样将命令粘贴到该命令中。如果您保存并退出,它们将被执行。如果您不保存就退出,则取消该操作。
在文本编辑器窗口中,使用以下快捷键复制不带\ n的文本(换行符):
在浏览器窗口中或其他文本不可编辑的情况下,请使用以下两种技术之一:
正确选择(无\ n)的外观:
ls -al
错误选择(带有\ n)的样子:
ls -al