2010-12-21 11 views
5

Me sucede muchas veces que quiero repetir un comando en Vim hasta que se cumple una determinada condición en lugar de solo varias veces. Por ejemplo, digamos que quiero hacer el código más ordenado:Vim: Comandos que se repiten "Hasta la condición" en lugar de "Recuento de horas"

Ogre::String GetConfigPath() const { return m_configPath; } 
Ogre::String GetConfigName() const { return m_configName; } 
Ogre::String GetConfigFileName() const { return m_configPath + m_configName + ".txt"; } 
Ogre::String GetConfigStateFileName() const { return m_configPath + m_configName + "-state.txt"; } 
Ogre::String GetConfigStatisticsFileName() const { return m_configPath + m_configName + "-statistics.txt"; } 
Ogre::String GetConfigDetailedStatisticsFileName() const { return m_configPath + m_configName + "-detailed_statistics.txt"; } 

Lo que suelo hacer es ir a la función con el nombre más largo, presione 'Tab' y luego alinear los otros apoyos de otras funciones para que coincida con ésta. Obviamente, la tarea ahora es agregar espacios antes de las llaves de otras funciones hasta que el cursor esté en la posición, digamos, 80 (que es la posición del corsé de la función más larga).

¿Hay alguna forma de repetir el comando hasta que el cursor esté en la posición x?

Esto es solo un ejemplo, y con frecuencia necesito repetir un comando hasta que se cumpla una cierta condición.

¿Alguna idea?

+3

Para ese caso muy específico, podría usar el complemento Align: http://www.vim.org/scripts/script.php?script_id=294 Para responder a su pregunta en un sentido más genérico, no tengo idea de cómo podría lidiar con condiciones arbitrarias que no sean el desarrollo de funciones específicas para cada caso. –

+0

Guau, no me creo a mí mismo :-) Sí, para ser honesto, siempre he pensado en la "edición condicional" en lugar de la "edición repetitiva". Si piensas en editar en abstracto, es un tipo especial de programación porque siempre tienes reglas para editar (incluso cuando escribes textos que no son de programación). ¡¿Como suena eso?! – Rafid

+0

@Xavier, gracias, sí, parece que tengo que desarrollar funciones para eso. – Rafid

Respuesta

3

No sé cómo hacerlo a través de vim solamente, pero creo que deberías probar el script Align.

+1

Creo que es difícil implementar "edición condicional", así que no creo que obtenga más respuesta. Gracias, tu respuesta es lo suficientemente buena como para ser la respuesta aceptada. – Rafid

Cuestiones relacionadas