【问题标题】:Highlight the word under cursor in gvim在gvim中突出显示光标下的单词
【发布时间】:2015-10-21 16:56:12
【问题描述】:

如何在 vim 中突出显示光标下的单词。 目前我通过获取光标下的单词然后按*来做到这一点。 当然,这确实会突出显示文本,但光标会移动到文件中找到的下一个单词(如果该单词多次存在)。但是,我希望光标停留在同一个单词上,同时突出显示它。

【问题讨论】:

    标签: vim highlight


    【解决方案1】:

    您可以尝试Mark plugin,因为它允许同时以不同颜色突出显示多个单词。它非常稳定、有据可查且易于使用。

    可以直接或通过正则表达式选择要突出显示的单词,并且该插件提供了一些机制来在标记的单词/表达式的出现之间跳转。

    【讨论】:

    • 太棒了!我想这正是我想要的。目前,我办公室的网络管理员阻止我下载该插件。获得下载权限后,我将尝试该插件。谢谢!
    • 该链接中的插件在哪里下载?我点击了下载(左侧为绿色),但它看起来像 vim 可执行文件。
    • 如果向下滚动,您将看到带有包链接的版本列表 (*.vmb.gz) - 最新的是 2.8.5。你也可以clone the repo in the github
    【解决方案2】:

    假设您有hlsearch -- 鉴于您对 * 命令的描述,我很确定您这样做了 -- 您可以创建一个设置搜索寄存器的映射:

    nnoremap <leader>* :<C-u>let @/ = expand('<cword>')<cr> 
    

    使用您的映射后,您可以像任何其他搜索一样使用 n/N 跳转到下一个/上一个结果。

    编辑:

    既然你让我描述映射在做什么,我会分解它。

    • nnoremap 表示创建非递归映射。
    • &lt;leader&gt;* 是映射的键序列。默认情况下,&lt;leader&gt;\,因此实际映射是 \ 后跟 *。您可以将其更改为您想要的任何内容,我只是以它为例。
    • :&lt;C-u&gt; 在这种情况下可能没有用,但我发现这是一个好习惯。它的作用是保证您将要运行的命令没有添加范围。
    • let @/ = 正在设置/(搜索)寄存器。当您进行正常搜索时,这是存储最后搜索的字符串的位置。我们通过映射来处理这一点,以利用内置的 hlsearchn/N 功能。
    • expand('&lt;cword&gt;') 正在抓取光标下的单词。
    • &lt;cr&gt; 只是模拟您按下 Enter 以实际完成命令。

    【讨论】:

    • 我不懂映射。我对vim很陌生。你能解释一下吗?
    • 它不工作。我不确定我是否正确映射了它。我刚刚输入了这个并按下了 enter nnoremap /* :let @/ = expand('')
    • 复制并粘贴它,就像它所写的一样。 &lt;&gt;s 中的字符串由 vim 解释,它们不是占位符。
    • 好的。我这样做了。然后我按 * 突出显示光标下的单词。但是,光标移动到下一个找到的单词。
    • "By default &lt;leader&gt; is /" -- 我想你的意思是\(反斜杠)
    【解决方案3】:

    我添加了这个功能,它允许您通过按&lt;leader&gt; 1-6切换最多6个不同颜色的单词突出显示,&lt;leader&gt; -0将清除所有突出显示。

    https://github.com/sk1418/myConf/blob/master/common/.vimrc#L729

    最初的想法来自 sjl。

    【讨论】:

    • 如何给vim添加一个函数?对不起,我是 vim 新手。
    • @SagarJain 你可以做我所做的,将函数添加到你的 vimrc 文件中。
    【解决方案4】:

    我在 .vimrc 中这样做了,它使用 F3 突出显示光标下的单词:

    nmap &lt;F3&gt; /&lt;c-r&gt;=expand("&lt;cword&gt;")&lt;CR&gt;&lt;CR&gt;N

    'N' 将返回到最后一个位置

    【讨论】:

    • 这基本上是上面 RandyMorris 的回答。可以无限次重新映射来解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 2014-09-12
    • 2021-12-12
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    相关资源
    最近更新 更多