有没有一种干净的方法来增强 Vim 中的"BufWrite"autocmd?



我最近安装了 VimWiki 插件,并且正在学习 Vim 的插件架构(并且最好使用after/ftplugin等目录,而不是将所有内容塞进我的.vimrc文件中(。

我想在编写 wiki 文件之前调用一个函数,如下所示:

autocmd BufWrite *.wiki call CleanMarkdown()

但是,vimwiki 设置了自己的BufWriteautocommand,它会更新 wiki 文件中的任何目录。我可以用我自己的函数来破坏这个自动命令,该函数同时调用 CleanMarkdown(( 以及 vimwiki 今天正在执行的任何操作,但面对 vimwiki 插件未来可能的变化,这将是脆弱的。

是否有一种标准方法可以添加到要执行的操作列表中以进行BufWrite自动命令?

autocmds 的多重性

任何事件都可以有许多:autocmd;该命令是累积的。相应的:autocmd!删除某些命令集(取决于提供给它的参数(。

如果不指定[group],则 autocmd 将在全局空间中定义,并且某些:autocmd!清除此内容的风险很高。因此,建议指定一个[group](尤其是在插件中(。这样,您可以避免另一个(行为不端(插件或自定义破坏您的 autocmd。

与 vimwiki 插件集成

由于插件已经定义了自己的文件类型,因此您无需复制文件类型检测逻辑,即*.wiki模式。相反,如果将:autocmd定义放在~/.vim/after/ftplugin/vimwiki.vim中,则可以使用<buffer>特殊模式使此 autocmd 仅应用于当前 (VimWiki( 缓冲区。

augroup MyVimWikiCleanup
autocmd BufWrite <buffer> call CleanMarkdown()
augroup END

订购

:autocmd按定义顺序执行。通过使用after 目录,您的目录将在插件之后执行。

相关内容

  • 没有找到相关文章

最新更新