如何在vim中没有光标跳转的情况下获得匹配的大括号突出显示

rhu*_*ler 2 vim editor

我在多台机器上运行 vim 7.3。默认情况下,我的所有实例都启用了 MatchParen。在我的 Windows 机器上使用 gvim,它完全符合我的要求 - 当我的光标位于括号、括号等上时,它会在视觉上突出显示匹配项。它不影响光标导航。但是,在我的 Ubuntu 机器上,当我将光标移动到字符上时,它实际上会跳转到匹配项。

我确定该行为是由 MatchParens 引起的,因为如果我执行 :NoMatchParen,它就会停止。不幸的是,我当时也没有得到突出显示。不过,我无法弄清楚我的设置在哪里不同。

如果你能指出一个插件,我会更喜欢你,该插件将始终突出显示我当前位置周围最接近的封闭字符对(例如 MatchTagsAlways 的面向代码的版本)

win*_*ute 5

showmatch设置时,光标实际上是在跳跃,下面一行修复了问题:

set matchtime=0
Run Code Online (Sandbox Code Playgroud)

更多细节: http ://vimdoc.sourceforge.net/htmldoc/options.html#'matchtime'

  • 我找到这个页面是因为我在 html 文件中编辑内联 javascript 时遇到了这个光标跳转。这解决了我的问题,并且在每次关闭大括号后我不再有第二长的延迟。但是,在阅读其他答案并进行了一些调查后,我发现从我的 `.vimrc` 中删除 `set showmatch` 具有相同的效果。因此,对于有效的答案,+1,但还有其他选择。 (2认同)

Rom*_*ent 5

就像 FDinoff 在接受的答案中所说的那样,这可能只是颜色问题。

因此,如果匹配的“paren”的颜色让您迷失方向,调整背景和前景的颜色可能是解决方案。

但是你怎么做呢??^^

我已经通过vimdoc进行了相当长的旅程(这并不容易)。我测试了一大堆变量,发现相关的调整是[hi]ghlight 命令,特别是MatchParen组。

解决方案

在我的 .vimrc 中添加这个可以解决问题:

hi MatchParen ctermfg=208 ctermbg=bg
Run Code Online (Sandbox Code Playgroud)

请注意,vim 配置文件是从上到下读取的,某些类型的“单词”由多个选项匹配。例如,布尔值也可以是关键字。因此,您必须注意这些选项的顺序。

这是如何运作的?

我的问题是背景有华丽的颜色,而前景有我的终端背景的颜色,这使得它真的很混乱。因此切换颜色是的解决方案。但也许你将不得不以不同的方式调整它。

首先,您可以通过输入以下命令来检查高亮 MatchParen 的当前值(在 vim 中,在正常模式下):

:hi MatchParen
Run Code Online (Sandbox Code Playgroud)

您将在当前样式中看到hi MatchParen后跟XXX,后跟argument=value由空格分隔的列表。

最重要的参数是ctermfgctermbg为“终端” VIM,guifgguibg为“鬼” VIM。(其中 fg 表示前景,bg 表示背景)

您可以更改一个值并实时查看结果。只需将光标放在匹配字符上并输入以下命令:

:hi MatchParen SomeArgument=SomeValue
Run Code Online (Sandbox Code Playgroud)

这不会被保存,所以不用担心。当您找到合适的值组合时,您可以将它们添加到您的 .vimrc 中,如上所示。

就个人而言,我设置ctermfg208(orange color) 和ctermbgto bg(当前背景颜色的关键字,如果 vim 知道的话)。
如果您在 gui 中使用 vim,请查看此处以了解可用的颜色选择。