在沉迷于它的模态输入之后,我最近刚刚从 Textmate 设置了我的 Vim 环境。

不过,Vim 中的语法高亮似乎不太美观。我用 C++ 编写代码,由于函数调用和类名无法突出显示,因此代码更难以阅读。我玩了一下配色方案,但找不到任何与“类名”或“函数名”相对应的字段。

在下图中,注意如何 DroughtLayer::*.size() MacVim 中右侧未突出显示。

Picture comparison between Textmate(left) and Vim(right)
(来源: 爱找网)

有什么想法如何解决这个问题吗?这真的让我很恼火,因为我是一个视觉敏感的人。

有帮助吗?

解决方案

有趣的是,在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并使用命令时,它的默认值“:回声$ VIMRUNTIME”)。

您可以简单地覆盖该文件,也可以创建自定义的C语法文件(将由VIM加载默认的一个替代)在以下位置:

$HOME/.vim/syntax/c.vim      (for UNIX)
$HOME/vimfiles/syntax/c.vim  (for PC or OS/2)

(我从来没有使用的是Mac,所以我不知道哪一个会为你工作,你可以找到更多的VIM帮助“:帮助vimfiles”)

现在最有趣的部分。默认的 “$ VIMRUNTIME /语法/ c.vim” 文件复制到你的vimfiles目录( “$ HOME / vim的/语法/ c.vim” 对于UNIX),并通过将这些线编辑:

" 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 def cCustomFunc  gui=bold guifg=yellowgreen
hi def cCustomClass gui=reverse guifg=#00FF00

或者你可以独自离开C语法文件,并确定在vimrc文件的颜色(“:帮助的vimrc”):

hi cCustomFunc  gui=bold guifg=yellowgreen
hi cCustomClass gui=reverse guifg=#00FF00

(注意没有了“高清”关键字,进入“:帮助高亮显示默认”的说明)。对于可用参数的“:喜”命令见“:帮助:亮点”。

您可以找到这个链接上的Vim 7.2的完整c.vim文件(注意:只有当你有一个未经修饰的Vim,7.2版本使用):

  

http://pastebin.com/f33aeab77

和强制性截图:

  

“在这里输入的图像描述”

这是我的第一篇文章在这里,我不知道如何使一个观察,爱德华多的答案,使“(”和“{”看unmached和错误语法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

在一个解决方案是使用内置CTAGS数据库。因此,创建一个与 CTAGS 效用。然后设置“标签”变量,并把以下的

~/.vim/after/syntax/c.vim

function! s:highlight()
    let list = taglist('.*')

    for item in list
        let kind = item.kind

        if kind == 'f' || kind == 'c'
            let name = item.name
            exec 'syntax keyword Identifier '.name
        endif
    endfor
endfunction

call s:highlight()

我必须提醒你,这可以工作了很大的ctags数据库的速度很慢。

也有是上vim.org但我一个溶液没有尝试这一个。让我知道它是否适合你。

编辑:color_coded 对你来说可能太重了。尝试 octol/vim-cpp-增强高亮. 。它支持 C++11/14 并集成了 @Eduardo 的答案。

语义学 基于荧光笔:
我会推荐 jeaye/颜色编码, 基于 libclang 高亮的 vim 插件
很抱歉,我是 stackoverflow 的新手,这意味着我没有足够的声誉来发布图像。如果你想尝试的话就去看看它的效果吧。:)

优点:

  • 简易安装
  • 语义突出显示
  • 上面提到的Clighter,需要用vim编译 python2.7。不过,color_coded 是用 C 编写的,并提供 lua 绑定 -> 。 C .

缺点:

  • 除非你创建一些 vim 事件来激活它,否则它会延迟。
  • 定制有点困难;您需要编辑 syntax/color_coded.vim 你自己但定制已被列入其路线图。

尽管它仍在开发中,但它越来越受到关注。

before after

塞吉,从改变第一线

syn match    cCustomParen    "(" contains=cParen,cCppParen

syn match    cCustomParen    "(" contains=cParen contains=cCppParen

似乎帮我。

使用一个插件,用来VIM如标记表或设置ctagscscope积分用vim (这里,在VIM / cscope的教程。)

尝试使用这个插件 http://www.vim.org/scripts /script.php?script_id=2646 它做所有的ctags非常有效地突出你

我真的建议你taghighlight插件,请点击这里它的网站。

Clighter 插件也可以考虑,这是一个

plugin for c-family semantic source code highlighting, based on Clang

然而,需要相当新的版本和软件:vim 7.4.330 +python2libclang

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top