如何在 GVim 中突出显示所有出现的选定单词,例如在 Notepad++ 中?
15 回答
在普通模式下:
:set hlsearch
/
然后在普通模式下使用命令搜索模式,或者在插入模式下搜索模式<Ctrl>o
。在普通模式下将搜索光标下单词的下一个出现。如果设置,该选项将突出显示所有这些。将搜索之前出现的单词。/
*
hlsearch
#
要删除先前搜索的突出显示:
:nohlsearch
您可能希望映射:nohlsearch<CR>
到一些方便的键。
该*
键将突出显示光标下所有出现的单词。
我知道这是一个非常老的问题,但是如果有人对此功能感兴趣,可以查看此代码 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
最简单的方法,在普通模式下输入*
我也有这些映射来启用和禁用
"highligh search enabled by default
set hlsearch
"now you can toggle it
nnoremap <S-F11> <ESC>:set hls! hls?<cr>
inoremap <S-F11> <C-o>:set hls! hls?<cr>
vnoremap <S-F11> <ESC>:set hls! hls?<cr> <bar> gv
通过单击它来选择单词
set mouse=a "Enables mouse click
nnoremap <silent> <2-LeftMouse> :let @/='\V\<'.escape(expand('<cword>'), '\').'\>'<cr>:set hls<cr>
奖励:CountWordFunction
fun! CountWordFunction()
try
let l:win_view = winsaveview()
let l:old_query = getreg('/')
let var = expand("<cword>")
exec "%s/" . var . "//gn"
finally
call winrestview(l:win_view)
call setreg('/', l:old_query)
endtry
endfun
" Bellow we set a command "CountWord" and a mapping to count word
" change as you like it
command! -nargs=0 CountWord :call CountWordFunction()
nnoremap <f3> :CountWord<CR>
用鼠标选择单词并立即计算出现次数: OBS:请注意,在这个版本中,我们最后有“CountWord”命令
nnoremap <silent> <2-LeftMouse> :let @/='\V\<'.escape(expand('<cword>'), '\').'\>'<cr>:set hls<cr>:CountWord<cr>
基于搜索的解决方案 ( *, /...) 移动光标,这可能是不幸的。
另一种方法是使用增强的 mark.vim插件,然后完成.vimrc
让双击触发突出显示(我不知道键盘选择如何触发命令):
"Use Mark plugin to highlight selected word
map <2-leftmouse> \m
它允许多个突出显示、持久性等。
要删除突出显示,请:
- 再次双击
:Mark
(关闭直到下一个选择):MarkClear
首先(或在您的 .vimrc 中):
:set hlsearch
然后将光标放在要突出显示的单词上,然后点击*
。
hlsearch
表示突出显示当前搜索的所有出现,并*
表示搜索光标下的单词。
在不移动光标的情况下突出显示单词,扑通
" 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#
仍然会像“正常”*
和#
.
要启动,您可以使用“short-form”(除非您在命令模式下有另一个以“noh”开头的功能)hlsearch
::noh
或者您可以使用长版本::nohlsearch
为了非常方便(我发现自己hlsearch
每天可能切换 20 次),您可以映射一些东西来切换hlsearch
,如下所示:
" search highlight toggle
nnoremap <silent> <leader>st :set hlsearch!<cr>
.:. 如果您<leader>
是\(默认情况下),您可以在正常\st模式下按(快速)切换。hlsearch
或者,也许您只想:noh
映射:
" search clear
nnoremap <silent> <leader>sc :nohlsearch<cr>
以上只是运行:nohlsearch
,所以(不像:set hlsearch!
)它仍然会在您下次按下*或#在正常模式下突出显示单词。
干杯
例如这个插件:
只需在vimawesome.com中的光标下搜索
正如clagccs提到的,关键是突出显示与您的搜索不冲突:https ://vim.fandom.com/wiki/Auto_highlight_current_word_when_idle
- vim-illuminate 默认高亮,在我的屏幕截图中我切换到下划线
- vim-illuminate 默认情况下突出显示/下划线光标下的单词,在我的屏幕截图中我取消了它
- 我的配色方案非常灰色。检查你的也可以定制它。
首先确保通过发出以下命令启用 hlsearch
:set hlsearch
您也可以将其添加到您的 .vimrc 文件中
set hlsearch
现在,当您在命令模式下使用快速搜索机制或常规搜索命令时,所有结果都会突出显示。要在结果之间向前移动,请按“n”向后移动按“N”
在正常模式下,要快速搜索光标下的单词并在一个命令中跳转到下一个出现按“*”,您还可以搜索光标下的单词并通过按“#”移动到上一个出现'
在正常模式下,快速搜索也可以使用
/searchterm<Enter>
要删除使用时的突出显示,我已将其绑定到我的 .vimrc 中的快捷方式
:nohl
set hlsearch
也许 ?
启用搜索突出显示:
:set hlsearch
然后搜索这个词:
/word<Enter>
采用autocmd CursorMoved * exe printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\'))
确保你已经IncSearch
设置了一些东西。例如call s:Attr('IncSearch', 'reverse')
。或者,您可以使用另一个突出显示组来代替它。
这将立即突出显示光标下所有出现的单词。我发现当我在浏览代码时延迟会减慢我的速度。突出显示颜色将匹配单词的颜色,因此它与您的方案保持一致。
为什么不只是:z/
这将突出显示光标下的当前单词和任何其他出现。而且您不必为要搜索的每个项目提供单独的命令。也许这在邪恶的 gvim 中不可用?默认情况下它在 vim 中。
* 仅在您希望光标移动到下一个匹配项时才有效。在视觉上比较两件事时,您通常不希望光标移动,而且每次都按 * 键很烦人。
~/.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%
在正常模型中,复习这个词。
按 * 按 F8 在整个项目中递归搜索单词