2012-10-03 20 views
5

Quiero cambiar un grupo grande de identificadores de minúsculas a mayúsculas. Tengo un archivo con un número (cientos o más) de identificadores únicos que comienzan con q_. Construí una expresión regular que define esta coincidencia: (q_\w*) y ahora quiero aplicar el comando ~ para hacer que todas sean mayúsculas (actualmente son minúsculas). Siento que VIM es más que capaz de hacer esto, pero mi habilidad con eso aún no está allí, ¿puedes ayudarme?VIM: Seleccione una expresión regular, luego aplique un comando

Respuesta

6

Si desea arriba de los casos todo el identificador, para cada identificador en el archivo, utilice este comando sustituto:

%s/q_\w\+/\U&/g 

El truco aquí es & en el patrón de sustitución, que hace referencia a todo el partido. Esto sustituirá, p. q_identifier1 con Q_IDENTIFIER1.

Si sólo desea up-caso el q, entonces usted puede utilizar:

%s/q_\(\w\+\)/Q_\1/g 

ahora q_identifier1 se cambiará a: Q_identifier1

Si desea arriba de los casos todo lo excepto la q_, a continuación, utilizar:

%s/q_\(\w\+\)/q_\U\1/g 

Ahora q_identifier1 se cambiará a: q_IDENTIFIER1

+0

Gracias por la respuesta rápida, esto parece ser lo que estoy buscando, excepto, por ejemplo, tengo: q_name_confirm -> Quiero: q_NAME_CONFIRM, con la q todavía minúscula, gracias –

+0

con ese último ejemplo, Me aparece el error: E486: Patrón no encontrado: q _ \ (\ w + q \) –

+0

sí, eliminé la segunda q ¡y funcionó muy bien! gracias, también tuve que cambiar el '+' a '*', ¿tiene sentido? –

0

también se puede utilizar una macro para este propósito:

  • buscar su patrón: /q_\w*
  • iniciar la grabación de una macro: qq
  • hacen mayúsculas y Buscar siguiente: llve~n
  • deja de grabar tu macro: q
  • repite como neccessary: [email protected]

pero nada más o que envolverá y cambiar de nuevo a minúsculas (o, alternativamente, se puede apagar o wrapscanignorecase temporalmente).

Cuestiones relacionadas