如何在双击时突出显示vim中出现的所有单词

如何在双击时突出显示vim中出现的所有单词,vim,highlighting,Vim,Highlighting,在Windows上,我使用notepad++,在Linux上,我使用vim。我真的很喜欢维姆。但我发现记事本++中至少有一件事非常有趣。您可以双击一个单词,它会自动高亮显示该单词出现的所有内容。我在想我能不能用vim做点类似的事?所以问题是,当你在vim中双击一个单词时,如何突出显示所有出现的单词 显然,我不想搜索那个词,也不想改变光标位置,只想突出显示。My:set-hlsearch也处于启用状态 可能您希望避免vim中的鼠标,但我在这里破例:) 我知道,*做同样的工作,但是鼠标呢?您可以通过

在Windows上,我使用notepad++,在Linux上,我使用vim。我真的很喜欢维姆。但我发现记事本++中至少有一件事非常有趣。您可以双击一个单词,它会自动高亮显示该单词出现的所有内容。我在想我能不能用vim做点类似的事?所以问题是,当你在vim中双击一个单词时,如何突出显示所有出现的单词

显然,我不想搜索那个词,也不想改变光标位置,只想突出显示。My
:set-hlsearch
也处于启用状态

可能您希望避免vim中的鼠标,但我在这里破例:)


我知道,
*
做同样的工作,但是鼠标呢?

您可以通过简单的映射将*映射到双击:

:map <2-LeftMouse> *
:地图*
如果要在插入模式下使用上述功能,可以使用以下映射:

:imap <2-LeftMouse> <c-o>*
:imap*
如果没有(Ctrl-o),则将打印*

[编辑]
正如ZyX所指出的,如果您想确保如果
*
将被映射到其他对象,则最好分别使用
noremap
inoremap
,这样递归映射就不会被扩展,但是不想移动光标,我建议如下:

nnoremap <silent> <2-LeftMouse> :let @/='\V\<'.escape(expand('<cword>'), '\').'\>'<cr>:set hls<cr>
要清除匹配项,只需使用:

:match none

@阿米法尔:我很高兴能帮上忙;)我还学到了*在光标XD下搜索单词这是我喜欢VIM的一个地方:你每天学习一个新的技巧;)您应该使用
noremap
inoremap
。它将使mapping imune重新映射
*
*将光标移动到下一个单词。如果您想将光标保持在当前单词上,请尝试
map*#
@yesp\u是我-这将使光标回到起点-这将实现什么?看不到你的point@serup它将光标保持在您单击的单词上,而不是移动到下一个匹配项。
*
将光标移动到该单词的下一个匹配项。这是我在.vimrc文件中有过的最有用的行之一。非常感谢你!
:match none