Réponses:
Ajoutez l'indicateur c (dans l'invite de commande vim):
:%s/old/new/gc
vous donnera un oui / non à chaque occurrence de «ancien».
L'aide intégrée de Vim offre des informations utiles sur les options disponibles une fois la substitution avec confirmation sélectionnée. Utilisation:
:h :s
Faites ensuite défiler jusqu'à la section sur les options de confirmation. Capture d'écran ci-dessous:
Par exemple, pour remplacer ceci et toutes les correspondances restantes, utilisez a
.
Mark Biek a souligné en utilisant:
%s/old/new/gc
pour une recherche globale remplacer par confirmation pour chaque substitution. Mais, j'aime aussi vérifier de manière interactive que l'ancien texte correspondra correctement. Je fais d'abord une recherche avec une expression régulière, puis je réutilise ce modèle:
/old.pattern.to.match
%s//replacement/gc
Le s//
utilisera le dernier modèle de recherche.
Je pense que vous recherchez c
, par exemple s/abc/123/gc
, cela entraînera VIM pour confirmer les remplacements. Voir: aide: remplacer pour plus d'informations.
J'utilise généralement la commande find / substitute / next / repeat :-)
/old<CR>3snew<ESC>n.n.n.n.n.n.n.
C'est find "old"
, substitute 3 characters for "new"
, find next
, repeat substitute
et ainsi de suite.
C'est une douleur pour les substitutions massives, mais cela vous permet d'ignorer sélectivement certaines occurrences anciennes (en appuyant simplement à n
nouveau pour trouver la suivante au lieu de .
répéter une substitution).
<CR>
?
Si votre texte de remplacement doit changer pour chaque occurrence correspondante (c'est-à-dire ne pas simplement choisir Oui / Non pour appliquer un remplacement singulier), vous pouvez utiliser un plugin Vim que j'ai créé appelé interactif-replace .
Neovim dispose désormais d'une fonctionnalité pour prévisualiser la substitution:
Image prise à partir de: https://medium.com/@eric.burel/stop-using-open-source-5cb19baca44d Documentation de la fonctionnalité: https://neovim.io/doc/user/options.html# 'inccommand'
nvim
fonctionnalité intégrée, bon à savoir! Merci d'avoir partagé!