将更改保存到Vim缓冲区而不切换到该缓冲区

时间:2014-06-29 02:21:15

标签: vim

如何在不切换到缓冲区的情况下将更改保存到已修改的Vim缓冲区?我正在尝试编写一个保存和关闭项目中所有缓冲区的函数。

3 个答案:

答案 0 :(得分:2)

您可以使用:wqa[ll]来编写和关闭所有已更改的缓冲区。 :wa将在不关闭的情况下撰写。

答案 1 :(得分:2)

:wqall命令外,没有写入当前缓冲区以外的缓冲区的命令。

所以你必须切换到缓冲区才能编写它。您可以使用:noautocmd来避免相关事件(但可能会产生不良副作用!)。

唯一的选择是使用getbufline()writefile()等低级函数,但是您必须自己处理编码转换,文件格式等。

答案 2 :(得分:1)

您可以使用参数列表,请参阅:help argument-list

假设您正在处理三个文件foobarbaz,并且只想写foobaz

:args foo baz
:argdo w

你显然需要额外的逻辑来确定首先放入arglist的缓冲区,但听起来你已经有了。