在Vim中创建用户定义的事件

在Vim中创建用户定义的事件,vim,vim-plugin,Vim,Vim Plugin,在InsertLeave和BufReadPost事件上,我使用两个自动命令高亮显示vim设置中的多余空白。我最近开始使用一个插件来突出显示缩进() 问题是,如果有一个带有缩进的空行,它会被缩进向导插件高亮显示,但不会被我的自动命令高亮显示。我想做的是在插件中添加一个自定义事件,这样当突出显示完成时,我可以设置我的自动命令来触发并在应该的情况下覆盖突出显示 例如,这是我想要的流类型(或至少类似的类型): 以下是我用来突出显示空白的自动命令: autocmd InsertEnter * syn cl

InsertLeave
BufReadPost
事件上,我使用两个自动命令高亮显示vim设置中的多余空白。我最近开始使用一个插件来突出显示缩进()

问题是,如果有一个带有缩进的空行,它会被缩进向导插件高亮显示,但不会被我的自动命令高亮显示。我想做的是在插件中添加一个自定义事件,这样当突出显示完成时,我可以设置我的自动命令来触发并在应该的情况下覆盖突出显示

例如,这是我想要的流类型(或至少类似的类型):

以下是我用来突出显示空白的自动命令:

autocmd InsertEnter * syn clear EOLWS | syn match EOLWS excludenl /\s\+\%#\@!$/
autocmd InsertLeave,BufReadPost * syn clear EOLWS | syn match EOLWS excludenl /\s\+$/
编辑:

我用另一种方法解决了这个问题(通过编辑不同的插件)。这仍然不能回答这个特定的问题,所以我不会将其作为解决方案发布


我的问题解决方案作为插件:

VIM已经支持触发本机和自定义用户事件。因为您的问题是关于自定义事件的,所以我想举一个小示例来演示如何执行相同的操作

以下是定义自定义autocmd事件的方式:

autocmd User MyCustomEvent call my_custom_function()
doautocmd User MyCustomEvent
以下是触发定义的自定义autocmd事件的方式:

autocmd User MyCustomEvent call my_custom_function()
doautocmd User MyCustomEvent

现在,您可以以类似的方式使用
doautocmd
来触发上述自定义autocmd事件和本机vim事件,因此根据您的用例,您需要评估这两个事件中的哪一个。自定义用户AutoCMD的优点是,您可以确保没有其他人会触发它们,而对于本机vim AutoCMD,任何人都可以触发它们。

我没有找到解决我最初问题的具体解决方案,但我通过编写的插件解决了我的问题。因为这并不能解决原来的问题,所以我不会将其作为解决方案发布。尽管如此,请随意查看插件。我在OP中链接了它。