有没有办法在vim中打开屏幕的终端回滚缓冲区?

有没有办法在vim中打开屏幕的终端回滚缓冲区?

我正在寻找一种永远摆脱鼠标的方法。我已经到了一个非常舒服的地步,我不使用它进行常规文本编辑,但是,有些事情困扰着我。当我使用 shell 并想要复制一些先前的输出时,我需要使用鼠标突出显示 + 复制。太糟糕了。我知道screen“Ctrl-A [”很酷,但我想在 Vim 中浏览回滚,而不是在 Screen 的内置界面中。

有没有办法让我在 Vim 中打开当前 shell 输出缓冲区并从中复制?

答案1

从屏幕窗口内运行

screen -X hardcopy -h s
vim s
rm s

hardcopy -h将回滚转储到临时文件中,然后您可以根据需要在 Vim 中打开该文件。如果您编写此脚本,则应该使用正确的临时文件名:

#!/bin/sh
scrollback_file=$(mktemp)
screen -X hardcopy -h "$scrollback_file"
vim -c 'call delete(@%)' "$scrollback_file"

(或者您可以在 Emacs 或 Neovim 中运行 shell。)

答案2

如果您不介意再次运行该命令,您随时可以这样做

<command> | vim -

如果您还关心stderr

<command> 2>&1 | vim -

如果您想搜索模式并在该位置打开 vim,则特别有用:

grep -iIrHn <pattern> | vim -

然后将光标置于花样的线条上,然后按gF

相关内容