jueves, 5 de abril de 2012

Vim y sus plugins

Menos pizzas, Vim puede hacerte todo lo demás. Si tienes complejo de pulpo (aka te gustaría tener un par de manos mas para poder usar Emacs como es debido), este post no es para ti.

He empezado a programar con Erlang y hay un par de pluguins a instalar que son indispensables. Es importante recalcar la importancia que tiene tener un entorno de trabajo cómodo y eficiente, para que el trabajo salga mas rápido y mejor.

[Plugin para Erlang]
En el caso de erlang me he instalado
vimerl[1] que entre sus muchas características como syntax highlight, code completion, auto-indent, etc... tiene una cosa que es una pasada que ellos llaman el QuickFix. Cada vez que guardas un fichero, comprueba si hay errores de sintaxis, variables no declaradas, variables no usadas, funciones no usadas, y demás... muy cómodo para no tener que hacer el proceso de: compilar, buscar errores en la consola, ver qué fichero y en qué línea han ocurrido, etc... E aquí un ejemplo. Fijaos que en la parte inferior de la pantalla nos pone una descripción del error en donde tenemos el cursor:


Los warnings los marca de color amarillento, mientras que los errores te los pone en rojo. Muy cómodo ya que cada vez que guardas el archivo puedes ver si tienes errores en el fichero o no. Muy chulo.

[Plugins generales]
Mas cosicas. Pues mira, uno que es básico, pero que hasta ahora no me gustaba mucho, es el NerdTree[2](vaya puto nombre feo le han puesto a la criatura). Le he dado una oportunidad y de momento va de lujo. Es un explorador de ficheros, con el que se puede navegar por la estructura de directorios des de Vim:


Cómodo y fácil de usar. Hay dos configuraciones que te pueden hacer la vida mas fácil. La primera es para poder ignorar ficheros, y que no aparezcan en el listado. Añadiendo en el .vimrc la siguiente línea, se consiguen omitir los resultados que hagan match a las expresiones regulares de la lista (en mi caso ignorar loc ficheros *.pyc )
let NERDTreeIgnore=['.*pyc$']
La segunda es añadir un keybinding para mostrar/ocultar el NerdTree. Esto se consigue añadiendo ésta línea en el .vimrc:
map :NERDTreeToggle
El pulsar F2, se abre/cierra el NerdTree. Muy cómodo también.

Y por último, un pluguin que complementa al NerdTree: CommandT[3]. Básicamente es un listado de tooodos los ficheros del proyecto y escribiendo un par de letras puedes abrir el fichero que quieras. Ejemplo:
Digamos que tenemos un fichero en www/back/back/controlers/dashboard.mako. Sería suficiente con escribir 'dash', como para que él ya te lo encuentre. Pero vamos a otro caso mas complicado en el que tenemos:
/www/back/back/templates/foo
/www/back/back/templates/bar
/www/back/back/templates/lala
/www/back/back/widget/foo/template.mako
/www/back/back/widget/bar/template.mako

En este caso, si quremos encontrar el fichero "/www/back/back/widget/foo/template.mako" será suficiente con escribir: "wifte", que se corresponde a:
  • "wi" de "widget"
  • "f" de "foo"
  • "te" de template
Aparte de mi burda explicación que he hecho aquí, recomiendo que mireis el screencast[4] hecho por el mismo creador del plugin.

También crearemos un keybinding para este plugin, de modo que la pulsar F3 se abra automáticamente CommandT. El comportamiento por defecto para ejecutar CommandT es pulsar la combinación t. La tecla es la tecla "\", que en teclado inglés está en una posición muy cómoda, pero en el teclado castellano está a tomar por culo. Para esto la mayoría de gente se redefine la tecla a la coma ",".
map :CommandT
let mapleader = "," " Change the key from \ fo ,


Con estos pluguins tenemos una combinación ideal, ya que si no sabemos qué buscamos, tenemos el NerdTree para navegar por los directorios y encontrar el fichero buscado. Si sabemos el nombre exacto, podemos usar CommantT para localizar el fichero, y palante toda. Por falta de recursos, que no sea.

He probado mas plugins (para buffers, tabs, cerrar paréntesis automáticamente, escribir html automáticament, etc..) pero ninguno de ellos me ha gustado. Pero la verdad que ha valido la pena encontrar estos tres plugins ya que mejoran mucho mi entorno de desarrollo.

Y nada mas por hoy. Un saludo, Jan.


[2] http://www.vim.org/scripts/script.php?script_id=1658 pero otra vez recomiendo mejor bajar la última versión de https://github.com/scrooloose/nerdtree
Post relacionado http://inedit00.blogspot.com.es/2010/04/dandole-cana-vim.html . Ahora que lo veo me parece super elemental, pero oye, que de esto hace 2 años y digamos que esto ya lo tengo bastante "mascado", jeje.

No hay comentarios:

Publicar un comentario