¿Cuál es la mejor estrategia para fragmentos de código y macros en vim?

StackOverflow https://stackoverflow.com/questions/54401

  •  09-06-2019
  •  | 
  •  

Pregunta

A medida que desarrollo más con vim, me encuentro con ganas de copiar bloques de código útil, similares a las "plantillas" en Eclipse.

Estaba pensando en crear un archivo separado para cada fragmento de código y simplemente leerlos con

:r code-fornext

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

Lo que estoy buscando es, por ejemplo.algo así como las "Plantillas" de Eclipse, por lo que introduzco un fragmento de código con el cursor en el medio.O las "Macros" de JEdit, que puedo grabar realizando eliminaciones complicadas y cambiando el nombre en una línea, luego puedo reproducirlas nuevamente en otras 10 líneas para que les haga lo mismo.

¿Vim tiene algo parecido a estas dos funcionalidades?

¿Fue útil?

Solución

Para grabar macros en Vim, en el modo comando, presione el botón q tecla y otra tecla a la que desea asignar la macro.Para macros de desecho rápido normalmente simplemente presiono qq y asignar la macro al q llave.Una vez que esté en el modo de grabación, ejecute las pulsaciones de teclas.Cuando haya terminado, asegúrese de volver al modo comando y presione q nuevamente para detener la grabación.Luego, para reproducir la macro manualmente, puede escribir @q.Para reproducir la macro ejecutada anteriormente, puede escribir @@ o para ejecutarlo 10 veces podrías escribir 10@q o 20@q, 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   | @@                                  |
+----------------------------------+-------------------------------------+

Con respecto a los fragmentos de código, encontré y comencé a usar un complemento de Vim llamado snipMate, que imita la función de fragmentos de TextMate.Puede obtener el complemento aquí:

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

Y un breve artículo sobre el uso de snipMate (junto con un breve screencast que muestra su uso):

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

¡Espero que esto te resulte útil!

Otros consejos

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

HTH,

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top