vim - 高效地自动保存文件到磁盘

vim - 高效地自动保存文件到磁盘

我保留一个日志文件,并希望将其写入磁盘,而不必在每次编辑后手动保存。

我使用过:au! CursorHoldI,CursorHold <buffer> silent! :update在某处找到的命令,效果很好,而且很高效:默认情况下,在光标位于同一位置 4 秒后,'updatetime'它会将文件写入磁盘(仅当发生更改时,因此:update不是)。:write插入普通的模式。(当缓冲区在 Vim 中具有焦点时。无论 Vim 是否具有焦点,这是一个微妙的点。也就是说,如果 Vim 失去焦点,文件仍然会在 4 秒后保存。)

唯一的问题是,如果我用 打开另一个文件:split,然后单击 或Ctrl+ Wk则原始文件在 ms 之后不会保存'updatetime'。如何纠正这个问题?

答案1

一个解决方案是添加BufLeave事件,并发出如下命令:

:au! CursorHoldI,CursorHold,BufLeave <buffer> silent! :update

在我的.vimrc(又名_vimrc)中,我定义了

noremap <C-S-F5> :au! CursorHoldI,CursorHold,BufLeave <buffer> silent! :update<CR>

因此我在该缓冲区中按下++Ctrl使其进入自动保存模式。ShiftF5

注意:silent不会打印任何消息,也silent!不会打印任何错误,并忽略它们。这适用于没有关联文件的缓冲区和只读文件。

答案2

:wall命令(通常缩写为:wa)与 一样,:update仅在文件保存时才写入文件。不同之处在于,它将写入所有打开的文件,而不仅仅是当前文件。

您可以使用相同的自动命令,只需代替:wa即可:update

相关内容