Zastąpić ciąg bez zmiany wielkości liter?

18

Z powodu dziwactwa w języku, z którym pracuję, często mam do czynienia z (selektywnie, nie globalnie) zastąpieniem termlub odpowiednio TERMz wordlub WORD.

Oznacza to, że bez rozróżniania wielkości liter szukam termi chcę to zastąpić, word zachowując termnienaruszone wielkie / małe litery oryginału .

Ponieważ sprawdzanie całości pod termkątem spójnych wielkich / małych liter byłoby trudne i nie jest tak naprawdę konieczne, zadowoliłbym się dużymi / małymi literami word/ WORDdecydującymi o pierwszej literze term.

Jak mogłem to osiągnąć?

DevSolar
źródło
2
Uwaga na temat „wybiórczo” dla tych, którzy go nie znają: po prostu dodaj cna końcu instrukcji podmiany poniżej, a Vim zapyta cię o każdy mecz.
DevSolar,

Odpowiedzi:

16

W pakiecie Michaelsa Geddesa znajdziesz wszystko, czego potrzebujesz:

:%SubstituteCase/\cterm/word/g

:substituteObsługiwane są również inne elementy składniowe z .

Luc Hermitte
źródło
5
Genialnie ... to znacznie dla mnie przyspieszy. Zauważam również, że nie pytam już „ można to zrobić”, a jedynie „ jak to zrobić”. Wygląda na to, że w końcu „przybyłem” do Vima. :-D
DevSolar
16

Można to obsłużyć :Subvertz zniesionej wtyczki :

Pewnego razu miałem aplikację z modelem domeny o nazwie „obiekt”, który musiał zostać przemianowany na „budynek”. Proste wyszukiwanie i zamiana, prawda?

:%s/facility/building/g

Och, ale warianty skrzynek!

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

Czekaj, liczba mnoga jest więcej niż „s”, więc też musimy to zdobyć!

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

Abolish.vim ma twoje plecy. Jedno polecenie, aby wykonać wszystkie sześć, i możesz je powtórzyć za pomocą & też!

:%Subvert/facilit{y,ies}/building{,s}/g
mMontu
źródło