在Vim中突出显示类和函数名称
我最近刚刚从Textmate开始设置我的Vim环境,在沉迷于模态输入之后。
然而,语法突出显示在Vim中似乎并不那么美丽。 我使用C ++编写代码,并且由于函数调用和类名称不能突出显示,因此代码更难以阅读。 我用颜色方案玩了一下,但找不到任何对应于“类名”或“函数名”的字段。
在下面的图片中,注意DroughtLayer::
和*.size()
DroughtLayer::
*.size()
在MacVim中的右侧没有突出显示。
Textmate(左)和Vim(右)之间的图片比较http://ivzhao.com/temp/vimHL.png
任何想法如何解决这个问题? 这让我非常恼火,因为我是一个视觉敏感的人。
有趣的是,VIM中的语法突出显示器不支持将语法应用于标识符或函数名 - 至少不是C和C ++的语法突出显示器。 所以,即使你这样做:
:hi Function guifg=red
要么
:hi Identifier guifg=red
它不会给这些颜色。 我似乎没有比这些语言的关键字和常量更多。
在这里,有人已经开始扩展cpp语法文件以支持方法名称。 我猜想这是一个开始。 http://vim.wikia.com/wiki/Highlighting_of_method_names_in_the_definition
当我开始使用vim时,我遇到了同样的问题。 解决方案很简单,你只需要编辑vim使用的c语法文件,下面是如何做到这一点:
当您开始编辑C或C ++文件时,vim将读取位于中的默认c语法文件
$VIMRUNTIME/syntax/c.vim
(其中$ VIMRUNTIME是你安装vim的地方,你可以通过打开vim并使用命令“:echo $ VIMRUNTIME”)找到它的默认值。
您可以简单地覆盖该文件,或者您可以在此位置创建自定义C语法文件(该文件将由vim而不是默认文件加载):
$HOME/.vim/syntax/c.vim (for UNIX)
$HOME/vimfiles/syntax/c.vim (for PC or OS/2)
(我从来没有用过Mac,所以我不知道哪一个会为你工作,你可以在vim的帮助中找到更多,“:help vimfiles”)
现在有趣的部分。 将默认的“$ VIMRUNTIME / syntax / c.vim”文件复制到您的vimfiles目录(UNIX的“$ HOME / .vim / syntax / c.vim”),并通过添加以下行进行编辑:
" Highlight Class and Function names
syn match cCustomParen "(" contains=cParen,cCppParen
syn match cCustomFunc "w+s*(" contains=cCustomParen
syn match cCustomScope "::"
syn match cCustomClass "w+s*::" contains=cCustomScope
hi def link cCustomFunc Function
hi def link cCustomClass Function
而已! 现在函数和类名将用“功能”突出显示中定义的颜色(“:hi函数”)突出显示。 如果您想自定义颜色,可以将上面的最后两行更改为如下所示:
hi def cCustomFunc gui=bold guifg=yellowgreen
hi def cCustomClass gui=reverse guifg=#00FF00
或者您可以单独保留C语法文件并在vimrc文件(“:help vimrc”)中定义颜色:
hi cCustomFunc gui=bold guifg=yellowgreen
hi cCustomClass gui=reverse guifg=#00FF00
(请注意缺少“def”关键字,请参阅“:help highlight-default”以了解详细信息)。 有关“:hi”命令的可用参数,请参阅“:help:highlight”。
你可以在这个链接上找到Vim 7.2的完整c.vim文件(注意:如果你有一个未修改的Vim版本7.2,只能使用它):
http://pastebin.com/f33aeab77
和强制性屏幕截图:
http://img16.imageshack.us/img16/2073/vimy.png(对不起Imagehack)
这是我在这里的第一篇文章,我不知道如何进行观察,Eduardo的答案使得“(”和“{”看起来没有被修正,并且错误的语法是foldind,为了解决这个问题,我改变了一点。
syn match cCustomParen "?=(" contains=cParen,cCppParen
syn match cCustomFunc "w+s*(@=" contains=cCustomParen
syn match cCustomScope "::"
syn match cCustomClass "w+s*::" contains=cCustomScope
hi def cCustomFunc gui=bold guifg=yellowgreen
hi def link cCustomClass Function
链接地址: http://www.djcxy.com/p/49437.html
上一篇: class & function names highlighting in Vim
下一篇: How can I prepend text in the middle of the line to multiple lines in Vim?