如何在没有鼠标的情况下从xterm复制文本?

Nat*_*man 29 linux keyboard command-line xterm

我想在另一个xterm中使用从命令行运行的命令的部分输出,或者作为不同命令的一部分.例如:

> grep error error.log
error: can't find file ~/<some very long path>/thisfile
Run Code Online (Sandbox Code Playgroud)

我想这样做:

>ls ~/<some very long path>/
Run Code Online (Sandbox Code Playgroud)

我知道有两种方法可以做到这一点:
1.~/<some very long path>/用鼠标复制.
2.使用一些组合head/ tail/ awk/ sed/ perl/ cut/等..只提取了我从输出需要,然后使用内部反引号.

有没有办法在不使用鼠标的情况下复制文本?想到的例子是VIM内部的可视化模式,但我不知道如何在xterm中做到这一点.

str*_*ger 41

您可以使用GNU屏幕的复制和粘贴命令.

快速教程:

  1. 打开屏幕:( screenscreen myprog my args here)
  2. 运行程序,生成要复制的输出
  3. 进入复制模式:Control+ a+[
  4. 将光标移动到起点
  5. 击中 Enter
  6. 将光标移动到终点
  7. 击中 Enter
  8. 粘贴:Control+ a+]

屏幕比这更强大(我使用它来标记几个虚拟终端而不需要特殊的终端模拟器,并且当X崩溃或某事时我也不会丢失我的会话).要退出屏幕,只需结束shell会话,或键入Ctrl+ a,Ctrl+ \.

  • 有没有办法粘贴到终端外的其他地方? (3认同)
  • 怎么没有人为这样的事情建立一个带有 vim 键绑定的术语 (3认同)

sal*_*rse 12

我发现XSel在类似情况下很有用.它是一个操纵X选择的工具.例如,这会将命令的输出存储到剪贴板:

grep error error.log | xsel -bi
Run Code Online (Sandbox Code Playgroud)


Sil*_*eri 6

你也可以使用tmux具有类似的功能screen.一旦进入tmux并且您有要复制的输出,您可以执行以下操作来复制并粘贴它:

  1. 进入副本模式Ctrl + B,[
  2. 使用箭头键移动光标,然后开始选择 Ctrl + Space
  3. 移动光标选择要复制的文本/区域,然后复制Alt + W(这将立即退出复制模式)
  4. 您现在可以粘贴(tmux仅限内)使用Ctrl + B,]

这些指导假设启用了emacs密钥绑定.对于vi绑定,请参阅此比较或按照分步指南进行操作.