如何在GVim中突出显示所有选定单词,如Notepad ++?
答案 0 :(得分:170)
在普通模式下:
:set hlsearch
然后在普通模式下使用命令/
搜索模式,或在插入模式下使用<Ctrl>o
后跟/
搜索模式。普通模式下的*
将搜索光标下的下一个单词。如果设置,hlsearch
选项将突出显示所有选项。 #
将搜索该字词的上一个匹配项。
删除上一次搜索的突出显示:
:nohlsearch
您可能希望将:nohlsearch<CR>
映射到某个方便的键。
答案 1 :(得分:103)
*
键将突出显示光标下所有出现的单词。
答案 2 :(得分:21)
我知道这不是一个非常古老的问题,但如果有人对此功能感兴趣,可以查看此代码 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
答案 3 :(得分:17)
最简单的方法,输入普通模式*
我也有这些映射来启用和禁用
"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>
答案 4 :(得分:9)
基于搜索的解决方案( * , / ...)移动光标,这可能是不幸的。
另一种方法是使用enhanced mark.vim插件,然后完成.vimrc
以双击触发器突出显示(我不知道键盘选择如何触发命令):
"Use Mark plugin to highlight selected word
map <2-leftmouse> \m
它允许多次突出显示,持久性等。
要删除突出显示,请执行以下操作之一:
:Mark
(关闭直到下次选择):MarkClear
答案 5 :(得分:3)
首先(或在.vimrc中):
:set hlsearch
然后将光标放在要突出显示的单词上,然后点击*
。
hlsearch
表示突出显示当前搜索的所有内容,而*
表示搜索光标下的单词。
答案 6 :(得分:2)
启用搜索突出显示:
:set hlsearch
然后搜索单词:
/word<Enter>
答案 7 :(得分:2)
我最喜欢这样做的是mark.vim插件。 它允许同时突出显示不同颜色的几个单词。
答案 8 :(得分:1)
set hlsearch
也许?
答案 9 :(得分:1)
首先通过发出以下命令确保启用hlsearch
:set hlsearch
您也可以将其作为设置
添加到.vimrc文件中set hlsearch
现在,当您在命令模式或常规搜索命令中使用快速搜索机制时,所有结果都将突出显示。要在结果之间向前移动,请按'n'向后移动按'N'
在正常模式下,要快速搜索光标下的单词并在一个命令中跳转到下一个出现位,按'*',您还可以搜索光标下的单词并移动到上一个出现位置按“#”
在普通模式下,也可以使用
调用快速搜索/searchterm<Enter>
删除ocuurences使用的亮点,我已将其绑定到我的.vimrc中的快捷方式
:nohl
答案 10 :(得分:1)
使用autocmd CursorMoved * exe printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\'))
确保您设置了IncSearch
。例如call s:Attr('IncSearch', 'reverse')
。或者,您可以使用其他高亮组。
这将突出显示光标下所有出现的单词而不会有任何延迟。我发现当我通过代码发泄时,延迟会让我失望。高亮颜色将与单词的颜色相匹配,因此它与您的方案保持一致。
答案 11 :(得分:1)
在不移动光标的情况下突出显示单词,plop
" 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
,可以使用“短格式”(除非在命令模式下有另一个以“noh”开头的函数)::noh
。或者您可以使用长版::nohlsearch
为了极大的方便(我发现自己每天可以翻转hlsearch
20次),你可以映射一些内容来切换hlsearch
,如下所示:
" search highlight toggle
nnoremap <silent> <leader>st :set hlsearch!<cr>
。。如果你的<leader>
是 \ (默认情况下是这样),你可以按 \ s t (快速)在正常模式下切换hlsearch
。
或者您可能只想映射:noh
:
" search clear
nnoremap <silent> <leader>sc :nohlsearch<cr>
以上只是:nohlsearch
运行(与:set hlsearch!
不同),下次在 * 或#时,它仍会突出显示单词>正常模式。
欢呼声
答案 12 :(得分:1)
例如此插件:
中的光标下搜索正如clagccs所提到的,关键是突出显示的内容不会与您的搜索冲突:https://vim.fandom.com/wiki/Auto_highlight_current_word_when_idle
答案 13 :(得分:0)
为什么不呢: Z /
这将突出显示光标下的当前单词和任何其他出现的内容。而且,您不必为您正在搜索的每个项目单独指定一个命令。也许在邪恶的gvim中没有这个?它默认处于vim状态。
*仅在您希望光标移动到下一个匹配项时才有用。当您在视觉上比较两件事时,您通常不希望光标移动,每次点击*键都很烦人。
答案 14 :(得分:0)
~/.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以递归方式搜索整个项目