Lunes, Enero 16, 2006

Snippets de TextMate para Vim

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.

posteado por PpluX @ 1:03 am tags:Vim  

7 Comentarios »

  1. Vaya, justo ahora me iba a poner a buscarlo. Le pegaremos un vistazo al código para ver qué tal.

    Comentario por Fernando — Enero 16, 2006 @ 10:06 pm

  2. No, si el script es más que recomendable. Lo que pasa es que aún le queda un poco (para mi lo de poder usar tab para moverse sería sencillamente genial), mientras tanto bindeo la tecla a cualquier otra que sea cómoda y a tirar millas.

    Además, he escrito al autor y me ha mandado una versión de prueba para lo del tab, no va bien, pero intentaremos echarle un vistacillo. El vim tiene un problemilla raro raro raro para pillar la posición del cursor correctamente y no inserta bien los tabs donde toca :D (vamos, que no se cómo se hace bien)

    Probadlo, que pese a todo va bien.

    Comentario por PpluX — Enero 17, 2006 @ 8:22 am

  3. Groucho!!! Mi ídolo.

    Comentario por xurde — Marzo 2, 2006 @ 1:28 pm

  4. Hola, veo que ya ha pasado mucho tiempo de esta noticia, pero no se si puedas ayudarme, para editar archivos html, puse el truco de usar @ en lugar de en vi ~/.vimrc y mis Snippets en ~/.vim/after/ftplugin/html_snippets.vim, el problema es que al parecer no toma las opciones esas y se va al primer

    Comentario por carlos — Noviembre 11, 2006 @ 6:06 pm

  5. que paso? se corto el mensaje :P

    *en lugar de “mayor que” “menor que” en ~/.vimrc …

    Bueno, el problema es que se va al “mayor que” como por default en lugar de irse al @
    Segun leí por ahi creo que es por que carga ~/.vimrc antes que snippetsEmu.vim como podría arreglar eso?

    Saludos y gracias por la ayuda! :D

    PD: existe alguna lista de correos de vim o del snippetsEmu en español?

    Comentario por carlos — Noviembre 11, 2006 @ 6:16 pm

  6. Para arreglar tu problema yo te diría que hagas lo que comento en el post, no se si has probado esto exactamente o no:

    au BufNewFile,BufRead *.html,*.rhtml let g:snip_start_tag = “@”
    au BufNewFile,BufRead *.html,*.rhtml let g:snip_end_tag = “@”

    Poniendo eso en el vimrc haces que cuando se cargue un fichero html (BufRead) o se crea un fichero html ( BufNewFIle) se usen esos tags. Fíjate que si quieres editar php por ejemplo usando estos tags tienes que añadirlo a la lista poniendo *.php , etc.

    Si siempre quieres usar “@” entonces pon en el vimrc:

    let g:snip_start_tag = “@”
    let g:snip_end_tag = “@”

    el vimrc debería cargarse siempre antes que los plugins, y el plugin comprueba si las variables tienen valor antes de ponerle el valor por defecto. Mírate el código del plugin para saber más detalles, ahora mismo hay un modo compatibilidad con textmate que te puede interesar.

    Por último si todo todo todo falla edita el plugin y cambia añade los let … = @ al principio del plugin… :P

    Comentario por pplux — Noviembre 12, 2006 @ 1:07 pm

  7. Es un poco tardío pero bueno para los que caigan de casualidad por aquí el autor de este plugin ha dejado unos cuantos snippets para ir probándolo en el svn :-)

    http://snippetsemu.googlecode.com/svn/trunk/after/ftplugin/

    Comentario por Rafa — Noviembre 15, 2006 @ 1:29 am

Suscripción RSS a los comentarios de la entrada. URI para TrackBack.

Deja un comentario

Gestionado con WordPress