vim语法高亮——使自定义类型也能高亮的简单办法

  说明:判断是否类型的简单办法,就是简单的观察:如果该标志符后面有空格,空格后又是一个标志符的话,在C/C++语言中,可以肯定这一定是一个类型了。所以用正则表达式判断就可以了。

  经过测试,该语法定义几乎能完美的工作。包括在template下,以及 < > 中,以及函数定义中,引用什么的。喜欢的朋友可以复制过来用哦!

  缺点:没有进行语法分析,只是基于上述简单的逻辑来实现的,存在着纰漏,但是目前测试还没遇到。以后的解决方向,写vim脚本判断typedef 出来的自定义类型,然后加入到syntax keyword列表。我觉得这才是正道。

  不过,在这个搞出来之前,下面这个也够用了:-)

 

 1 "========================================================
 2 " Highlight All Math Operator
 3 "========================================================
 4 " C math operators
 5 syn  match         cMathOperator     display  " [-+*/%=] "
 6 " C pointer operators
 7 syn  match         cPointerOperator display  "-> /| /."
 8 " C logical    operators - boolean results
 9 syn  match         cLogicalOperator display  " [!<>] =/="
10 syn  match         cLogicalOperator display  "=="
11 " C bit operators
12 syn  match         cBinaryOperator display  " /( & /| | /| /^ /| << /| >> /) =/="
13 syn  match         cBinaryOperator display  "/~"
14 syn  match         cBinaryOperatorError display  "/~="
15 " More C logical operators - highlight in preference to binary
16 syn  match         cLogicalOperator display  "&& /| ||"
17 syn  match         cLogicalOperatorError display  " /( && /| || /) ="
18 " Math Operator
19 hi  def link  cMathOperator             cOperator
20 hi  def link  cPointerOperator          cOperator
21 hi  def link  cLogicalOperator          cOperator
22 hi  def link  cBinaryOperator           cOperator
23 hi  def link  cLogicalOperator          cOperator
24
25 hi  cOperator          guifg =#3EFFE2
26 hi  def link  cBinaryOperatorError      Error
27 hi  def link  cLogicalOperatorError     Error
28 "========================================================
29 " Highlight typedef types ( include cpp syntax... )
30 " =======================================================
31 syn  match        cTypeDefType  "/</I/i*/> /( &/=/s*/*/=/s*&/=/I /) /@="
32 syn  match        cTypeDefType  "/</I/i*::/i* /( &/=/s*/*/=/s*&/=/I /) /@="  contains= cScope,cFunction
33 syn  match        cTypeDefType  "/</I /( /i*</s*/I/i*/s*>:: /) /+/i* /( &/=/s*/*/=/s*&/=/I /) /@="  contains= cScope,cFunction,cTypeDefTypeTwo
34 syn  match        cTypeDefTypeTwo       "</s*/I/i*/s*>"  contains= cLogicalOperator
35
36 hi  cTypeDefType guifg =#c0d8f8
37 hi  cTypeDefTypeTwo      guifg =#c0d8f8
38 " Highlight ;
39 syn  match        sColon        display  /;/
40 syn  match        cScope        display  /::/
41 hi  cScope       guifg =#3EFFE2
42 hi  sColon       guifg =#60d080
43 "========================================================
44 " Highlight All Function
45 "========================================================
46 syn  match     cFunction " [a-zA-Z_][a-zA-Z_0-9] */s*(" me=e-1
47 syn  match     cFunction "/< [a-zA-Z_][a-zA-Z_0-9] */>/s*(" me=e-1
48 syn  match     cFunction "/< [a-zA-Z_][a-zA-Z_0-9] * /( </I/i*>/s*( /) /@="
49 hi  cFunction         gui =NONE  guifg =#B5A1FF

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值