Sostituisci una stringa senza cambiare maiuscole?


18

A causa di una stranezza nella lingua specifica del dominio con cui sto lavorando, mi trovo spesso ad affrontare il compito di (selettivamente, non globalmente) sostituire termo TERMcon wordo WORD, rispettivamente.

Ciò significa che cerco case indifferentemente terme voglio sostituirlo con word mantenendo termintatte le maiuscole / minuscole dell'originale .

Dal momento che controllare l'insieme termper maiuscole / minuscole coerenti sarebbe difficile e non è davvero necessario, mi accontenterei di maiuscole / minuscole di word/ WORDessere deciso sulla prima lettera di term.

Come ho potuto raggiungere questo obiettivo?


2
Nota sul "selettivamente" per coloro che non lo conoscono: basta aggiungere calla fine delle dichiarazioni di sostituzione di seguito e Vim ti chiederà di ogni singola partita.
DevSolar,

Risposte:


16

La custodia del plugin di Michaels Geddes ha tutto ciò di cui hai bisogno:

:%SubstituteCase/\cterm/word/g

Sono :substitutesupportati anche altri elementi di sintassi da .


5
Fantastico ... questo velocizzerà notevolmente le cose per me. Noto anche che non chiedo più "si può fare", ma solo " come farlo". Sembra che sia finalmente "arrivato" a Vim. :-D
DevSolar

16

Questo può essere gestita dal :Subvertdal abolire plug-in :

Una volta ho avuto un'applicazione con un modello di dominio chiamato "facility" che doveva essere rinominata in "building". Quindi, una semplice ricerca e sostituzione, giusto?

:%s/facility/building/g

Oh, ma le varianti del caso!

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

Aspetta, il plurale è più di una "s", quindi dobbiamo ottenerlo anche noi!

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

Abolish.vim ha le spalle. Un comando per fare tutti e sei, e puoi ripeterlo con e anche!

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.