gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 04:21:27 25 4
gpt4 key购买 nike

我在 Vim 设置中使用几个自动命令来突出显示 InsertLeaveBufReadPost 事件中的无关空白。我最近开始使用一个插件来突出显示缩进( https://github.com/nathanaelkane/vim-indent-guides )

问题是,如果有缩进的空行,它会被 indent-guides 插件突出显示,但不会被我的自动命令突出显示。我想要做的是将自定义事件添加到插件中,以便在完成突出显示后,我可以设置自动命令来触发并在应该的情况下覆盖该突出显示。

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

indent-guides plugin activates
indent-guides plugin highlights all indentation
indent-guides plugin triggers custom event signaling it is done
indent-guides plugin exits
auto command whitespace highlighter is triggered by indent-guides completion event

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

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

编辑:

我已经用另一种方式解决了这个问题(通过编辑不同的插件)。这仍然没有回答这个具体问题,所以我不会将其作为解决方案发布。

我作为插件的问题解决方案:https://github.com/ntpeters/vim-better-whitespace

最佳答案

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

这是定义自定义 autocmd 事件的方法:

autocmd User MyCustomEvent call my_custom_function()

这是触发定义的自定义 autocmd 事件的方式:

doautocmd User MyCustomEvent

现在,您可以以类似的方式使用 doautocmd 来触发上面提到的自定义 autocmd 事件和 native vim 事件,因此根据您的用例,您需要评估您需要两者中的哪一个。自定义用户自动命令的优点是您可以放心没有其他人会触发它们,而对于 native vim 自动命令,它们可以由任何人触发。

关于vim - 在 Vim 中创建用户定义的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21535350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com