Vim';autowriteall';选项仅适用于特定缓冲区

Vim';autowriteall';选项仅适用于特定缓冲区,vim,Vim,“autowriteall”选项使Vim在退出时保存所有缓冲区。我想能够使用这个选项只为一个特定的缓冲区(一个临时文件,将很快被丢弃),但不为其他缓冲区 如何让Vim仅为一个特定缓冲区自动保存更改?这不是很完美,但有一个选项是使用VimLeavePre autocmd: :autocmd VimLeavePre <buffer> w 您将不得不使用自动命令的组合。直接显而易见的相关因素有: BufHidden bufleve BufUnload BufDelete 这将包括隐藏

“autowriteall”选项使Vim在退出时保存所有缓冲区。我想能够使用这个选项只为一个特定的缓冲区(一个临时文件,将很快被丢弃),但不为其他缓冲区


如何让Vim仅为一个特定缓冲区自动保存更改?

这不是很完美,但有一个选项是使用VimLeavePre autocmd:

:autocmd VimLeavePre <buffer> w

您将不得不使用自动命令的组合。直接显而易见的相关因素有:

  • BufHidden
  • bufleve
  • BufUnload
  • BufDelete
这将包括隐藏缓冲区、将它们留给其他缓冲区或窗口、关闭Vim和删除缓冲区。(我认为
BufDelete
BufUnload
的情况下是多余的,但我不能完全确定我考虑了所有情况)。请注意,
VimLeavePre
仅在您试图保存的缓冲区是活动缓冲区时才起作用,因此它不是您想要的

模板自动命令将被删除

:autocommand {event} {filename} w
或者,如果没有易于匹配的文件名模式,或者根本没有文件名模式(在这种情况下,
w
命令需要文件名参数),则可以使用缓冲区本地自动命令。在创建缓冲区时,可能必须以某种方式进行设置,例如,如果它是由某个脚本生成的用来显示某些特定信息的缓冲区。有关这方面的信息,请参阅:

:help autocmd-buffer-local
您可以从以下位置获得有关大量自动命令事件的信息:

:help autocommand-events

也许你想要的是:

setlocal autowriteall
setlocal仅启用指定缓冲区的功能。
autowriteall是autowrite+save-on-quit、enew、e和其他(h autowriteall)

autowriteall是一个全局选项。否,autowriteall只能全局设置,即使使用“setlocal”,它也是全局设置的。
setlocal autowriteall