/ / Comment faire la substitution uniquement sur le texte en surbrillance dans vim? - vim

Comment faire la substitution que sur le texte en surbrillance dans vim? - vim

Avant de faire la substitution, je tape habituellement / foo rechercher le motif en premier.
Vim met automatiquement en surbrillance toutes les chaînes correspondant au motif.
Ensuite, je découvre comment écrire la commande de substitution :%s/foo/bar/g.
Lorsque le motif est complexe, il est beaucoup plus difficile d’écrire la commande de substitution que la commande de recherche.
Si je peux faire la substitution uniquement sur les chaînes en surbrillance. Cela devient facile.

Par exemple:

Question: Traduire une partie de ligne
Je peux comprendre le modèle de recherche: /[[(http)@!.{-}]]
Mais je ne peux pas comprendre la commande de substitution facilement.

Réponses:

6 pour la réponse № 1

Vous pouvez remplacer le modèle précédemment recherché si vous utilisez une chaîne vide comme modèle de recherche dans la commande de substitution:

Après /foo type :%s//bar/g en mode normal pour remplacer "foo" par "bar".


0 pour la réponse № 2

Vous pouvez utiliser le drapeau "c" pour dire à Vim de confirmer avant de remplacer. Il met en surbrillance et arrête de demander avant chaque match trouvé pour le motif donné.

:%s/foo/bar/gc

0 pour la réponse № 3

Je viens de comprendre:

:%s@@=substitute(submatch(0), "_", "/", "")@g

Mais y a-t-il de meilleurs moyens?