Remplacement d'expressions régulières à casse mixte, dans Vim

9

Je rencontre souvent une situation où j'ai un dossier avec beaucoup de cas mixtes. Par exemple,

CamelCase and camelCase

Je cherche un substitut d'expression régulière Vim pour produire,

AnotherCase and anotherCase

En ce moment, je fais cela en deux étapes après avoir sélectionné visuellement les lignes,

:s/CamelCase/AnotherCase/g
:s/camelCase/anotherCase/g

Est-ce possible en une seule étape de remplacement, ou dois-je rechercher d'autres options comme une fonction dans .vimrc?

wsams
la source

Réponses:

7

Je suggère d'utiliser :Subvertvia Abolish.vim de Tim Pope

:%S/camelCase/anotherCase/g

Épisode Vimcasts : Substitution suralimentée avec: Subvert

Peter Rincker
la source
Ce plugin a rendu cela si facile. Je n'ai pas regardé sous le capot, mais j'ai pensé essayer:%S/CamelCase/AnotherCase/g , mais il ne fait que remplacer CamelCaseet est parti camelCasetel quel . Pas grave, juste quelque chose à retenir.
wsams
Il est probable que vous utilisiez smartcase ou quelque chose à cet effet, de sorte que tous les caractères majuscules doivent être en majuscules, mais les minuscules peuvent être capitalisées si nécessaire.
dash-tom-bang
3

Vous avez également le vénérable coffret .

Avec

:SubstituteCase#\ctoto\(Titi\)tata#\1Tutu#g

vous obtiendrez:

 totoTitiTata -> titiTutu
 TotoTitiTata -> TitiTutu
 tototititata -> tititutu
 tototitiTata -> titiTutu
 TototitiTata -> TitiTutu 
Luc Hermitte
la source