从“剪贴板”中删除尾随的新行以防止在终端上执行?

Pur*_*ret 12 clipboard newlines

有什么方法可以通过某种过滤器运行您复制到“剪贴板”的任何内容?理想情况下从您复制的内容中删除尾随换行符,以便它不会在终端中自动运行?

这是我复制有问题的测试时的样子,有时我会忘记这是一个新行。
在此处输入图片说明

Gil*_*il' 10

好的现代终端支持括号粘贴:当您使用终端的粘贴命令时,它会在剪贴板内容周围发送特殊的转义序列。如果您的 shell 支持括号粘贴,它将按原样粘贴包括任何控制字符在内的剪贴板内容,特别是尾随换行符不会触发命令的执行。

Zsh ?5.1 支持括号粘贴并默认启用它。可以教授旧版本。Bash ?4.4 支持括号粘贴,如果你添加set enable-bracketed-paste on~/.inputrc.

如果您的终端或 shell 不支持括号粘贴,您可以定义一个 shell 函数,该函数在没有尾随换行符的情况下进行粘贴。

在 zsh 中,以下命令调用剪贴板的内容,减去尾随换行符,并将其调出以进行编辑(即使有多行):

print -z -- "`xsel -b`"
Run Code Online (Sandbox Code Playgroud)

在 bash 中,您可以将剪贴板的内容减去尾随换行符推送到历史堆栈。之后,按 调Up出命令进行编辑。

history -s -- "`xsel -b`"
Run Code Online (Sandbox Code Playgroud)


RSF*_*on7 5

是的,用于cat粘贴到文件中,做任何你喜欢的事情,然后执行它。

对于本例:

$ cat > tmp
[paste][Ctrl+D]
$ tr -d '\n' <tmp | xclip # this remove all "new line" characters 
                          #  and copy back to clipboard
Run Code Online (Sandbox Code Playgroud)