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
    评论
【使用说明】在主目录直接解包就行 【功能详情】--------快捷键 //----------------------------------------------------------------- 【#】显示函数列表 : TlistToggle //显示函数列表 按将会在VIM的左边打开一个Taglist窗口,这个窗口里面包含了C文件里面的定义,如struct,typedef,全局变量,函数等。使用'+h将光标移动到左边的窗口,上下选择tag按回车定位到tag的定义处。 【#】当前目录列表,方便打开文件 : NERDTreeToggle //当前目录列表,方便打开文件 按会在VIM的右边打开一个文件浏览器窗口。再按一下会关闭这个窗口。 【#】最近文件列表 : MRU //最近文件列表 按会打开一个MRU窗口,这个窗口里面记录了最近打开的文档,上下选择文件回车打开。如果没有你想打开的文件可以按"q"关闭窗口。 : LookupFile 在VIM的上面打开文件查找窗口, : vimgrep 假设你想查找某个字符串在项目中出现的位置,你可以把光标放在这个字符串上, 按就会在VIM的最下面显示你想查找的字符串,此时你可以修改这个字符串,回车到下一步,此时会提示你要查找的文件范围, 【#】编译 : gcc 直接按可以对打开的文件直接编译 【#】gdb调试 : gdb 直接按可以直接进入gdb调试状态 : Generate tags 在代码间跳来跳去。先按生成tag数据库。将会在项目的当前目录下生成tags文件。此时将光标放在某个函数调用上,按+]就会跳到函数的定义处,按+o就会跳回来。 : HLUDSync 按可以生成cscope的数据库文件cscope.out,再使用",sa"(:cs add cscope.out)添加数据库文件。当下次启动VIM的时候就会自动加载当前目录下的cscope数据库文件。在.vimrc里面定义了使用cscope的快捷键,比如将光标放在某个函数上使用命令",sc"就可以查看这个函数被哪些函数调用过, 【#】全屏显示 :genfiletags.sh 是让终端全屏显示 add cscope.out 在查找文件之前要生成文件数据库, 按将会在项目的当前目录下生成tags.filename文件,所以最好是在项目的根目录下按。再按就可以使用通配符查找文件了。 【功能详情】--------命令行功能 【#】添加函数注释等 :Dox 添加函数注释 【#】头文件和c文件切换 :AV 垂直分屏显示头文件或者c文件 【其他功能】------- 1.输入main后按table键,自动生成main函数 2.输入单词自动补全//注,本文档之前输入的单词自动补全 3.双引号、单引号、大括号自动补全,小括号不能自动补全【如果有人发现是什么原因,可以留言哈】 【注】祝大家更高效的玩转vim

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qianlongwydh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值