'autowriteall'选项使Vim在退出时保存所有缓冲区。我希望能够仅将此选项用于一个特定缓冲区(即将被丢弃的临时文件),但不能用于其他缓冲区。
如何让Vim自动保存仅针对一个特定缓冲区的更改?
答案 0 :(得分:1)
它不是很完美,但一种选择是使用VimLeavePre autocmd:
:autocmd VimLeavePre <buffer> w
但是,您必须退出:q!
或:qa!
才能使用此功能,否则它将永远无法启动autocmd。
:help autocmd
:help VimLeavePre
:help autocmd-buffer-local
答案 1 :(得分:1)
您将不得不使用自动命令的组合。显而易见的相关问题是:
BufHidden
BufLeave
BufUnload
BufDelete
这将涵盖隐藏缓冲区,将它们留给其他缓冲区或窗口,关闭Vim和删除缓冲区。 (我认为BufDelete
在给定BufUnload
时是多余的,但我并不完全确定我已经考虑了所有情况)。请注意,VimLeavePre
仅在您尝试保存的缓冲区是活动缓冲区时才有效,因此它不是您想要的。
模板自动命令将是
:autocommand {event} {filename} w
或者,如果您没有匹配的简单文件名模式,或者根本没有一个(在这种情况下w
命令需要文件名参数),您可以使用缓冲区本地自动命令。这些可能必须在创建缓冲区时以某种方式设置,就好像它是由某个脚本生成的一个来显示某些信息。有关此信息,请参阅:
:help autocmd-buffer-local
您可以从
获取有关众多自动命令事件的信息:help autocommand-events
答案 2 :(得分:0)
也许你想要的是:
setlocal autowriteall
setlocal仅启用指定缓冲区的函数。 autowriteall是autowrite + save on quit,enew,e等等(h autowriteall)