用于c+的vim中的大括号和运算符着色+;? 我想在C++中为VIM定制一个语法着色。但是,不幸的是,对于c/c++/objc/objcpp,我仍然找不到大括号(){}[]和运算符+-/*%的正确名称。任何一位vim大师都可以建议我必须“hi”什么名字才能为所提到的项目设置颜色?
我认为,在vim中,大括号没有默认的高亮显示,作为C代码或派生语言的标准(它们只是以纯文本的形式高亮显示)。您可以使用以下内容定义自己的:用于c+的vim中的大括号和运算符着色+;? 我想在C++中为VIM定制一个语法着色。但是,不幸的是,对于c/c++/objc/objcpp,我仍然找不到大括号(){}[]和运算符+-/*%的正确名称。任何一位vim大师都可以建议我必须“hi”什么名字才能为所提到的项目设置颜色?,vim,syntax-highlighting,Vim,Syntax Highlighting,我认为,在vim中,大括号没有默认的高亮显示,作为C代码或派生语言的标准(它们只是以纯文本的形式高亮显示)。您可以使用以下内容定义自己的: :syn match Braces display '[{}()\[\]]' :hi Braces guifg=red 或者您可以下载,它为不同级别的缩进提供不同的颜色。另见我对这一问题的答复 有一个彩虹支架荧光灯的屏幕截图(与我的配色方案) 编辑: 为了找出您感兴趣的任何内容的突出显示组,请创建以下映射: :map <F3> :echo "h
:syn match Braces display '[{}()\[\]]'
:hi Braces guifg=red
或者您可以下载,它为不同级别的缩进提供不同的颜色。另见我对这一问题的答复
有一个彩虹支架荧光灯的屏幕截图(与我的配色方案)
编辑:
为了找出您感兴趣的任何内容的突出显示组,请创建以下映射:
:map <F3> :echo "hi<" . synIDattr(synID(line("."),col("."),1),"name") . '> trans<' . synIDattr(synID(line("."),col("."),0),"name") . "> lo<" . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">"<CR>
它告诉您突出显示组被称为cConditional
,并且它被链接(使用:hi link
)到名为Conditional
的组。使用彩虹大括号高亮显示时,您可能会得到类似于cCurly1
,这意味着它位于一个卷曲大括号内,但没有额外的高亮显示
编辑2:
可能的操作员匹配器(未经过良好测试):
让cOperatorList='[-&|+=*/!~]'”一个符号列表,我们不想立即在运算符前面
让cOperatorList.='\@>。。。
让cOperatorList.='='”后跟=,so=。
让cOperatorList.='\)'“结束一长串选项
让cOperatorList.='[-&|+=*/!~]'”列出我们不想遵循的符号列表
让cOperatorList.='\@!'“消极前瞻(这和\@首先,让彩虹颜色与c、cpp或任何你想要的语言一起工作。下载页面对此进行了解释。”,
然后将插件复制到一个新的.vim
然后vim new.vim并将所有(and)分别更改为{和},
和保存。
现在重做让它与c一起工作,…(无论是什么语言)部分,但是这次将名称更改为new.vim(或者你叫它什么!!),这对我来说很有效
“[”类似改进我的彩虹括号叉(它也处理运算符):
@pepper\u chico提到了rainbow插件。现在有很多叉子可以使用。我发现最好的就是这个。它正在积极开发。它适用于许多文件类型,而不仅仅是cpp
这里我将介绍Vundle的安装,请参阅链接了解其他安装方式。
此版本的Vundle插件安装行是
Plugin 'luochen1990/rainbow'
然后将以下命令传递给vim进行安装
:so %
:PluginInstall
在此之后,您可以将其添加到.vimrc中进行进一步配置
let g:rainbow_active = 1 "0 if you want to enable it later via :RainbowToggle
let g:rainbow_conf = {
\ 'guifgs': ['royalblue3', 'darkorange3', 'seagreen3', 'firebrick'],
\ 'ctermfgs': ['lightblue', 'lightyellow', 'lightcyan', 'lightmagenta'],
\ 'operators': '_,\|=\|+\|\*\|-\|\.\|;\||\|&\|?\|:\|<\|>\|%\|/[^/]_',
\ 'parentheses': ['start=/(/ end=/)/ fold', 'start=/\[/ end=/\]/ fold', 'start=/{/ end=/}/ fold'],
\ 'separately': {
\ '*': {},
\ 'tex': {
\ 'parentheses': ['start=/(/ end=/)/', 'start=/\[/ end=/\]/'],
\ },
\ 'lisp': {
\ 'guifgs': ['royalblue3', 'darkorange3', 'seagreen3', 'firebrick', 'darkorchid3'],
\ },
\ 'vim': {
\ 'parentheses': ['start=/(/ end=/)/', 'start=/\[/ end=/\]/', 'start=/{/ end=/}/ fold', 'start=/(/ end=/)/ containedin=vimFuncBody', 'start=/\[/ end=/\]/ containedin=vimFuncBody', 'start=/{/ end=/}/ fold containedin=vimFuncBody'],
\ },
\ 'html': {
\ 'parentheses': ['start=/\v\<((area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)[ >])@!\z([-_:a-zA-Z0-9]+)(\s+[-_:a-zA-Z0-9]+(\=("[^"]*"|'."'".'[^'."'".']*'."'".'|[^ '."'".'"><=`]*))?)*\>/ end=#</\z1># fold'],
\ },
\ 'css': 0,
\ }
\}
如果您想稍后通过:RainbowToggle启用,请将g:rainbow\u active设置为1“0
设g:rainbow_conf={
\'guifgs':['royalblue3','darkorange3','seagreen3','firebrick'],
\'ctermfgs':['lightblue','lightyellow','lightcyan','lightmagenta'],
\“运算符”:“\,\ \ \ \ \ \ \=\ \+\ \*\ \-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \**\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \,
\'括号':['start=/(/end=/)/fold','start=/\[/end=/\]/fold','start=/{/end=/}/fold'],
\“分别地”:{
\ '*': {},
\“特克斯”:{
\'括号':['start=/(/end=/)/','start=/\[/end=/\]/'],
\ },
\“口齿不清”:{
\'guifgs':['royalblue3','darkorange3','seagreen3','firebrick','Darkoranchid3'],
\ },
\“维姆”:{
\'括号':['start=/(/end=/)/','start=/\[/end=/\]/','start=/{/end=/}/fold','start=/(/end=/)/containedin=vimFuncBody','start=/\[/end=/\]/containedin=vimFuncBody','start=/{/end=/}/fold containedin=vimFuncBody'],
\ },
\“html”:{
\‘括号’:['start=/\v\]@!\z([-[uU2:a-zA-Z0-9]+)(\s+[-[uU2:a-zA-Z0-9]+(\=(“[^”]*“|”。“[^.”“]*”。““'.[^.”>/end=.[35;#折叠”],
\ },
\“css”:0,
\ }
\}
请注意上面的operators字段与我提供的链接中的config字段之间的差异。链接中提供的advanced config仅突出显示逗号,
,我已对其进行编辑以包含更多运算符。根据您的喜好编辑该行以添加更多运算符。结果如下:
感谢大括号,很高兴知道它们没有突出显示,我也不需要通过c.vim:)进行破解。那么+-/*%^等操作符呢?大多数操作符在默认情况下似乎不会突出显示。我添加了一个简单的描述(一旦定义了映射)查找光标下关键字或符号的突出显示组的方法。这就是我找到问题答案的方式…如果要突出显示运算符,可以使用类似的“:syn match”行:syn match Operator display“[+-/*%^]”我添加了一个相当复杂的运算符匹配脚本。这并不简单(这可能并不完全正确)但它应该匹配一些东西,比如保存大括号高亮显示,我必须在我的.vimrc文件中放置au BufRead,BufNewFile*syn match大括号显示“[{}()\[\]]”
,在我的colorscheme文件中放置hi Braces guifg=red
。我认为在.vimrc文件中也可以同时放置这两个大括号。这个插件是daycent。
let cOperatorList = '[-&|+<>=*/!~]' " A list of symbols that we don't want to immediately precede the operator
let cOperatorList .= '\@<!' " Negative look-behind (check that the preceding symbols aren't there)
let cOperatorList .= '\%(' " Beginning of a list of possible operators
let cOperatorList .= '\(' " First option, the following symbols...
let cOperatorList .= '[-&|+<>=]'
let cOperatorList .= '\)'
let cOperatorList .= '\1\?' " Followed by (optionally) the exact same symbol, so -, --, =, ==, &, && etc
let cOperatorList .= '\|' " Next option:
let cOperatorList .= '->' " Pointer dereference operator
let cOperatorList .= '\|' " Next option:
let cOperatorList .= '[-+*/%&^|!]=' " One of the listed symbols followed by an =, e.g. +=, -=, &= etc
let cOperatorList .= '\|' " Next option:
let cOperatorList .= '[*?,!~%]' " Some simple single character operators
let cOperatorList .= '\|' " Next option:
let cOperatorList .= '\(' " One of the shift characters:
let cOperatorList .= '[<>]'
let cOperatorList .= '\)'
let cOperatorList .= '\2' " Followed by another identical character, so << or >>...
let cOperatorList .= '=' " Followed by =, so <<= or >>=.
let cOperatorList .= '\)' " End of the long list of options
let cOperatorList .= '[-&|+<>=*/!~]' " The list of symbols that we don't want to follow
let cOperatorList .= '\@!' " Negative look-ahead (this and the \@<! prevent === etc from matching)
exe "syn match cOperator display '" . cOperatorList . "'"
syn match cOperator display ';'
hi link cOperator Operator
Plugin 'luochen1990/rainbow'
:so %
:PluginInstall
let g:rainbow_active = 1 "0 if you want to enable it later via :RainbowToggle
let g:rainbow_conf = {
\ 'guifgs': ['royalblue3', 'darkorange3', 'seagreen3', 'firebrick'],
\ 'ctermfgs': ['lightblue', 'lightyellow', 'lightcyan', 'lightmagenta'],
\ 'operators': '_,\|=\|+\|\*\|-\|\.\|;\||\|&\|?\|:\|<\|>\|%\|/[^/]_',
\ 'parentheses': ['start=/(/ end=/)/ fold', 'start=/\[/ end=/\]/ fold', 'start=/{/ end=/}/ fold'],
\ 'separately': {
\ '*': {},
\ 'tex': {
\ 'parentheses': ['start=/(/ end=/)/', 'start=/\[/ end=/\]/'],
\ },
\ 'lisp': {
\ 'guifgs': ['royalblue3', 'darkorange3', 'seagreen3', 'firebrick', 'darkorchid3'],
\ },
\ 'vim': {
\ 'parentheses': ['start=/(/ end=/)/', 'start=/\[/ end=/\]/', 'start=/{/ end=/}/ fold', 'start=/(/ end=/)/ containedin=vimFuncBody', 'start=/\[/ end=/\]/ containedin=vimFuncBody', 'start=/{/ end=/}/ fold containedin=vimFuncBody'],
\ },
\ 'html': {
\ 'parentheses': ['start=/\v\<((area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)[ >])@!\z([-_:a-zA-Z0-9]+)(\s+[-_:a-zA-Z0-9]+(\=("[^"]*"|'."'".'[^'."'".']*'."'".'|[^ '."'".'"><=`]*))?)*\>/ end=#</\z1># fold'],
\ },
\ 'css': 0,
\ }
\}