63 votes

Mettre en évidence la variable sous le curseur dans Vim comme dans NetBeans

J'ai travaillé dans NetBeans et j'ai apprécié cette fonctionnalité : lorsque vous placez le curseur sur le nom d'une variable, toutes les occurrences de cette variable sont mises en évidence. C'est très utile pour rechercher rapidement toutes les occurrences de la variable. Est-il possible d'ajouter ce comportement à Vim ?

1voto

Tom Hale Points 5950

vim_current_word fonctionne d'emblée, est conscient de la syntaxe et permet de personnaliser les couleurs.

1voto

user3555835 Points 13

Pour mapper F2 pour basculer la mise en évidence :

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

Ce n'est certainement pas parfait. '* #' saute un peu partout...

0voto

TheJJ Points 393

Cette variante est optimisée pour la vitesse (utilise CursorHold au lieu de CursorMoved) et la compatibilité avec hlsearch . La mise en évidence du mot recherché en cours ne sera pas perturbée.

" 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

0voto

apostl3pol Points 339

Similaire à la réponse acceptée, mais cette façon vous permet de définir un délai après avoir maintenu le curseur sur un mot avant que la mise en évidence n'apparaisse. Le site 1000 est exprimée en millisecondes et signifie qu'elle sera mise en évidence après 1 seconde.

set updatetime=1000

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

Ver :h CursorHold pour plus d'informations.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X