Highlight variable under cursor in Vim like in NetBeans

Viewed 22413

I worked in NetBeans and liked this feature: when you place cursor in a variable name all occurences of the variable are highlighted. This is very useful for quick searching all occurences of the variable. Is it possible to add this behavior to Vim?

10 Answers

vim_current_word works out of the box, is syntax aware, and allows customisable colours.

To map F2 to toggle highlighting:

map <F2> :set hlsearch!<CR> * #

It is certainly not perfect. '* #' jumps around a bit much...

This variant is optimized for speed (uses CursorHold instead of CursorMoved) and compatibility with hlsearch. The current search word highlighting will not be disrupted.

" autosave delay, cursorhold trigger, default: 4000ms
setl updatetime=300

" highlight the word under cursor (CursorMoved is inperformant)
highlight WordUnderCursor cterm=underline gui=underline
autocmd CursorHold * call HighlightCursorWord()
function! HighlightCursorWord()
    " if hlsearch is active, don't overwrite it!
    let search = getreg('/')
    let cword = expand('<cword>')
    if match(cword, search) == -1
        exe printf('match WordUnderCursor /\V\<%s\>/', escape(cword, '/\'))
    endif
endfunction

Similar to the accepted answer, but this way allows you to set a delay time after holding the cursor over a word before the highlighting will appear. The 1000 is in milliseconds and means that it will highlight after 1 second.

set updatetime=1000

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

See :h CursorHold for more info.

vim-illuminate does the trick for me.

match-up does the trick for me.

vim match-up: even better % navigate and highlight matching words modern matchit and matchparen

Features

  • jump between matching words
  • jump to open & close words
  • jump inside (z%)
  • full set of text objects
  • highlight (), [], & {}
  • highlight all matching words
  • display matches off-screen
  • show where you are (breadcrumbs)
  • (neovim) tree-sitter integration
Related