Visual sélectionner le résultat de la recherche actuelle

9

J'ai hlsearchfixé, mais cela m'endort parfois en pensant que j'ai le terme de recherche sélectionné visuellement, et que je peux simplement appuyer cdessus pour le changer.

Le terme recherché n'est peut-être pas un nombre facile de lettres, de mots, voire de lignes - et de toute façon, je ne veux pas compter.

Existe-t-il un moyen vh(ou ch), par exemple, où hs'exécute jusqu'à ce que la mise en surbrillance actuelle s'arrête?

OJFord
la source

Réponses:

14

Vous pouvez utiliser le gnmouvement pour cela, il sélectionne l'élément recherché suivant.

Vous pouvez l'utiliser comme ceci:

/foo<CR>
gn            -> select the next "foo"
sbar<Esc>     -> (optional) substitute it with "bar"

Bonus: Pour avoir .répété la recherche et le changement, utilisez a cpour tout faire en une seule commande:

/foo<CR>
cgnbar<Esc>
...           -> find and change the 3 next foo
nobe4
la source
1
Fantastique! Merci. (Quiconque comme moi manque pourquoi .répétera toute l'action et ne peut pas le faire fonctionner - lisez plus attentivement - d' cabord! Je ne pourrais pas demander mieux.)
OJFord
3
Notez que vous pouvez également utiliser gNpour sélectionner visuellement la correspondance précédente.
statox
Quelle est la différence entre cela et le simple fait d'appuyer sur npour accéder au résultat de recherche suivant?
user1717828
il fait aussi le changement, donc au lieu de répéter n.(prochaine occurrence, répéter la modification), vous pouvez simplement appuyer sur .(répéter la modification, qui est "changer la prochaine occurrence")
nobe4
En effet, lors de l' .invocation gn, l'original fooa disparu, donc Vim recherche le suivant foo. Il en gnva de même de ce nqui aurait fait de toute façon (et plus). Mais, comme avec n, notez que cela ne fonctionne bien que lorsqu'il barne contient pas foo!
joeytwiddle