Reemplazar una cadena sin cambiar la mayúscula?

18

Debido a una peculiaridad en el lenguaje específico del dominio con el que estoy trabajando, con frecuencia me enfrento a la tarea de (selectivamente, no globalmente) reemplazar termo TERMcon wordo WORD, respectivamente.

Esto significa que busco sin distinción entre mayúsculas y minúsculas term, y quiero reemplazarlo con word manteniendo termintactas las mayúsculas / minúsculas del original .

Dado que el control de la totalidad de termpor consistentes / minúsculas mayúsculas sería difícil y no es realmente necesario, me conformaría con mayúsculas / minúsculas de word/ WORDse decidió por la primera letra term.

¿Cómo podría lograr esto?

DevSolar
fuente
2
Nota sobre el "selectivo" para aquellos que no lo saben: simplemente agregue cal final de las declaraciones de sustitución a continuación, y Vim le preguntará acerca de cada partido.
DevSolar

Respuestas:

16

Plugin de Michaels Geddes' keepcase tiene todo lo que necesita:

:%SubstituteCase/\cterm/word/g

También :substitutese admiten otros elementos de sintaxis de .

Luc Hermitte
fuente
55
Brillante ... esto acelerará significativamente las cosas para mí. También me doy cuenta de que ya no pregunto "¿ se puede hacer esto?", Sino solo " cómo hacerlo". Parece que finalmente "llegué" a Vim. :-D
DevSolar
16

Esto puede ser manejado por el :Subvertde la abolición de plug-in :

Una vez tuve una aplicación con un modelo de dominio llamado "instalación" que necesitaba ser renombrado como "edificio". Entonces, una simple búsqueda y reemplazo, ¿verdad?

:%s/facility/building/g

¡Oh, pero las variantes del caso!

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

Espera, el plural es más que "s", ¡así que también necesitamos obtener eso!

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

Abolish.vim te respalda. ¡Un comando para hacer los seis, y puedes repetirlo con & también!

:%Subvert/facilit{y,ies}/building{,s}/g
mMontu
fuente
55
Episodio de Vimcasts : sustitución sobrealimentada con: Subvert
Peter Rincker