从 vim 缓冲区中的命令获取输出

gcb*_*gcb 4 vim

我想做的事

  1. 编辑一个文件
  2. 运行 '!svn diff %' (或任何其他采用当前文件名的命令)
  3. 将输出放在新的缓冲区(或选项卡)上

奖励:不使用脚本,因为我经常在主机上工作,我不喜欢。

我的第一次尝试是::tabnew | r !svn diff %这显然不起作用,因为 % 将是空的,因为它在 tabnew 命令之后被解析。

dan*_*ann 7

这应该有效:

:tabnew | r !svn diff #
Run Code Online (Sandbox Code Playgroud)

#引用前一个缓冲区,即您在:tabnew执行之前打开的缓冲区。

更好的是

:tabnew | set buftype=nowrite | r !svn diff #
Run Code Online (Sandbox Code Playgroud)

因为当你关闭选项卡时,vim 不会抱怨,但这已经太多了,无法每次输入。