如何在没有鼠标的情况下在终端中选择(复制)输出

Neg*_*ito 12 mouse command-line copy-and-paste

这似乎是一种典型的方式,您在终端中有一些输出,如果您想选择某个短语,您可以使用鼠标复制它,但是有没有办法不使用鼠标进行选择?比如我输入ls,得到一个文件列表,我想选择第二个文件(第二行),有没有办法不用鼠标复制名字?

Rav*_*ina 10

使用 tmux:

tmux在 vi 模式下使用:

  1. 进入复制模式(在我的配置中Prefix+ escape,默认前缀是Ctrl+ b
    • 在配置文件 ( ~/.tmux.conf) 中:bind Escape copy-mode
  2. 四处走动(使用箭头)
  3. 选择您想要的输出(用 开始选择Space
    • 在我的配置中vbind-key -T copy-mode-vi y send-keys -X begin-selection
  4. Enter复制文本。
    • 在我的配置中ybind-key -T copy-mode-vi y send-keys -X copy-selection
  5. Prefix+p粘贴。

在此处输入图片说明

还要创建一个这样的键绑定:

bind C-c run "tmux save-buffer - | xsel -bi"
Run Code Online (Sandbox Code Playgroud)

因此,您可以通过按Prefix+ Ctrl+将缓冲区保存到系统剪贴板中c

我添加了我的配置,因为它更像是 vim 而不是默认配置。


使用命令:

这是我所做的:

  1. 运行命令(例如:ls -1
  2. 处理输出以获得我想要的结果
  3. 点到 xsel -bi

在你的例子中:

$ ls -1 | sed -n 2p | xsel -bi
Run Code Online (Sandbox Code Playgroud)
  • ls -1 在一行中打印输出
  • sed -n 2p 得到第二行
  • xsel 已用于将最终结果复制到剪贴板。

如果命令运行时间过长,请先将输出保存到文件中,然后处理输出:

command > output
head -10 output | whatever | xsel -bi
Run Code Online (Sandbox Code Playgroud)