这似乎是一种典型的方式,您在终端中有一些输出,如果您想选择某个短语,您可以使用鼠标复制它,但有没有办法不使用鼠标来选择?例如,我输入ls
,并得到一个文件列表,我想选择第二个文件(第二行),有没有办法不使用鼠标来复制名称?
答案1
使用 tmux:
我tmux
在 vi 模式下使用:
- 进入复制模式(在我的配置Prefix+中escape,默认前缀是Ctrl+ b)
- 在配置文件中(
~/.tmux.conf
):bind Escape copy-mode
- 在配置文件中(
- 移动(使用箭头)
- 选择您想要的输出(使用 开始选择Space)
- 在我的配置中v:
bind-key -T copy-mode-vi y send-keys -X begin-selection
- 在我的配置中v:
- 按下Enter即可复制文本。
- 在我的配置中y:
bind-key -T copy-mode-vi y send-keys -X copy-selection
- 在我的配置中y:
- 按Prefix+p粘贴。
还可以创建这样的键绑定:
bind C-c run "tmux save-buffer - | xsel -bi"
Prefix因此,您可以通过按+ Ctrl+将缓冲区保存到系统剪贴板中c。
我已经添加了我的配置,因为它更像 vim 而不是默认配置。
使用命令:
这是我的做法:
- 运行命令(例如
ls -1
:) - 处理输出以获得我想要的结果
- 点到
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。