Para el qué aun no haya visto TextMate en acción sólo tiene que curiosear cualquiera de los screencasts de ruby on rails, se trata de una de estas aplicaciones que le cambian a uno el concepto de editor por completo. Dan ganas de comprar una licencia (39$), aunque además tendrás que comprarte algo que funcione con Mac OS X (que tampoco es mala idea :)).

Pero para los vimmeros ha llegado la solución, SnippetsEmu, se trata de un script para vim con muy poco tiempo pero que funciona realmente bien, el autor lo está actualizando con bastante frecuencia y me juego que este va a ser pronto uno de los scripts más cotizados en el top-rated.

 Update: Originalmente este post iba a explicar como usarlo, y algún que otro ejemplo. Pero he estado curioseando el código y no me ha acabado de convencer como está hecho. Funciona muy bien y lo pienso usar, pero aun le falta. En cualquier caso os dejo unas notas de uso para que no perdáis mucho el tiempo:

  • Los mappings en vez de con iabbr, se hacen con Iabbr (i-latina-mayúscula)
  • los tag del tipo <elem:element>, son tags que tienen valor por defecto. En este caso el nombre del tag es «element» (lo que implica que cualquier cosa que se ponga aquí afecará al resto de tags de tipo ) el «elem» es en si el valor por defecto (si no se escribe nada y se pasa a la siguiente etiqueta se podrán ese valor).
  • Es muy cómodo añadir un tag vacío «<>» al final de la plantilla, o en el último punto, para quedarnos ahí editando después de dar valor a todos los tags.
  • <CR> sirve para poner retornos de carro y <TAB> para poner un tab, estas etiquetas son del vim pero son muy prácticas para hacer los mappings.
  • Mirad la parte de ejecutar código, es realmente útil ( en etiquetas del tipo <foo:substitute(@z,’.*’,’\U\0′,»g»)>) Donde @z es una variable que tendrá el valor que el usuario pusiera en <foo> previamente.
  • Dercargad el script y dejadlo en directorio ~/.vim/plugin/ , los ficheros con los Iabbr dejadlos en directorio ~/.vim/after/plugin/ para que se carguen automáticamente pero siempre después del plugin.
  • Si queréis usarlo para editar .rhtml (ruby on rails views) os aconsejo esto para el .vimrc:
    • au BufNewFile,BufRead *.html,*.rhtml let g:snip_start_tag = «@»
      au BufNewFile,BufRead *.html,*.rhtml let g:snip_end_tag = «@»
    • De esta forma se usa el símbolo @ en vez de «<>» para marcar los snippets y no molesta con el resto de html
  • Por defecto el script funciona saltando con la tecla <S-Del> (shift-del o mayúsculas-del), se puede cambiar escribiendo en el ~/.vimrc   imap TECLA <Plug>Jumper.

A probar 🙂

PD: La intención es hacer en un futuro, cuando tenga tiempo, una versión que funcione con «tab» de forma más similar al textmate. Por lo visto en el código hubo una revisión que comentando y descomentando unas líneas se podía usar con el tab pero el autor lo descontinuó. En definitiva se debería poder hacer más sencillo y más práctico, ya os contaré cómo es el mundo del scripting en vim.