如何在不使用鼠标的情况下将文本从命令行复制到剪贴板?

San*_*cho 11 command-line clipboard xclip paste xdotool

我试图找出一种方法,无需触摸鼠标即可将命令行中的当前文本复制到剪贴板。换句话说,我只需要用键盘选择文本。我找到了一个可能导致完整解决方案的半途而废的解决方案:

Ctrl+a - 移动到行首。

Ctrl+k - 切断整条线。

Ctrl+y - 将剪切的文本拉回来。

或者,我也可以Ctrl+u用来执行前两个步骤。

这当然有效,但我想弄清楚剪切文本的确切保存位置。有没有办法在不使用的情况下访问它Ctrl+y?我知道xclip并且我什至用它来将文本直接传输到剪贴板,所以我正在考虑通过管道传输Ctrl+kto保存的数据xclip,但不知道该怎么做。

到目前为止,我得到的方法是编写一个脚本,用于xdotool添加echo到行首和| zxc行尾,然后按回车键(zxc是一个自定义别名,基本上是通过管道连接到xclip)。这也有效,但它不是一个真正“干净”的解决方案。

如果这有什么不同,我正在使用 Cshell。

编辑:我不想screen用作解决方案,忘了提及。

谢谢!

meu*_*euh 7

如果使用xterm或衍生,您可以设置键绑定来开始和结束文本选择,并将其保存为 X11 主要选择或剪切缓冲区。见man xterm。例如,添加到您的~/.Xdefaults

XTerm*VT100.Translations: #override\n\
    <Key>KP_1: select-cursor-start() \
            select-cursor-end(PRIMARY, CUT_BUFFER0)\n\
    <Key>KP_2: start-cursor-extend() \
            select-cursor-end(PRIMARY, CUT_BUFFER0)\n
Run Code Online (Sandbox Code Playgroud)

您只能有一个XTerm*VT100.Translations条目。使用新文件内容更新 X11 服务器xrdb -merge ~/.Xdefaults。开始一个新的xterm.

现在,当您在命令提示符下有一些输入时,1在数字小键盘上键入将开始在当前文本光标位置选择文本,就像鼠标上的按钮 1 所做的那样。使用箭头键移动光标,然后点击2数字键盘,中间的文本会突出显示并复制到主要选择和 cutbuffer0。显然可以选择其他更合适的键和动作。您可以类似地使用绑定粘贴选择insert-selection(PRIMARY)

  • 我快速浏览了 konsole 的手册,但它没有提到这种控制。您不太可能在大多数终端仿真器中发现这一点,因为它们更喜欢提供更易于通过菜单和对话框管理的设置。 (2认同)