Comment mettre en évidence toutes les occurrences d'un mot sélectionné dans GVim, comme dans Notepad ++?
En mode normal:
:set hlsearch
Puis recherchez un motif avec la commande /
en mode normal ou <Ctrl>o
suivi par /
en mode insertion. *
en mode normal cherchera la prochaine occurrence du mot sous le curseur. L'option hlsearch
les mettra tous en surbrillance s'ils sont définis. #
va rechercher l'occurrence précédente du mot.
Pour supprimer le surlignage de la recherche précédente:
:nohlsearch
Vous voudrez peut-être cartographier :nohlsearch<CR>
à une touche commode.
La touche *
Mettra en évidence toutes les occurrences du mot qui se trouve sous le curseur.
Je sais que c'est une question très ancienne, mais si quelqu'un s'intéresse à cette fonctionnalité, peut vérifier ce code 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
la plus simple, tapez en mode normal *
J'ai aussi ces mappages pour activer et désactiver
"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
Sélectionnez Word en cliquant dessus
set mouse=a "Enables mouse click
nnoremap <silent> <2-LeftMouse> :let @/='\V\<'.escape(expand('<cword>'), '\').'\>'<cr>:set hls<cr>
Bonus: 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>
Sélection de Word avec la souris et comptage simultané des occurrences: OBS: Notez que dans cette version, nous avons la commande "CountWord" à la fin.
nnoremap <silent> <2-LeftMouse> :let @/='\V\<'.escape(expand('<cword>'), '\').'\>'<cr>:set hls<cr>:CountWord<cr>
Solutions basées sur la recherche (*, /...) déplace le curseur, ce qui peut être malheureux.
Une alternative consiste à utiliser le plugin mark.vim amélioré , puis complétez votre .vimrc
pour laisser un double-clic sur le déclencheur en surbrillance (je ne sais pas comment une sélection au clavier peut déclencher une commande):
"Use Mark plugin to highlight selected Word
map <2-leftmouse> \m
Il permet plusieurs mises en surbrillance, persistance, etc.
Pour supprimer la surbrillance, soit:
:Mark
_ (éteindre jusqu'à la prochaine sélection):MarkClear
D'abord (ou dans votre .vimrc):
:set hlsearch
Ensuite, placez votre curseur sur le mot que vous souhaitez mettre en surbrillance, puis appuyez sur *
.
hlsearch
signifie mettre en évidence toutes les occurrences de la recherche en cours, et *
signifie recherche du mot sous le curseur.
Activer la recherche en surbrillance:
:set hlsearch
Ensuite, recherchez le mot:
/Word<Enter>
Mon préféré pour ce faire est le plugin mark.vim . Il permet de mettre en évidence plusieurs mots de couleurs différentes simultanément.
set hlsearch
peut être ?
Tout d'abord, assurez-vous que hlsearch est activé en exécutant la commande suivante
:set hlsearch
Vous pouvez également ajouter ceci à votre fichier .vimrc comme défini
set hlsearch
désormais, lorsque vous utilisez le mécanisme de recherche rapide en mode commande ou une commande de recherche classique, tous les résultats sont mis en surbrillance. Pour avancer entre les résultats, appuyez sur 'n' pour revenir en arrière, appuyez sur 'N'
En mode normal, pour effectuer une recherche rapide du mot sous le curseur et passer à l'occurrence suivante avec une commande, appuyez sur '*'. Vous pouvez également rechercher le mot sous le curseur et passer à l'occurrence précédente en appuyant sur '# '
En mode normal, la recherche rapide peut également être appelée avec
/searchterm<Enter>
pour supprimer les faits saillants sur l’utilisation d’occurrences, j’ai lié cela à un raccourci dans mon fichier .vimrc
:nohl
Utilisez autocmd CursorMoved * exe printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\'))
Assurez-vous que IncSearch
est défini sur quelque chose. Par exemple, call s:Attr('IncSearch', 'reverse')
. Sinon, vous pouvez utiliser un autre groupe de surbrillance à sa place.
Cela mettra en évidence toutes les occurrences de mots sous votre curseur sans délai. Je trouve qu'un retard me ralentit lorsque je parcours le code. La couleur de surbrillance correspond à la couleur du mot, de sorte qu'elle reste cohérente avec votre modèle.
mettre en surbrillance Word sans déplacer le curseur, 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>
dans votre vimrc.
Qu'est-ce qui est sympa à ce sujet, c'est g*
et g#
fonctionnera toujours comme "normal" *
et #
.
Pour désactiver hlsearch
, vous pouvez utiliser "forme abrégée" (à moins que vous n'ayez une autre fonction commençant par "noh" en mode commande): :noh
. Ou vous pouvez utiliser la version longue: :nohlsearch
Pour une commodité extrême (je me trouve en train de basculer hlsearch
peut-être 20 fois par jour), vous pouvez mapper quelque chose à basculer hlsearch
comme ceci:
" search highlight toggle
nnoremap <silent> <leader>st :set hlsearch!<cr>
.:. si votre <leader>
est \ (c'est par défaut), vous pouvez appuyer sur \st (rapidement) en normal mode pour basculer hlsearch
.
Ou peut-être que vous voulez juste avoir :noh
mappé:
" search clear
nnoremap <silent> <leader>sc :nohlsearch<cr>
Ce qui précède fonctionne simplement :nohlsearch
donc (contrairement à :set hlsearch!
) il mettra encore Word en évidence la prochaine fois que vous appuierez sur * ou # en mode normal.
à votre santé
~/.vimrc
fichier" 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%
Dans le modèle normal, passez la parole.
Appuyez sur * Appuyez sur F8 pour rechercher récursivement sous votre projet entier dans Word
Pourquoi pas simplement: z /
Cela mettra en évidence le mot actuel sous le curseur et toutes les autres occurrences. Et vous n'avez pas à donner une commande séparée pour chaque article que vous recherchez. Peut-être que ce n'est pas disponible dans le gvim impie? C'est dans vim par défaut.
* n'est utile que si vous souhaitez que le curseur passe à l'occurrence suivante. Lorsque vous comparez visuellement deux choses, vous ne voulez souvent pas que le curseur se déplace, et il est ennuyeux d'appuyer sur la touche * à chaque fois.