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
Regex 在Rust语法中高亮显示匹配的尖括号_Regex_Vim_Rust_Vim Syntax Highlighting - Fatal编程技术网

Regex 在Rust语法中高亮显示匹配的尖括号

Regex 在Rust语法中高亮显示匹配的尖括号,regex,vim,rust,vim-syntax-highlighting,Regex,Vim,Rust,Vim Syntax Highlighting,在尝试修复Rust的vim插件时,我认为可能值得就此获得一些建议 锈有泛型表示,使用角括号( >)类似于C++或java。但是,内部可能会出现箭头(->)。作为一个例子,考虑表达式 Box<Fn(A) -> B> 框B> 当光标位于开始括号上时,vim将突出显示箭头的,而不是结束括号 现在我认为这是因为语法区域匹配没有特殊情况下箭头的可能存在。我试图通过将其定义中的end=/>/更改为end=/-\@/来解决这个问题。但显然,这对括号高亮显示没有影响。现在我开始认为语法区域

在尝试修复Rust的vim插件时,我认为可能值得就此获得一些建议

锈有泛型表示,使用角括号(<代码> >)类似于C++或java。但是,内部可能会出现箭头(

->
)。作为一个例子,考虑表达式

Box<Fn(A) -> B>
框B>
当光标位于开始括号上时,vim将突出显示箭头的
,而不是结束括号

现在我认为这是因为语法区域匹配没有特殊情况下箭头的可能存在。我试图通过将其定义中的
end=/>/
更改为
end=/-\@/
来解决这个问题。但显然,这对括号高亮显示没有影响。现在我开始认为语法区域与此无关


总之,我的问题是:如何更改括号匹配高亮显示的方式?

这实际上是由MatchParen插件(随所有vim安装一起提供)处理的

MatchParen插件使用一个固定的语法属性列表来在搜索匹配括号时忽略(从
$VIMRUNTIME/plugin/MatchParen.vim
的第96行开始)

”当不在字符串或注释中时,忽略其中的匹配项。
我们为特殊物品(如lispEscapeSpecial)匹配“escape”。
让我们跳过'synIDattr(synID(line(“.”),col(“.”,0),“name”)'。
\ '=~?  “字符串\ \字符\ \单引号\ \转义\ \注释”
执行'if's|u skip'|让s|u skip=0 | endif'
s\u skip
随后被传递到
searchpairpos
。似乎没有从插件外部修改
s\u skip

因此,如果将
rustArrow
的所有实例更改为
rustArrow字符
,则括号高亮显示将是正确的。(在
syntax/rust.vim
中有三个实例需要更改,其中两个实例需要更改,另一个实例需要更改
ftplugin/rust.vim
)该检查只检查语法属性中是否出现字符串、字符、单引号、转义符或注释(不区分大小写)。如果它在搜索匹配的括号时跳过它


我建议在vim dev上询问matchparen是否可以修补,以便将自定义语法属性添加到跳过列表中。

感谢您的回答,也感谢Chris创建PR。