Rechercher et remplacer dans la sélection dans `vi`

Comment puis-je effectuer une recherche et un remplacement dans une sélection dans vi ?

Sélectionnez le texte en mode visuel (je suppose que c’est ce que vous faites), puis appuyez sur : pour commencer à saisir une commande, vous verrez quelque chose comme ceci apparaître dans la ligne de commande:

 :'<,'> 

Cela signifie que la commande s’appliquera à la sélection. Puis tapez s/search/replace/ et appuyez sur enter. (Ajoutez un g après la troisième barre oblique si vous voulez remplacer toutes les correspondances, et c si vous voulez une confirmation pour chaque remplacement)

La plupart des autres solutions suggérées ici fonctionnent sur la ligne ENTIRE dans laquelle la sélection a lieu, ce qui peut ne pas être ce que vous voulez.

Pour rechercher et remplacer UNIQUEMENT dans la sélection, sélectionnez d’abord visuellement le texte, puis utilisez une commande comme celle-ci:

 :%s/\%VSEARCH/REPLACE/g 

Cela effectuera la recherche et ne remplacera que dans la section sélectionnée visuellement, en remplaçant SEARCH par REPLACE. Si vous avez sélectionné plusieurs lignes, cela fonctionnera également sur plusieurs lignes.

Si vous avez utilisé le mode visuel pour sélectionner, alors:

 :'<,'>s/regex/replacement/options 

VIM place automatiquement la plage ( '<,'> ) si vous passez en mode ligne de commande (en appuyant sur ':' ) à partir du mode visuel.

De l’aide supplémentaire ici Recherchez et remplacez dans une sélection visuelle

Si vous souhaitez effectuer une recherche globale et remplacer (avec des expressions rationnelles facultatives) pour toutes les instances du fichier, procédez comme suit:

 :%s/foo/bar/g 

Omettez le g pour faire un remplacement local.