2008-09-10 12 views
5

A medida que desarrollo más con vim, me resulta deseable copiar en bloques de código útil, similar a "plantillas" en Eclipse.¿Cuál es la mejor estrategia para los fragmentos de código y las macros en vim?

Yo estaba pensando en hacer un archivo separado para cada trozo de código y simplemente leerlos con

:r code-fornext 

pero eso parece un poco primitivo. Buscando en Google encuentro macros vim mencionados y algo sobre "mapas" pero nada que parezca sencillo.

Lo que estoy buscando son p. algo así como "Plantillas" de Eclipse, así que aparece un fragmento de código con el cursor sentado en el medio. O "Macros" de JEdit que puedo grabar haciendo eliminaciones complicadas y renombrando en una línea, luego puedo reproducirlo en otras 10 líneas para que les haga lo mismo.

¿Tiene vim algo así como estas dos funcionalidades?

Respuesta

8

Para registrar macros en Vim, en el modo de comando, presione la tecla q y otra tecla a la que desea asignar la macro. Para macros de descarte rápido usualmente solo presiono qq y asigno la macro a la clave q. Una vez que esté en el modo de grabación, ejecute las teclas. Cuando termines, asegúrate de volver al modo comando y presiona q nuevamente para detener la grabación. Luego, para reproducir la macro manualmente, puede escribir @q. Para volver a reproducir la macro ejecutado anteriormente puede escribir @@ o para ejecutarlo 10 veces puede escribir [email protected] o [email protected], etc ..

En resumen:

+----------------------------------+-------------------------------------+ 
| start recording a macro   | qX (X = key to assign macro to)  | 
+----------------------------------+-------------------------------------+ 
| stop recording a macro   | q         | 
+----------------------------------+-------------------------------------+ 
| playback macro     | @X (X = key macro was assigned to) | 
+----------------------------------+-------------------------------------+ 
| replay previously played macro | @@         | 
+----------------------------------+-------------------------------------+ 

En lo que respecta a trozos de código, he encontrado y comenzó a usar un complemento de Vim llamado snipMate, que imita la función de fragmentos de texto de TextMate. Usted puede obtener el plug-in aquí:

http://www.vim.org/scripts/script.php?script_id=2540

Y un breve artículo sobre el uso de snipMate (junto con una breve screencast mostrando que en uso):

http://www.catonmat.net/blog/vim-plugins-snipmate-vim/

Esperamos que este ¡servicial!

+0

@@ sólo parece funcionar para la versión 7, pero puedo llamarlo con @q en la versión 6, muy útil, gracias! –

0

En vim.wikia, encontrará un category of tips dedicado a la expansión de fragmentos y abreviaturas. También verá una lista de complementos que facilitan la definición de fragmentos complejos/plantillas-archivos.

HTH,

Cuestiones relacionadas