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

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

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

答案1

使用 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"

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

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


使用命令:

这是我的做法:

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

在您的示例中:

$ ls -1 | sed -n 2p | xsel -bi
  • ls -1将输出分别打印在一行中
  • sed -n 2p获取第二行
  • xsel已用于将最终结果复制到剪贴板中。

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

command > output
head -10 output | whatever | xsel -bi

答案2

最常见的 Linux 终端模拟器无法直接做到这一点。不过我知道有两个这样的模拟器。

Termite 已经存在了相当长一段时间。不过它相当简陋(键盘快捷键不可配置,没有多个选项卡)。

现在有了第二个,它具有这些功能,名为 Mantid(我厚颜无耻地在这里宣传它 :) ):

https://github.com/omgold/mantid-term

不过,目前还没有 Ubuntu 版本,只有一个 Arch 和 RPM。不过,您可以尝试构建 RPM 并使用 Alien 将其转换为 deb。

相关内容