Ersetzen Sie eine Zeichenfolge, ohne die Groß- / Kleinschreibung zu ändern?

18

Aufgrund einer Eigenheit in der domänenspezifischen Sprache, mit der ich arbeite, stehe ich häufig vor der Aufgabe, (selektiv, nicht global) termoder TERMdurch wordoder zu ersetzen WORD.

Das heißt, ich suche ohne Berücksichtigung der Groß- / Kleinschreibungterm und möchte diese ersetzen, word wobei die Groß- / Kleinschreibung des Originals termintakt bleibt .

Da es schwierig wäre , das Ganze termauf konsistente Groß- / Kleinschreibung zu überprüfen, und dies nicht wirklich notwendig ist, würde ich mich damit begnügen, dass Groß- / Kleinschreibung von word/ WORDauf den ersten Buchstaben von / festgelegt wird term.

Wie könnte ich das erreichen?

DevSolar
quelle
2
Hinweis zu "selektiv" für diejenigen, die es nicht wissen: Fügen Sie einfach cam Ende der Substitutionsanweisungen unten hinzu, und Vim fragt Sie nach jedem einzelnen Spiel.
DevSolar

Antworten:

16

Das Plugin Keepcase von Michaels Geddes bietet alles, was Sie brauchen:

:%SubstituteCase/\cterm/word/g

Andere Syntaxelemente von :substitutewerden ebenfalls unterstützt.

Luc Hermitte
quelle
5
Genial ... das wird die Dinge für mich erheblich beschleunigen. Mir fällt auch auf, dass ich nicht mehr frage " geht das", sondern nur noch " wie es geht". Scheint, als wäre ich endlich bei Vim "angekommen". :-D
DevSolar
16

Dies kann durch :Subvertdas Abolish Plugin erledigt werden :

Einmal hatte ich eine Anwendung mit dem Domain-Modell "Facility", die in "Building" umbenannt werden musste. Also, ein einfaches Suchen und Ersetzen, oder?

:%s/facility/building/g

Oh, aber die Gehäusevarianten!

:%s/Facility/Building/g
:%s/FACILITY/BUILDING/g

Warten Sie, der Plural ist mehr als "s", also müssen wir das auch bekommen!

:%s/facilities/buildings/g
:%s/Facilities/Buildings/g
:%s/FACILITIES/BUILDINGS/g

Abolish.vim hat deinen Rücken. Ein Befehl für alle sechs, und Sie können ihn auch mit & wiederholen!

:%Subvert/facilit{y,ies}/building{,s}/g
mMontu
quelle