Comment puis-je mettre en évidence toutes les occurrences d'un mot sélectionné dans GVim, comme dans Notepad ++?
159
En mode normal:
:set hlsearch
Recherchez ensuite un motif avec la commande /
en mode Normal, ou <Ctrl>o
suivi de /
en mode Insertion. *
en mode normal recherche la prochaine occurrence du mot sous le curseur. L' hlsearch
option les mettra tous en évidence si elle est définie. #
recherchera l'occurrence précédente du mot.
Pour supprimer la surbrillance de la recherche précédente:
:nohlsearch
Vous souhaiterez peut-être mapper :nohlsearch<CR>
vers une clé pratique.
hlsearch
beaucoup de choses, vous voudrez peut-être mapper à la:set hlsearch!
place:set nohlsearch
. Cela fait basculer le paramètre plutôt que de toujours le désactiver.*
ou#
par<Ctrl>o
en mode normal.:nohlsearch
, vous pouvez simplement utiliser:noh
.vimrc
:noremap <F4> :set hlsearch! hlsearch?<CR>
pour basculer entre la surbrillance et supprimer la surbrillance de<F4>
.La
*
touche mettra en évidence toutes les occurrences du mot qui se trouve sous le curseur.la source
&hlsearch
est allumé.#
.Je sais que c'est une très vieille question, mais si quelqu'un est intéressé par cette fonctionnalité, peut vérifier ce code http://vim.wikia.com/wiki/Auto_highlight_current_word_when_idle
la source
le moyen le plus simple, tapez en mode normal
*
J'ai également ces mappages pour activer et désactiver
Sélectionnez le mot en cliquant dessus
Bonus: CountWordFunction
Sélection de mot avec la souris et comptage des occurrences à la fois: OBS: Notez que dans cette version, nous avons la commande "CountWord" à la fin
la source
nnoremap * *``cgn
etnnoremap # #``cgN
*
, comment désactiver la mise en évidence?:noh
or:nohlsearch
nnoremap <silent> * :execute "normal! *N"<cr>
etnnoremap <silent> # :execute "normal! #n"<cr>
? Celles-ci ne font que mettre en évidence le mot sous le curseur mais ne le déplacent pas à l'occurrence suivante.Les solutions basées sur la recherche ( *, /...) déplacent le curseur, ce qui peut être regrettable.
Une alternative est d'utiliser le plugin mark.vim amélioré , puis de terminer votre
.vimrc
pour laisser le double-clic déclencher la mise en surbrillance (je ne sais pas comment une sélection de clavier peut déclencher une commande):Il permet de multiples surlignages, persistance, etc.
Pour supprimer la mise en évidence, soit:
:Mark
(éteindre jusqu'à la prochaine sélection):MarkClear
la source
:set noincsearch
. À mon avis, c'est l'une des fonctionnalités les plus ennuyeuses de Vim et l'une des premières choses que je désactive pour les nouvelles installations.*
déplacera inconditionnellement le curseur. Et je ne vois pas à quel point celaincsearch
pourrait être ennuyeux, car il ne s'agit que d'un `` regard vers l'avenir '', effectuer la recherche actuelle sans changer réellement votre position.incsearch
empêcherait le mouvement, mais un test rapide confirme que vous avez raison. Mes excuses. Cependant, il est très facile de créer un mappage qui empêche le mouvement::nnoremap * *N
. Je n'arrive pas à croire que vous ne trouviez pas gênant que votre curseur saute sur tout l'écran lorsque vous effectuez une recherche. Mais ... ces choses sont complètement subjectives. Vive la différence ;-):let @/='hilight_this'
, en supposant que vous avezhlsearch
activé. Il met en évidence le texte sans sauter et vous n'avez pas à modifier les paramètres existants. Cela modifie la valeur actuellement stockée dans le registre de recherche.Premièrement (ou dans votre .vimrc):
Placez ensuite votre curseur sur le mot que vous souhaitez mettre en surbrillance et appuyez sur
*
.hlsearch
signifie mettre en évidence toutes les occurrences de la recherche en cours, et*
signifie rechercher le mot sous le curseur.la source
Assurez-vous d'abord que hlsearch est activé en exécutant la commande suivante
Vous pouvez également l'ajouter à votre fichier .vimrc comme défini
maintenant, lorsque vous utilisez le mécanisme de recherche rapide en mode commande ou une commande de recherche ordinaire, tous les résultats seront mis en surbrillance. Pour avancer entre les résultats, appuyez sur 'n' pour reculer appuyez sur 'N'
En mode normal, pour effectuer une recherche rapide du mot sous le curseur et pour passer à l'occurrence suivante en une seule 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 le
pour supprimer les surbrillances sur l'utilisation des occurrences, j'ai lié ceci à un raccourci dans mon .vimrc
la source
Activer la mise en évidence de la recherche:
Recherchez ensuite le mot:
la source
Mon préféré pour faire cela est le plugin mark.vim . Il permet de mettre en évidence plusieurs mots de différentes couleurs simultanément.
Exemple de capture d'écran
la source
pour mettre en évidence le mot sans déplacer le curseur, plop
dans votre vimrc.
Ce qui est bien, c'est
g*
etg#
fonctionnera toujours comme "normal"*
et#
.Pour définir au
hlsearch
large, vous pouvez utiliser « court formulaire » (sauf si vous avez une autre fonction qui commence par « Noh » en mode commande)::noh
. Ou vous pouvez utiliser la version longue::nohlsearch
Pour plus de commodité (je me retrouve à basculer
hlsearch
peut-être 20 fois par jour), vous pouvez mapper quelque chose à basculerhlsearch
comme suit:.:. si
<leader>
c'est le cas \(c'est le cas par défaut), vous pouvez appuyer \st(rapidement) en mode normal pour basculerhlsearch
.Ou peut-être voulez-vous simplement avoir
:noh
mappé:Ce qui précède s'exécute simplement,
:nohlsearch
donc (contrairement à:set hlsearch!
) il mettra toujours le mot en surbrillance la prochaine fois que vous appuyez sur *ou #en mode normal .à votre santé
la source
peut être ?
la source
Utilisation
autocmd CursorMoved * exe printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\'))
Assurez-vous que vous avez
IncSearch
réglé quelque chose. par exemplecall s:Attr('IncSearch', 'reverse')
. Vous pouvez également 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 délai me ralentit lorsque je passe à travers le code. La couleur de surbrillance correspond à la couleur du mot, elle reste donc cohérente avec votre schéma.
la source
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 distincte pour chaque élément que vous recherchez. Peut-être que ce n'est pas disponible dans le gvim impie? C'est dans vim par défaut.
* n'est bon que si vous voulez que le curseur se déplace vers l'occurrence suivante. Lorsque vous comparez deux choses visuellement, vous ne voulez souvent pas que le curseur se déplace, et il est ennuyeux d'appuyer sur la touche * à chaque fois.
la source
~/.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 en revue le mot.
Appuyez sur * Appuyez sur F8 pour rechercher récursivement sous l'ensemble de votre projet sur le mot
la source
Par exemple, ces plugins:
https://github.com/rrethy/vim-illuminate
https://github.com/itchyny/vim-cursorword
Recherchez simplement sous le curseur sur vimawesome.com
La clé, comme clagccs l'a mentionné, est que le point culminant n'est PAS en conflit avec votre recherche : https://vim.fandom.com/wiki/Auto_highlight_current_word_when_idle
Capture d'écran montrant comment cela n'entre PAS en conflit avec la recherche: Remarques:
la source