突出显示选定单词的所有匹配项?
如何在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一致。
- 将这些行添加到
~/.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>
- 重新加载设置
:so%
-
在正常的模型中,检查一下。
-
按*按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!
)它会在下次按正常模式下的*或者#时突出显示。
干杯