【问题标题】:How to get matching brace highlighting without cursor jump in vim如何在vim中没有光标跳转的情况下获得匹配的大括号突出显示
【发布时间】:2015-03-25 18:16:01
【问题描述】:

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

我确定该行为是由 MatchParens 引起的,因为如果我执行 :NoMatchParen,它就会停止。不幸的是,我当时也没有得到突出显示。不过,我不知道我的设置有什么不同。

如果你能给我指点一个插件,我会更喜欢你

【问题讨论】:

  • 光标没有跳跃。您可能选择了错误的颜色。
  • 检查:设置比赛时间?光标确实会跳转到下一个匹配的括号,但只停留了十分之几秒,然后它应该会返回。
  • @FDinoff - 我看到其他人在回答类似问题时这么说,而且(有时)显然是不真实的。我曾经遇到过在移动到开始括号后进入插入模式并让它出现在结束括号之后的情况。当然,现在我试图复制这种行为,我不能。 matchtime=5 在两种环境中。你说得对,颜色不好,但它看起来像匹配的东西是集中的。
  • 嗯,这是默认值。也许这只是一个错误。或者其他干扰。在这种情况下,使用 -u NONE 选项启动 vim 很有用。
  • @rhuffstedtler 我以前错了。但是,默认配置不应该有。如果你的配置有它,这意味着你把它放进去,你应该知道你把那个设置放进去。(如果你没有把它放在它是如何到达那里的)。无论如何,如果它真的在跳跃,我很想看看是什么原因造成的。

标签: vim editor


【解决方案1】:

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

set matchtime=0

更多详情: http://vimdoc.sourceforge.net/htmldoc/options.html#'比赛时间'

【讨论】:

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

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

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

但是你是怎么做到的呢? ^^

我在vimdoc 经历了一段漫长的旅程(这并不容易)。 我测试了一大堆变量,发现相关的调整是 [hi]ghlight command ,特别是 MatchParen 组。

解决方案

在我的 .vimrc 中添加这个就可以了:

hi MatchParen ctermfg=208 ctermbg=bg

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

这是如何工作的?

我的问题是背景颜色很艳丽,而前景颜色与我的终端背景颜色相同,这让我很困惑。因此,切换颜色是对我来说的解决方案。但也许您将不得不对其进行不同的调整。

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

:hi MatchParen

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

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

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

:hi MatchParen SomeArgument=SomeValue

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

就我个人而言,我将ctermfg 设置为208(橙色)和ctermbg 设置为bg(当前背景颜色的关键字,如果vim 知道的话)。
如果您在 gui 中使用 vim,请查看 here 以了解可用的颜色选择。

【讨论】:

    【解决方案3】:

    光标没有跳跃。配色方案可能为 MatchParen 高亮组定义了不好的颜色,这使它看起来像光标在跳跃。

    【讨论】:

      【解决方案4】:

      openSUSE 13.2 Legacy 32 Bit:set showmatch? 中运行默认gVim (v7.4.461) 而没有任何配置(即没有.vim 文件)表明showmatch 在启动时处于打开状态,而不是Vim's stated default behaviour。我们可以通过在我们的.vimrc 中添加:set noshowmatch 来解决这个问题。

      【讨论】:

        猜你喜欢
        • 2010-09-18
        • 2020-08-25
        • 2015-08-21
        • 1970-01-01
        • 1970-01-01
        • 2014-05-01
        • 1970-01-01
        • 2021-10-05
        • 2016-05-06
        相关资源
        最近更新 更多