在 gvim 中突出显示光标下的单词

Highlight the word under cursor in gvim

如何在 vim 中突出显示光标下的单词。 目前,我通过将单词置于光标下然后按 * 来完成此操作。 当然,这确实会突出显示文本,但光标会移动到文件中找到的下一个单词(如果该单词存在不止一次)。但是,我希望光标停留在同一个词上,同时突出显示它。

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

可以 select 直接或通过正则表达式突出显示一个词,插件提供了一些机制来在标记 word/expression 的出现之间跳转。

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

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

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

编辑:

既然你要我描述映射的作用,我就把它分解一下。

  • nnoremap 说要创建一个非递归映射。
  • <leader>* 是映射的键序列。默认情况下 <leader>\ 所以实际映射是 \ 后跟 *。你可以把它改成任何你想要的,我只是举个例子。
  • :<C-u> 在这种情况下可能没有用,但我发现这是一个好习惯。它所做的是保证没有范围添加到您即将 运行.
  • 的命令中
  • let @/ = 正在设置 /(搜索)寄存器。当您进行正常搜索时,这是存储最后搜索到的字符串的位置。我们正在使用我们的映射来操纵它,以利用内置的 hlsearchn/N 功能。
  • expand('<cword>')正在抓取光标下的单词。
  • <cr> 只是模拟您按 Enter 实际完成命令。

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

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

最初的想法来自sjl。

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

nmap <F3> /<c-r>=expand("<cword>")<CR><CR>N

'N' 将 return 到最后一个位置