PHP 个属性 Vim

PHP attributes with Vim

我正在使用 Vim 在 PHP 中编码,并且我看到 attributes syntax (#[...]) 在 [=38] 中被解析为注释=]语法高亮。

我想确保 #[ 不被视为评论,而 # 后跟除 [ 以外的任何字符都保留为评论。

我之前从来没有弄乱过 vim 的语法配置,所以我不熟悉它是如何工作的,但我尝试添加一个 after/syntax/php.vim 文件,我重新定义了 phpComment组如下,除了我定义的那个之外,默认匹配仍然有效。我不知道如何覆盖它们。

if exists("php_parent_error_open")
    syn region phpComment start="/\*" end="\*/" fold contained contains=phpTodo,@Spell
else
    syn region phpComment start="/\*" end="\*/" fold contained contains=phpTodo,@Spell extend
endif
syn match phpComment "#[^\[].\{-}\(?>\|$\)\@=" contained contains=phpTodo,@Spell
syn match phpComment "//.\{-}\(?>\|$\)\@=" contained contains=phpTodo,@Spell

我也尝试过使用 call matchdelete('phpComment', "#\[*$") 但我收到一条错误消息说我有一个无效的 ID,并且该 ID 应该大于或等于 1(我很确定我不明白如何使用matchdelete 功能,但我不确定这是解决此问题的最简单方法。

我也考虑过为 #[] 之间的所有内容创建一个新的语法突出显示来覆盖注释突出显示,但我对 vim 的语法系统了解不够对于这么少的人来说,学习这一切似乎需要做很多工作。

感谢您的帮助。

我发现了问题:我安装了插件 vim-polyglot,还有一个优先于 $VIMRUNTIME/syntax/php.[=15= 的另一个 php.vim 语法文件] 文件 - 并且不是最新的 PHP8 功能。