突出显示所选单词的所有出现?

时间:2010-08-07 16:33:25

标签: vim macvim

如何在GVim中突出显示所有选定单词,如Notepad ++?

15 个答案:

答案 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插件。 它允许同时突出显示不同颜色的几个单词。

Example Screenshot

答案 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)

例如此插件:

只需在vimawesome.com

中的光标下搜索

正如clagccs所提到的,关键是突出显示的内容不会与您的搜索冲突:https://vim.fandom.com/wiki/Auto_highlight_current_word_when_idle

与搜索不冲突的屏幕截图: enter image description here 注意:

  • 默认情况下,
  • vim-lighting高亮显示,在我的屏幕截图中,我切换为下划线
  • 默认情况下,vim点亮光标下方的高亮/下划线单词,在我的屏幕截图中,我未对其设置
  • 我的色彩化学非常灰白。还要检查您的内容以对其进行自定义。

答案 13 :(得分:0)

为什么不呢: Z /

这将突出显示光标下的当前单词和任何其他出现的内容。而且,您不必为您正在搜索的每个项目单独指定一个命令。也许在邪恶的gvim中没有这个?它默认处于vim状态。

*仅在您希望光标移动到下一个匹配项时才有用。当您在视觉上比较两件事时,您通常不希望光标移动,每次点击*键都很烦人。

答案 14 :(得分:0)

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

    " 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. 在普通模型中翻看这个词。

    4. 按*按F8以递归方式搜索整个项目