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


10

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

Ctrl+a -移至行首。

Ctrl+k -剪掉整行。

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

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

这当然可以,但是我想弄清楚剪切文本的确切存储位置。有没有不用它就可以访问它的方法Ctrl+y?我知道,xclip甚至使用它直接将文本通过管道传递到剪贴板,因此我在考虑通过管道Ctrl+k传递到所保存的数据xclip,但不确定如何执行。

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

如果这有任何区别,我正在使用Cshell。

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

谢谢!


不相关,但也要知道:如果您不仅要剪切文本,还要粘贴,则Shift-Ins会将所选内容粘贴到xterm中。
dirkt

Answers:


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

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

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


这很棒!我不知道你能做到这一点。非常有帮助!可以在Konsole中使用它吗?
Sancho Pancho

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

translations资源是此处提到的X Toolkit功能,在其他工具包中没有。但是,您可以使用该keymap功能在多套翻译之间进行切换(请注意有关“您只能拥有一个”的注释)。
托马斯·迪基

感谢所有的评论。仍然没有找到有关ctrl-k / ctrl-y剪贴板的信息,有人知道如何访问该剪贴板或将剪切文本实际保存在哪里?
Sancho Pancho

@SanchoPancho取决于您的csh,它实现了一个内部kill-ring,该环可以保留剪切的文本并向其提供yank和yank-pop绑定。我认为您没有其他访问此戒指的权限。见男人csh
meuh
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.