有一个相关的答案(下面的链接),但这需要设置标记。Ctrl+U工作方式不同。\Cu
或者\C-u
不能只替换\eW
(下面的代码)。
这是在 bash 和 X11 之间共享剪贴板的建议。
if [[ -n $DISPLAY ]]; then
copy_line_to_x_clipboard () {
printf %s "$READLINE_LINE" | xsel -ib
}
bind -x '"\eW": copy_line_to_x_clipboard'
fi
所以问题是:我如何在 bash 中添加它剪切到 Xorg 鼠标(单击鼠标中键)粘贴缓冲区的文本Ctrl?U
您的函数确实将该行复制到剪贴板。
要使用鼠标粘贴缓冲区而不是 Ctrl+C/Ctrl+V 剪贴板,请在
xsel
没有该-b
选项的情况下运行。要剪切而不是复制,请在之后删除文本:设置
READLINE_LINE
为空字符串。Bash 提供的终端设置
stty
优先于其自己的键绑定。我想主要是为了遵守终端关于 BackSpace 是否发送^H
或^?
的设置,但更一般地说,这意味着默认情况下不使用 bash 列出的所有字符的键绑定(即stty -a
,^C
,^D
,^H
,^Q
,^S
,^W
和^Z
) 。您需要取消设置要重新绑定的控制角色的 stty 设置。^\
^?
~/.bashrc
这对我来说适用于 Ubuntu 16.04 上的 bash 4.3中的以下代码。如果我只是将它粘贴到命令行,它就不起作用:我得到了你在评论中提到的效果,即按下
^U
inserts a literal^U
。如果我运行stty kill ''
, 然后bind -x …
在后续命令中,它会起作用。