![有没有办法在vim中打开屏幕的终端回滚缓冲区?](https://linux22.com/image/121024/%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E5%9C%A8vim%E4%B8%AD%E6%89%93%E5%BC%80%E5%B1%8F%E5%B9%95%E7%9A%84%E7%BB%88%E7%AB%AF%E5%9B%9E%E6%BB%9A%E7%BC%93%E5%86%B2%E5%8C%BA%EF%BC%9F.png)
我正在寻找一种永远摆脱鼠标的方法。我已经到了一个非常舒服的地步,我不使用它进行常规文本编辑,但是,有些事情困扰着我。当我使用 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