Existe-t-il une recherche de la commande replace?

12

J'apprécie vraiment la incsearchfonctionnalité de Vim . Existe-t-il un moyen de le faire fonctionner, ou quelque chose de similaire, pendant que je fais un remplacement?

Par exemple, si en mode normal je tape:

:%s/potato/

Puis-je obtenir tous les potatos en surbrillance sur mon fichier, tout comme ils sont mis en évidence par incsearchquand j'écris

/potato

?

Cela m'aiderait déjà beaucoup lors de l'utilisation d'expressions régulières. Un très très beau serait que lorsque j'écris ceci:

:%s/potato/banana/

Il remplacerait le potatos par le bananas et les mettrait en évidence - peut-être que les remplacements devraient être d'une couleur différente. Il ne devrait pas "valider" le changement tant que je n'ai pas appuyé sur Entrée).

J'utilise neovim pour le moment, au cas où cela aiderait.

kikito
la source
1
Tu veux dire incsearch? hlsearchdevrait fonctionner ootb, si je tape :%s/potato/\0/pour remplacer potatopar lui-même, alors je vois toutes les correspondances en surbrillance.
jjaderberg
Inded, je voulais dire incsearch. Remplaçant dans ma question, merci.
kikito
Ce n'est probablement pas casher mais :/pattern<CR>fonctionne bien, puis ajoutez le% s et la chaîne de remplacement. Thene à nouveau affine la recherche et utilise CTR-R / pour coller dans la partie recherche de:%s/
Steve
Ajouter à @jjaderberg: :%s/potato/carrot/cvous permettra de sauter ("confirmer") à travers vos remplacements (ajouter gpour remplacer toutes les instances sur la même ligne) et avec hlsearchvous les verrez à l'avance.
Rolf

Réponses:

9

Après un peu de recherche, j'ai trouvé ce problème NeoVim , qui à son tour a été fermé par ce PR , ce qui m'a amené au inccommandréglage. Ajout de ceci à mon fichier de configuration:

set inccommand=nosplit

fait que NeoVim se comporte presque exactement comme je l'ai demandé dans ma question. Je n'ai pas trouvé quelque chose d'équivalent pour le Vim ordinaire, mais je ne l'ai pas cherché très énergiquement.

kikito
la source
4
Dans votre situtaion, pour incsearchen subtitutions (être un Vimmer paresseux et lent à adopter les choses néo) je ne serais probablement chercher la pomme de terre ( /potato) profiter de la recherche incrémentale ordinaire highlighighting, puis remplacer par une recherche vide: %s//banana. Mais je ne sais pas comment cela se compare à set inccommand=nosplitd'autres égards.
jjaderberg
Merci! Je ne connaissais pas le "truc de recherche vide". J'essaierai de m'en souvenir quand je serai sur mes serveurs
kikito
1
@jjaderberg par la façon dont j'ai tellement aimé le inccommandcadre que j'ai fait un asciinema le montrant au travail, au cas où cela vous motiverait à essayer les neovim
kikito
2
@jjaderberg Je pense que cela mérite une réponse.
Rich
Malheureusement, le lien vers l'asciinème est maintenant mort.
sjy