Usted sólo puede pegar y adaptar este:
(Por supuesto, si lo hace de vez en tiempo, usted va a querer un plugin en lugar de esta monstruosidad. Pero para algunos que tienen prisa y sólo se necesita una vez, esto es un truco rápido para su 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')
Aparte del patrón de búsqueda, usted tiene que editar los cuatro '
cadenas '
en el código de sustitución: Editar las partes en negrita:
:% s/\ c mal \ ze trabajo/\ =
(submatch (0) [0] es # toupper (submatch (0) [0])? 'G': 'g').
(subcoincidencia (0) [1] es # toupper (subcoincidencia (0) [1]) 'OOD':? 'ood')
No utilice este 'naranja' versión para pegar, ya que sus caracteres linebreak también romperán el comando.
/\ze
es el azúcar sintáctica vim expresión regular para el marcado de una búsqueda positiva hacia delante: El patrón después de \ze
se comprueba para, pero no sustituido.
is#
?? Déjame explicarte ... (Si está interesado.)
#
(también en ==#
y others) impone la distinción entre mayúsculas y minúsculas. De lo contrario, con :set ignorecase
(que yo uso, porque eso es necesario para el útil :set smartcase
), vim considerará 'a' == 'A'
!!
loco como es, que realmente debe dar cuenta de ello: Debido a que es el usuario-settings-dependiente, ==
debe usarse nevar! (. Excepto en los casos que en realidad sería lo que quiere) me incluso seguir la recomendación de utilizar ==#
al comparar números enteros: http://learnvimscriptthehardway.stevelosh.com/chapters/22.html#code-defensively
is#
en lugar de ==#
es otra forma de codificar la defensiva: Mejora la seguridad de tipos: http://google.github.io/styleguide/vimscriptguide.xml?showone=Type_checking#Type_checking
Se debe usar cuando se compara con un literal de cadena.
'single-quoted'
en lugar de "double quoted"
strings son otra buena práctica: http://google.github.io/styleguide/vimscriptguide.xml?showone=Strings#Strings
HT @fc. - Esta respuesta se basa en su answer, solucionando algunas deficiencias.
Esto debería ser una característica vim. Tiene mucho sentido. – Bach