¿Puede esto se puede hacer de Vim?
Lo que quiero decir es: buscar 'BadJob' y reemplazarlo con 'GoodJob' haría los siguientes reemplazos
'badjob' -> 'goodjob' 'BadJob' -> 'GoodJob' 'badJob' -> 'goodJob' 'BADJOB' -> 'GOODJOB'
¿Puede esto se puede hacer de Vim?
Lo que quiero decir es: buscar 'BadJob' y reemplazarlo con 'GoodJob' haría los siguientes reemplazos
'badjob' -> 'goodjob' 'BadJob' -> 'GoodJob' 'badJob' -> 'goodJob' 'BADJOB' -> 'GOODJOB'
Respuestas:
Use abolish.vim :
:%S/badjob/goodjob/g
BadJoby quiero reemplazarla GoodJob, no puedo usarla %S/badjob/goodjob/g. No puede detectar una coincidencia.
%S/BadJob/GoodJob/gluego, el comando Subvertir cambiará al modo de mayúsculas y minúsculas y realizará todas las subtensiones según lo dispuesto por OP.
No sé si este es el tipo de solución que estás buscando ... pero he usado esto: keepcase.vim
No hay soporte de otra manera en vim ...
seguro que puedes
:s/\cbad/\= strpart(submatch(0), 0 ,1) == toupper(strpart(submatch(0), 0, 1)) ? "GOOD" : "good"/
PD. Supongo que keepcase.vim encapsula una lógica similar :)
:set ignorecase. 2. Badserá sustituido por en GOODlugar de Good. 3. La parte " job" de la pregunta se ignora, por lo que también reemplazará lambada→ lamgooda. Correcciones y explicaciones para estos errores y algunas otras cosas en mi respuesta . (¡También LOLOWLs!)
Simplemente puede pegar y adaptar esto:
(Por supuesto, si lo hace de vez en cuando, querrá un complemento en lugar de esta monstruosidad. Pero para algunos que tienen prisa y solo lo necesitan una vez, este es un truco rápido para tu placer pegar :)
:%s/\cbad\zejob/\= ( submatch(0)[0] is# toupper(submatch(0)[0]) ? 'G' : 'g' ) . ( submatch(0)[1] is# toupper(submatch(0)[1]) ? 'OOD' : 'ood' )
Además del patrón de búsqueda, debe editar las cuatro 'cadenas 'en el código de reemplazo: Edite las partes en negrita :
:% s / \ c bad \ ze job / \ =
(submatch (0) [0] es # toupper (submatch (0) [0])? ' G ': ' g ').
(submatch (0) [1] es # toupper (submatch (0) [1])? ' OOD ': ' ood ')
No use esta versión 'naranja' para pegar, ya que sus caracteres de salto de línea también romperán el comando.
/\zees el azúcar sintáctico vim regex para marcar una anticipación positiva: el patrón posterior \zese verifica pero no se sustituye.
is#?? Déjame explicarte ... (si está interesado)
#(también en ==#y otros ) impone mayúsculas y minúsculas. De lo contrario, con :set ignorecase(que uso, porque eso es necesario para lo útil :set smartcase), ¡¡¡vim lo considerará 'a' == 'A'!!

Loco como es, realmente deberíamos tenerlo en cuenta: ==dado que depende de la configuración del usuario, ¡ debería usarse NEVAR! (Excepto donde eso sería realmente lo que desea). Incluso seguiré la recomendación de usar ==#al comparar enteros: http://learnvimscriptthehardway.stevelosh.com/chapters/22.html#code-defensively
is#en lugar de ==#es otra forma de codificar a la defensiva: mejora la seguridad de los tipos: http://google.github.io/styleguide/vimscriptguide.xml?showone=Type_checking#Type_checking
Se debe usar al comparar con una cadena literal.
'single-quoted'en lugar de "double quoted" cadenas hay otra buena práctica: http://google.github.io/styleguide/vimscriptguide.xml?showone=Strings#Strings
HT @fc. - esta respuesta se basa en su respuesta , solucionando algunas deficiencias.
Una alternativa al complemento keepcase es SmartCase, que reemplaza las palabras mientras se mantiene la carcasa original . (No se deje desanimar por las malas calificaciones).
:%s/file\A\?size/\=SmartCase("LastModifiedTime")/ig?
:SmartCasecomando. Lo he extendido en mi propio tenedor . Tenga en cuenta que esto requiere ingo-library como una dependencia.