2009-01-13 12 views
10

Me he encontrado con el siguiente caso algunas veces y me preguntaba si hay una manera rápida de manejarlo en Vim.Vim Case-Agnostic Regex

voy a tener un archivo de origen como la siguiente:

#ifndef _FOO_H_ 
#define _FOO_H_ 

class Foo { 
    Foo(int foo); 
}; 
#endif 

Y me gustaría convertirlo en lo siguiente:

#ifndef _BAR_H_ 
#define _BAR_H_ 

class Bar { 
    Bar(int bar); 
}; 
#endif 

lo tanto, quiero todo foo -> barra, pero para mantener la capitalización del original. En este momento, he estado haciendo esto con 3 o 4 expresiones regulares diferentes, pero parece que debería haber una mejor manera. ¿Algunas ideas?

Respuesta

10

This script hará una búsqueda/sustitución de conservación de mayúsculas y minúsculas.

Copiar el script en el directorio de plugins (~/.vim/plugin), y luego hacer Vim Abolish plug-in de

:set ic 
:%s/foo/\=KeepCaseSameLen(submatch(0), 'bar')/g 
+0

Debe actualizar su versión de keepcase. Agregué un comando: SubstituteCase que simplifica mucho las sustituciones. :) –

1

Tim Pope puede hacer esto y toda una tonelada más. :%Subvert/string/new string/g conservará mayúsculas, minúsculas, etc., y el complemento también admite variantes de palabras utilizando una sintaxis {var1,var2}. Muy útil.

Cuestiones relacionadas