Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于c+的vim中的大括号和运算符着色+;? 我想在C++中为VIM定制一个语法着色。但是,不幸的是,对于c/c++/objc/objcpp,我仍然找不到大括号(){}[]和运算符+-/*%的正确名称。任何一位vim大师都可以建议我必须“hi”什么名字才能为所提到的项目设置颜色?_Vim_Syntax Highlighting - Fatal编程技术网

用于c+的vim中的大括号和运算符着色+;? 我想在C++中为VIM定制一个语法着色。但是,不幸的是,对于c/c++/objc/objcpp,我仍然找不到大括号(){}[]和运算符+-/*%的正确名称。任何一位vim大师都可以建议我必须“hi”什么名字才能为所提到的项目设置颜色?

用于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

我认为,在vim中,大括号没有默认的高亮显示,作为C代码或派生语言的标准(它们只是以纯文本的形式高亮显示)。您可以使用以下内容定义自己的:

: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,
\   }
\}