miércoles, marzo 24, 2010

Y Vim conoció a Akita

Nota original: Fabio Akita reinventa el uso de Vim - Actualización 4 (si, otra):

Luego de una cuidadosa recopilación y mergueo de plugins, Fabio "enchula" a Vim de una forma sorprendente.

Entre otras cosas, incorpora al NerdTree, un explorador de archivos bastante más cómodo que la conocida combinación :split . o vsplit .
Este explorador es de tipo árbol, muy cómodo, y es accesible mediante la combinación de teclas \p o Ctrl + f

Tambien agrega un buscador rápido de archivos tipo FuzzyFinder (TextMate / Vimmate), al alcance de la combinación :CommandT (Actualización 4: ver comentarios)

Además, agrega muchisimos colorschemes. Mi favoritos son borland (el del viejo Borland C), pyte, y railscasts (en gvim).

Tambien es destacable la cuidadosa selección de snippets y autocompletado de codigo, expresiones y palabras mediante las combinaciones Ctrl+U, Ctrl+I, Ctrl+O y Ctrl+P.

Y como broche de oro, Fabio logra meter el mouse dentro de Vim sin necesidad de usar Gvim, algo que agradecerán los administradores que entran en modo remoto, a poca velocidad, o sin opción a ssh -X. Incluso se pueden arrastrar las divisiones :split

La instalación del plugin de Akita se encuentra descripta en github.com/akitaonrails/vimfiles
Sin embargo, ANTES de comenzar la instalación, yo sugiero correr la siguiente línea:

sudo apt-get install ruby ruby-dev git-arch \
exuberant-ctags vim-gnome ncurses-term

Las instrucciones se encuentran también para Windows y OS/X.

*******

LUEGO de la instalación, mi recomendación es
1) sudo vim .selected_editor

y dejar la siguiente linea de esta manera

SELECTED_EDITOR="/usr/bin/vim"

Esta línea corrige una detección erronea por parte de crontab

2) Solo en casos especiales: prestarle atención al archivo .vim/vimrc, especificamente a cierta linea (aprox la 265):

"set railscasts colorscheme when running vim in gnome terminal
if $COLORTERM == 'gnome-terminal'
set term=gnome-256color "<---------- comentar esta línea
colorscheme railscasts
else
colorscheme default
endif

Si no me equivoco, esta línea es la causa de un comportamiento extraño, según el cual las teclas de cursor dejan de funcionar en modo Insert. Se debería comentarla usando la doble comilla (").

Si se les hace lio con todo esto de la instalación, manden un correo a sergio [at] eim esc edu ar, y les comparto mi carpeta con archivos de configuración.

10 comentarios:

Unknown dijo...

Buenisímo karancho! no estoy usando Ruby pero para Python muchas de estas cosas ayudan mucho
Vos lo pudiste probar en linux?
Saludos y gracias!

pancutan dijo...

Si, lo he usado bastante con wxPython hace un par de años.

Si mal no recuerdo, conviene enchufarle alguna ordenes respecto del espaciado de python.

En la versión de Fabio, el .vimrc está parametrizado para hacerse de a 2 espacios, que es el "Ruby Style".

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

Un abrazo!

pancutan dijo...

Agregado para no tener problemas con gvim:

Editar .vimrc, borrar toda referencia a set guifont, y dejarle una linea

set guifont=Monospace\ 12

Si se dispone de otra fuente, como Consolas:
set guifont=Monospace\ 12

pancutan dijo...

Perdon:

set guifont=Consolas\ 12

(hay que bajarla de internet)

pancutan dijo...

Vaya, sigo descubriéndole cosas a esto:

Para manejar ¡Tabs! desde adentro del explorador de archivos (\p):
gt -> se traslada entre tabs
t-> Abre el archivo en un tab nuevo

Y además:
i-> Abre el archivo como split horizontal
s-> Abre el archivo como vsplit vertical

pancutan dijo...

Hablando de muuuuchos colorschemes, aca hay una seleccion de los mas lindos que trae la selección de Fabio: http://www.vi-improved.org/color_sampler_pack/

¿Cual les gusta mas?

pancutan dijo...

Vaya, asi que de esta manera era el tema de los snippets...

"To find out all the abbreviations, take a look at the .vim/snippets folder. There you will find sub-directories for each file type. For instance, .vim/snippets/ruby-rails/hm.snippet means that if you type “hm[tab]” inside a model file, if will activate the “has_many” snippet (see on my screencast).

Encontrado en http://akitaonrails.com/2009/01/04/rails-on-vim-in-english con video y todo. Se puede ver los snippets funcionando hacia el minuto 12:49.

pancutan dijo...

Al parecer en sus ultimas actualizaciones, Fabio reemplaza el comando para buscar rapidamente archivos CommandT, por CtrlP.

Lo ideal es asignarle algun mapeo fácil. Yo le agregue al archivo ~/.vim/vimrc

abajo de la siguiente línea
silent! nmap p :NERDTreeToggle

una linea que dice:
silent! nmap o :CtrlP

Es decir, así como \p lanza el NerdTree, \o lanza el CtrlP

Luego solo es cuestión de escribir el nombre del archivo y CtrlP lo rastreará por nosotros bajo todo el árbol.

pancutan dijo...

Por cierto, el autocompletado funciona con [Tab] al final de una expresión, y Ctrl+n para ciclar entre las opciones.

pancutan dijo...

Por cierto, CommandT se activa haciendo
\t [esperar unos segundos mientras se puebla la pila] -> [escribir las primeras letras para filtrar la pila archivos]