突出显示选定单词的所有匹配项?

如何在GVim中突出显示所选单词的所有出现位置,如Notepad ++中?

在正常模式下:

:set hlsearch 

然后使用命令/在正常模式下search模式,或在插入模式下按<Ctrl>o然后按/*在正常模式下将search光标下的单词的下一个出现。 hlsearch选项将突出显示所有这些设置。 #将search以前的单词出现。

要删除以前的search的高亮显示:

 :nohlsearch 

您可能希望将:nohlsearch<CR>映射到一些方便的键。

*键将突出显示所有出现在光标下的单词。

我知道这是一个非常古老的问题,但如果有人对这个function感兴趣,可以查看http://vim.wikia.com/wiki/Auto_highlight_current_word_when_idle

 " Highlight all instances of word under cursor, when idle. " Useful when studying strange source code. " Type z/ to toggle highlighting on/off. nnoremap z/ :if AutoHighlightToggle()<Bar>set hls<Bar>endif<CR> function! AutoHighlightToggle() let @/ = '' if exists('#auto_highlight') au! auto_highlight augroup! auto_highlight setl updatetime=4000 echo 'Highlight current word: off' return 0 else augroup auto_highlight au! au CursorHold * let @/ = '\V\<'.escape(expand('<cword>'), '\').'\>' augroup end setl updatetime=500 echo 'Highlight current word: ON' return 1 endif endfunction 

最简单的方法,input正常模式*

基于search的解决scheme( */ …)移动光标,这可能是不幸的。

另一种方法是使用增强的mark.vim插件,然后完成.vimrc让双击触发器突出显示(我不知道键盘select如何触发命令):

 "Use Mark plugin to highlight selected word map <2-leftmouse> \m 

它允许多个突出显示,持久性等

要删除突出显示,可以:

  • 再次双击
  • :Mark (closures,直到下一个select)
  • :MarkClear

首先(或在您的.vimrc):

 :set hlsearch 

然后将光标定位在要突出显示的单词上,然后按*

hlsearch表示突出显示当前search的所有事件, *表示search光标下的单词。

 set hlsearch 

也许 ?

启用search高亮显示:

 :set hlsearch 

然后search单词:

 /word<Enter> 

首先确保通过发出以下命令来启用hlsearch

 :set hlsearch 

您也可以将其添加到您的.vimrc文件中

 set hlsearch 

现在,当您在命令模式或常规search命令中使用快速search机制时,所有结果都将突出显示。 要在结果之间前进,请按'n'向后移动按'N'

在正常模式下,要快速search光标下的单词,并在一个命令中跳转到下一个出现的地方,按'*',您还可以search光标下的单词,并按'# “

在正常模式下,快速search也可以用

 /searchterm<Enter> 

删除使用Ocuurences高光,我已经绑定到我的.vimrc中的快捷方式

 :nohl 

我最喜欢做的是mark.vim插件。 它允许同时突出显示不同颜色的几个单词。

示例屏幕截图

为什么不只是:z /

这将突出显示光标下的当前单词和任何其他事件。 而且,您不必为每个要search的项目分别指定一个命令。 也许这不是邪恶的gvim? 它在默认情况下是vim。

*只有在光标移动到下一个出现的位置时才有效。 当直观地比较两件事情时,你通常不希望光标移动,而且每次都按*键是很烦人的。

使用autocmd CursorMoved * exe printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\'))

确保你有IncSearch设置的东西。 例如call s:Attr('IncSearch', 'reverse') 。 或者,您可以在其位置使用另一个高亮组。

这将突出显示光标下的所有单词,而不会延迟。 我发现,当我通过代码浏览的时候,延迟会减慢我的速度。 高亮颜色将匹配单词的颜色,所以它保持与您的scheme一致。

  1. 将这些行添加到~/.vimrc文件中

" highlight the searched items set hlsearch " F8 search for word under the cursor recursively , :copen , to close -> :ccl nnoremap <F8> :grep! "\<<cword>\>" . -r<CR>:copen 33<CR>

  1. 重新加载设置:so%
  2. 在正常的模型中,检查一下。

  3. 按*按F8search整个项目recursionsearch单词

突出单词而不移动光标,扑通

 " highlight reg. ex. in @/ register set hlsearch " remap `*`/`#` to search forwards/backwards (resp.) " w/o moving cursor nnoremap <silent> * :execute "normal! *N"<cr> nnoremap <silent> # :execute "normal! #n"<cr> 

进入你的vimrc。

g*g#仍然可以像“普通” *#


要设置hlsearch ,你可以使用“short-form”(除非在命令模式下有另一个以“noh”开头的函数) :noh 。 或者你可以使用长版本:nohlsearch

为了极大的方便(我发现自己每天可以切换20次hlsearch ),您可以映射某些内容来切换hlsearch如下所示:

 " search highlight toggle nnoremap <silent> <leader>st :set hlsearch!<cr> 

:。 如果您的<leader>\ (默认情况下),您可以在正常模式下按(快速)切换hlsearch

或者,也许你只是想有:noh映射:

 " search clear nnoremap <silent> <leader>sc :nohlsearch<cr> 

以上只是运行:nohlsearch所以(不像:set hlsearch! )它会在下次按正常模式下的*或者时突出显示。

干杯