gpt4 book ai didi

Vim:在 C 中,将结构名称突出显示为 cType

转载 作者:行者123 更新时间:2023-12-01 21:13:13 26 4
gpt4 key购买 nike

我想设置 Vim 来突出显示 struct名称为 C 类型,因此,我对语法脚本进行了一些修改:

syn match cType   "\v(struct\s+)@<=[a-zA-Z0-9_]+"
syn match cType "\v(enum\s+)@<=[a-zA-Z0-9_]+"

它确实有效,但它确实显着减慢了我的 vim 速度!当我刚刚打字时,Vim 在 Intel Core2 Duo 2.53 GHz 上的响应速度变得很慢。

我已经注释掉了我添加的内容,现在它又运行得很快了。

所以,看起来,\@<= regexp 构造太慢,无法在语法脚本中使用。我尝试将它与 struct 匹配在一起本身:

syn match cType   "\vstruct\s+[a-zA-Z0-9_]+"

但是这不起作用。还有其他方法可以做到这一点吗?

最佳答案

我通常会通过 nextgroup= 使用它,以避免 Vim 尝试在任何地方解析它:

syn keyword cStructure struct nextgroup=cStructName skipwhite
syn match cStructName "\h\w*" contained
hi link cStructName cType

但不幸的是,syntax/c.vimcontains=ALLBUT 子句,然后几乎在所有地方都会再次引入这个子句。

因此,我认为您必须采用第二种方法。缺少的(使其工作)是清除原始定义,因为关键字匹配始终具有比 :syn-match 更高的优先级:

syn match cType   "\vstruct\s+[a-zA-Z0-9_]+"
syn clear cStructure

关于Vim:在 C 中,将结构名称突出显示为 cType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25602705/

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