0

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

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

autocmd BufWrite *.wiki call CleanMarkdown()

然而,vimwiki 设置了它自己的BufWrite自动命令,它会更新 wiki 文件中的任何目录。我可以用我自己的函数来破坏这个自动命令,该函数调用 CleanMarkdown() 以及 vimwiki 今天正在做的任何事情,但是面对 vimwiki 插件未来可能发生的变化,这将是脆弱的。

是否有一种标准方法可以添加BufWrite自动命令的待办事项列表中?

4

1 回答 1

1

多重自​​动命令

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

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

与 vimwiki 插件集成

由于插件已经定义了自己的文件类型,您不需要复制文件类型检测逻辑,即*.wiki模式。相反,如果你把你的:autocmd定义放在 中~/.vim/after/ftplugin/vimwiki.vim,你可以使用<buffer>特殊的模式使这个 autocmd 只适用于当前 (VimWiki) 缓冲区。

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

订购

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

于 2018-09-25T07:41:41.080 回答