语法突出显示与标准类型一起使用非常漂亮,例如int
,uint32_t
,float
等。但是,我想教vim在我的代码中使用typedef定义了其他类型,例如
typedef double float64_t;
如何让vim对float64_t
使用与标准类型相同的突出显示?具有本地文件(例如,在我的~/.vimrc
或.vim
目录中)的解决方案将是优选的。自动解析typedef名称不是必需的,我愿意根据需要添加typedef名称。
答案 0 :(得分:3)
这是一种根据需要添加名称的方法。
对于Windows,请创建(根据需要替换vimfiles
)
~\vimfiles\after\syntax\c.vim
并添加定义新语法高亮项的行。例如(来自我的cpp.vim
),
" add nullptr as a keyword for highlighting
syn keyword Constant nullptr
要确定要添加到哪个组,请打开c文件并键入:syntax
,然后查看现有语法组。
答案 1 :(得分:2)
我还发现我们可以使用match
命令来覆盖模式描述的一组typedef名称:
match Type /\w*_t/
将以_t
结尾的所有typedef名称突出显示为类型(但是在任何地方都会这样做,甚至在注释和字符串文字中也是如此。)
答案 2 :(得分:0)
您只能使用负向超前<<>匹配与_t
匹配的那些标识符 ({不能像_t
那样包含foo_table
的标识符)< / em>。
放在~/.vim/after/syntax/c.vim
中:
syn match cType "\h\w*_t\w\@!"
\h
(单词的头)与[A-Za-z_]
的含义相同,即它将匹配可以在C中以标识符开头的任何字符。\w*
(单词)的含义与{{ 1}},即它将匹配可以在C中继续标识符的任何字符。[0-9A-Za-z_]*
将从字面上匹配这两个字符。 _t
为否定前瞻:只要\w\@!
不匹配,它就会匹配,即只要\w
后面没有字母数字字符或下划线,它就会匹配。
注意:这与_t
稍有不同,后者将匹配\h\w*_t\W
类型,后跟foobar_t
以外的其他字符,这意味着它将在行末或末尾不匹配。文件末尾。该模式还将匹配并突出显示后跟字符作为关键字,这绝对不是您想要的。