运行 vim 仅对可识别的文件类型执行自动命令

Running vim autocommands only on recognized filetypes

我只想 运行 autocmd CursorHold,CursorHoldI * update 文件 'understood' vim 文件类型而不是 *。例如,我不想 运行 它用于未保存的缓冲区。我知道表达式可以由 if 保护,但我不知道如何写这个条件。

这是您想要实现的目标,用最简单的术语表达:

I want something to happen only on recognised filetypes

然后你可以用一些伪代码来表达:

if Vim assigned a filetype to this buffer
    do something
endif

现在,有什么比询问 Vim 更好的了解当前缓冲区是否有 filetype 的方法?

if &filetype != ""
    update
endif

这不再是伪代码,只需要内联:

if &filetype != "" | update | endif

将在您的自动命令中使用:

augroup MyAutoSave
    autocmd!
    autocmd CursorHold,CursorHoldI * if &filetype != "" | update | endif
augroup END