我有一个外部脚本,它接受一个Javascript文件并自动修复一些样式问题,我想在写入之前将其应用到当前缓冲区(BufWritePre,FileWritePre
)。
所以我的想法是:
w /tmp/foo
将当前缓冲区内容写入临时文件silent !fixStyle /tmp/foo
在该文件上运行脚本。/tmp/foo
问题是我不知道如何做第三步。
答案 0 :(得分:4)
一种方法是删除当前内容(1,$d
,即在第1行和最后一行之间删除),并从第0行开始读取目标文件(在第1行之前,以便没有空白行):
:1,$d|0r ~/.hck/input
另一种方法是使用过滤器(在本例中为cat)将所有内容(%
)替换为过滤器的输出:
:%!cat /tmp/foo
答案 1 :(得分:0)
您可以使用set autoread
。它会检测磁盘上的文件何时更改,并从文件中重新加载当前缓冲区。因此,您可以保存文件,运行脚本,vim将使用更改内容重新加载缓冲区。
Autoread的帮助复制在
下面 *'autoread'* *'ar'* *'noautoread'* *'noar'*
'autoread' 'ar' boolean (default off)
global or local to buffer |global-local|
{not in Vi}
When a file has been detected to have been changed outside of Vim and
it has not been changed inside of Vim, automatically read it again.
When the file has been deleted this is not done. |timestamp|
If this option has a local value, use this command to switch back to
using the global value: >
:set autoread<