Select 使用 VIM 的终端输出中的文本

Select text within terminal output using VIM

假设我的终端 window 现在有以下输出:

1. vsud@vsud:~$ pwd
2. /home/vsud
3. vsud@vsud:~$ echo "Hello, world!"
4. Hello, world!

我想将第一行和第二行复制到剪贴板。

vsud@vsud:~$ pwd
/home/vsud

使用鼠标 - 我可以通过选择这两行并按 Ctrl + Shift + C 来实现。 但是我能否以某种方式进入 VIM 模式并在我的终端中像处理纯文本一样处理整个输出 - 所以要复制 2 行我只需要输入 "H2yy" ? 我需要为此安装一些特定的终端仿真器吗?

现在我正在使用内置于 XFCE 中的终端仿真器。

您可以使用 view - 将输出通过管道传输到 vim。例如:

ls -la | view -

这将以只读模式打开一个 vim 实例,可以从 stdin

中读取

有两种方法:(1) 使用 tmux,并在 vim

中使用 (2) ':term'

tmux

如果您在 tmux 中使用您的终端,您可以进入 复制模式 和 select 并从您的终端复制行。假设 tmux Prefix 为 Ctrl-b,具体步骤为:

  1. 进入复制模式:Ctrl-b [

  2. 开始 selecting: Space

  3. 扩展selection:使用方向键

  4. 将select离子存储在缓冲区中:输入

  5. 传输selection到系统剪贴板:Ctrl-b : 运行-shell "tmux save buffer - | xsel -i -b"

  6. 将selection粘贴到vim缓冲区(+寄存器):“+p

补充说明:

一个。 tmux 提供了一个名为 "capture-pane" 的命令,您可以使用它复制整个窗格(终端)。

b。您需要为上面的第 5 步安装 xsel 才能工作。使用键绑定可以缩短第 5 步。为此,请在您的 .tmux.conf 中输入以下命令(或者,在您的 tmux 命令行 Ctrl-b : 中输入此命令)

bind C-c run-shell "tmux save-buffer - | xsel -i -b"

现在第 5 步相当于按 Ctrl-c。

c。您可以使用 vim 键在复制模式下导航:Ctrl-b :setw -g mode-keys vi

:术语

如果您使用 ex 命令“:term”从 vim 内部启动终端,您可以使用以下命令进入 "normal" 模式:Ctrl-W Shift-n。然后您可以使用 vim 键导航(并复制)终端,就好像它是一个常规的 vim 缓冲区一样。