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

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

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

Ctrl+a- 移至行首。

Ctrl+k- 切断整条线。

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

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

这当然有效,但我试图找出剪切文本的确切保存位置。有没有一种方法可以在不使用的情况下访问它Ctrl+y?我知道xclip,我什至用它来将文本直接传送到剪贴板,所以我正在考虑将 to 保存的数据传送Ctrl+kxclip,但不知道该怎么做。

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

如果这有什么区别的话,我正在使用 Cshell。

编辑:我不想用作screen解决方案,忘记提及这一点。

谢谢!

答案1

如果使用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)

答案2

如果您愿意先执行该命令,则可以使用以下模式。抓住最后一个命令fc,删除历史编号,将其保存到剪贴板。(这恰好是今天 Mac 上的 Zsh,但请根据您的设置进行调整)

# Call the save-to-clipboard function something like "save"
% save() { fc -l -1 | gsed -r 's/^\s*[0-9]+\s+//' | pbcopy }

# Execute your interesting saveable command
% some-interesting-command with args...

# Put the command onto your clipboard
% save

你也可以将其绑定到组合键以避免打字save

相关内容