我试图找出一种方法,将命令行中的当前文本复制到剪贴板,而无需触摸鼠标。换句话说,我只需要用键盘选择文本。我找到了一个可能导致完整解决方案的半途解决方案:
Ctrl+a- 移至行首。
Ctrl+k- 切断整条线。
Ctrl+y- 将剪切的文本拉回来。
或者,我也可以用来Ctrl+u执行前两个步骤。
这当然有效,但我试图找出剪切文本的确切保存位置。有没有一种方法可以在不使用的情况下访问它Ctrl+y?我知道xclip
,我什至用它来将文本直接传送到剪贴板,所以我正在考虑将 to 保存的数据传送Ctrl+k到xclip
,但不知道该怎么做。
到目前为止我得到的方法是编写一个脚本,用于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
。