如何用文件的内容替换当前缓冲区的内容?

Jua*_*hin 4 vim

我有一个外部脚本,它接受一个 Javascript 文件并自动修复一些样式问题,我想在写入 ( BufWritePre,FileWritePre)之前将它应用到当前缓冲区。

所以我的想法是:

  • w /tmp/foo 将当前缓冲区内容写入临时文件
  • silent !fixStyle /tmp/foo 在该文件上运行脚本。
  • 将当前缓冲区的内容替换为 /tmp/foo

问题是我不知道如何做第三步。

per*_*eal 5

一种方法是删除当前内容(1,$d即在第 1 行和最后一行之间删除),并从第 0 行开始读入目标文件(在第 1 行之前,以便没有空行):

:1,$d|0r ~/.hck/input
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用过滤器(在本例中为 cat)将所有内容 ( %)替换为过滤器的输出:

:%!cat /tmp/foo
Run Code Online (Sandbox Code Playgroud)