web-dev-qa-db-fra.com

Dans Vim, comment rechercher et remplacer uniquement dans la ligne actuelle?

Je vois comment rechercher et remplacer dans des lignes spécifiques , en spécifiant par numéro de ligne, et comment rechercher et remplacer en utilisant la ligne actuelle comme référence à un certain nombre de lignes vers le bas .

Comment rechercher et remplacer uniquement dans la ligne actuelle? Je recherche une solution simple qui n'implique pas de spécifier des numéros de ligne comme le font les solutions liées .

12
mherzl

Remplacez toutes les occurrences de str1 avec str2 dans une certaine ligne:

:s/str1/str2/g

supprimez l'option g si vous souhaitez remplacer uniquement la première occurrence.

20
Stephen.W

Vous pouvez utiliser . pour la ligne actuelle, comme:

:.s/old/new/

Cela changera old par new dans la ligne actuelle uniquement.

14
Toto

Si vous souhaitez rechercher et remplacer tout le mot correspondant dans la ligne actuelle, vous pouvez facilement utiliser le simple substitute (s) avec le modificateur g en mode commande.

:s/search/replace/g

Si vous souhaitez simplement rechercher et remplacer le premier mot correspondant dans la ligne actuelle, éloignez simplement le modificateur g de votre commande.

:s/search/replace/

Réf: :help substitute

5
wlisrausr

Confirmer ('c') et remplacer:

:s/foo/bar/gc

Trouvez l'occurrence de 'foo', et avant de le remplacer par 'bar', demandez confirmation.
Vim vous offre ces options:

replace with bar (y/n/a/q/l/^E/^Y)?

o/n - explicite
a - remplacer toutes les occurrences
q - quitter
l - remplacer le courant et arrêter (dernier)
^ E/^ Y - ctrl + e et ctrl + y - faites défiler vers le bas et vers le haut respectivement.

Maintenant, dans votre cas, vous pouvez utiliser la combinaison de y, n et l pour atteindre votre objectif.

1
HarshaD