我正在尝试使用 c.vim 插件突出显示 Vim 中的成员变量。
例如,在
struct sockaddr_in sa;
sa.sin_family = AF_INET;
我想强调一下sin_family
。
所以,这是我的语法匹配代码:
syn match cCustomMember "\(\.\)\@<=[a-zA-Z0-9_]\+\s*\((\)\@!"
hi def link cCustomMember Number
基本上我在这里想说的是,.
前面必须有一个,后跟多个单词字符,可选地后跟空格,并确保后面没有括号。
但是上面突出显示正则表达式的语法似乎在 Vim 中不能正常工作。例如,如果我有这样的代码:
getWrapper()->error( NO_VALID_ID, CONNECT_FAIL.code(), CONNECT_FAIL.msg());
.msg 和 .code 被突出显示,但最后一个字母不是。但我不想突出成员函数(以圆括号结尾)
我认为这有点类似于python中的这个正则表达式问题:
a = re.compile("(?<=\.)(?:\w+)(?!\()")
print a.search(".test(").group() #produces tes, which it's desired to match nothing
print a.search(".test").group() # produces test
如何对整个组而不是单个字母进行负前瞻。