vim 如何在没有光标跳转的情况下获得匹配的大括号突出显示
How to get matching brace highlighting without cursor jump in vim
我是 运行 vim 几台机器上的 7.3。默认情况下,我的所有实例都启用了 MatchParen。在我的 windows 机器上使用 gvim,它正在做我想要的——当我的光标在括号、paren 等上时,它在视觉上突出显示匹配项。它不影响光标导航。但是,在我的 Ubuntu 框中,当我将光标移动到字符上时,它实际上跳转到了匹配项。
我确定该行为是由 MatchParens 引起的,因为如果我执行 :NoMatchParen,它就会停止。不幸的是,那时我也没有突出显示。不过,我不知道我的设置在哪里不同。
如果你能给我一个插件,我会更喜欢你,它总是突出显示我当前位置周围最接近的封闭字符对(比如 MatchTagsAlways 的代码导向版本)
光标没有跳动。配色方案可能为 MatchParen
高亮组定义了错误的颜色,这使得它看起来像光标在跳跃。
运行 默认 gVim
(v7.4.461) 在 openSUSE 13.2 Legacy 32 Bit
、:set showmatch?
中没有任何配置(即没有 .vim
文件)表明 showmatch
在开始时打开,而不是 Vim's stated default behaviour。我们可以通过在 .vimrc
.
中添加 :set noshowmatch
来解决这个问题
当设置showmatch
时,光标实际上在跳动,下面一行修复了这个问题:
set matchtime=0
更多详情:
http://vimdoc.sourceforge.net/htmldoc/options.html#'matchtime'
就像FDinoff在接受的答案中所说的,这可能只是颜色的问题。
因此,如果匹配的“paren”的颜色让您迷惑,调整背景和前景的颜色可能是解决方案。
但是你是怎么做到的?? ^^
我经历了一段 vimdoc 的旅程(这并不容易)。
我测试了一大堆变量,发现相关的调整是 [hi]ghlight
command,特别是 MatchParen
组。
解决方法
在我的 .vimrc 中添加这个就成功了:
hi MatchParen ctermfg=208 ctermbg=bg
请注意,vim 配置文件是从上到下读取的,某些类型的“单词”由多个选项匹配。例如,布尔值也可以是关键字。因此,您必须注意这些选项的顺序。
这是如何工作的?
我的问题是背景的颜色太艳丽,而前景的颜色和我终端的背景颜色一样,这让我很困惑。因此,切换颜色是解决方案 对我来说 。但也许您需要进行不同的调整。
首先,您可以通过输入以下命令(在 vim 内,在正常模式下)检查突出显示 MatchParen 的当前值:
:hi MatchParen
在当前样式中,您会看到 hi MatchParen
后跟 XXX
,然后是用空格分隔的 argument=value
列表。
“终端”的重要参数是 ctermfg
和 ctermbg
vim,“gui”的重要参数是 guifg
和 guibg
vim. (其中 fg 表示前景,bg 表示背景)
您可以更改一个值并实时查看结果。只需将光标放在匹配字符上并输入以下命令:
:hi MatchParen SomeArgument=SomeValue
这不会被保存,所以不用担心。当您找到合适的值组合时,您可以将它们添加到您的 .vimrc 中,如上所示。
就个人而言,我将 ctermfg
设置为 208
(橙色),将 ctermbg
设置为 bg
(当前背景颜色的关键字,如果 vim).
如果您在 gui 中使用 vim,请查看 here 以了解可用的颜色选择。
我是 运行 vim 几台机器上的 7.3。默认情况下,我的所有实例都启用了 MatchParen。在我的 windows 机器上使用 gvim,它正在做我想要的——当我的光标在括号、paren 等上时,它在视觉上突出显示匹配项。它不影响光标导航。但是,在我的 Ubuntu 框中,当我将光标移动到字符上时,它实际上跳转到了匹配项。
我确定该行为是由 MatchParens 引起的,因为如果我执行 :NoMatchParen,它就会停止。不幸的是,那时我也没有突出显示。不过,我不知道我的设置在哪里不同。
如果你能给我一个插件,我会更喜欢你,它总是突出显示我当前位置周围最接近的封闭字符对(比如 MatchTagsAlways 的代码导向版本)
光标没有跳动。配色方案可能为 MatchParen
高亮组定义了错误的颜色,这使得它看起来像光标在跳跃。
运行 默认 gVim
(v7.4.461) 在 openSUSE 13.2 Legacy 32 Bit
、:set showmatch?
中没有任何配置(即没有 .vim
文件)表明 showmatch
在开始时打开,而不是 Vim's stated default behaviour。我们可以通过在 .vimrc
.
:set noshowmatch
来解决这个问题
当设置showmatch
时,光标实际上在跳动,下面一行修复了这个问题:
set matchtime=0
更多详情: http://vimdoc.sourceforge.net/htmldoc/options.html#'matchtime'
就像FDinoff在接受的答案中所说的,这可能只是颜色的问题。
因此,如果匹配的“paren”的颜色让您迷惑,调整背景和前景的颜色可能是解决方案。
但是你是怎么做到的?? ^^
我经历了一段 vimdoc 的旅程(这并不容易)。
我测试了一大堆变量,发现相关的调整是 [hi]ghlight
command,特别是 MatchParen
组。
解决方法
在我的 .vimrc 中添加这个就成功了:
hi MatchParen ctermfg=208 ctermbg=bg
请注意,vim 配置文件是从上到下读取的,某些类型的“单词”由多个选项匹配。例如,布尔值也可以是关键字。因此,您必须注意这些选项的顺序。
这是如何工作的?
我的问题是背景的颜色太艳丽,而前景的颜色和我终端的背景颜色一样,这让我很困惑。因此,切换颜色是解决方案 对我来说 。但也许您需要进行不同的调整。
首先,您可以通过输入以下命令(在 vim 内,在正常模式下)检查突出显示 MatchParen 的当前值:
:hi MatchParen
在当前样式中,您会看到 hi MatchParen
后跟 XXX
,然后是用空格分隔的 argument=value
列表。
“终端”的重要参数是 ctermfg
和 ctermbg
vim,“gui”的重要参数是 guifg
和 guibg
vim. (其中 fg 表示前景,bg 表示背景)
您可以更改一个值并实时查看结果。只需将光标放在匹配字符上并输入以下命令:
:hi MatchParen SomeArgument=SomeValue
这不会被保存,所以不用担心。当您找到合适的值组合时,您可以将它们添加到您的 .vimrc 中,如上所示。
就个人而言,我将 ctermfg
设置为 208
(橙色),将 ctermbg
设置为 bg
(当前背景颜色的关键字,如果 vim).
如果您在 gui 中使用 vim,请查看 here 以了解可用的颜色选择。