Menú principal

Empezando a usar Vim con spf13-vim

29 May
Published by antonio.hernandez in

Tags 

vim

He sido usuario de vi/vim desde hace ya algo de tiempo y todo a raíz de que inicie a usar GNU/Linux de igual forma hace más o menos 8 años, y si hay algo que siempre leía era la importancia de aprender a usar EL editor de texto de Unix, vi. El asunto con vi es que no es tan fácil para uno ver la productividad o beneficio en su uso diario y con esto espero que se sitúen cerca del 2004, en ese entonces la única justificación que se te daba para usar vi era algo como "si usas algún Unix tendrás que editar archivos para configurar el sistema operativo y vi es el editor de texto estándar".

¿A qué viene todo el anterior párrafo? Pues bien, actualmente se ha puesto de moda el promocionar a Vim, sucesor del "viejo" vi, entre ciertas comunidades de programadores. Lo anterior me parece curioso puesto que Vim por un lado viene con cierta "cultura" del mundo Unix (programas pequeños que cumplan una sola función y la cumplan bien) y por otro lado comunidades de programadores con una apreciación por entornos integrados para el desarrollo (es decir, todo en uno).

Desde hace años Vim cuenta con Vimscript, un lenguaje de programación que permite extender sus características primitivas, dando surgimiento a una gran cantidad de scripts o plugins. No solo eso, Vim también cuenta con una interfaz para desarrollar plugins en Python, Ruby, Lua y Perl siempre y cuando haya sido compilado con el soporte para alguno de estos lenguajes de programación. Bien, ahora Vim es más poderoso :) pero... ¿cómo encuentro el plugin que me pueda servir?, ¿cómo instalar y mantener actualizados los plugins?, ¿cómo configuro los plugins?... Ok, ya lo logré, ahora tengo que usar otro equipo-servidor en donde no tengo mis plugins instalados, ¿qué hago?.

A pesar de que se han desarrollado una gran cantidad de plugins, que te permitirán trabajar con distintos entornos-lenguajes-de-programación-frameworks-tools, Vim no tiene integrado una especie de plugin manager, nada raro en Eclipse, Netbeans, IntelliJ, Notepad++ y sí, inclusive Emacs tiene un plugin manager. ¿Consecuencia? Los plugins disponibles van por su propio camino, es decir que tu como usuario tendrás que mantenerte al tanto de las actualizaciones de los plugins que has intalado... ¿github? ¿bitbucket?, ¿entiendes mi punto?. Pues bien, he aquí que nace el proyecto http://vim.spf13.com, que trata de mitigar los puntos que he expuesto.

Como en su página lo indica, spf13-vim es una distribución de plugins y recursos para Vim, GVim (la edición de Vim con GUI) y MacVim, proveyendo características modernas (sí, vim no es moderno ;) como un un sistema para el manejo de plugins, autocompletado, etiquetado y más.

Instalación

De su página web se obtiene el siguiente vinculo http://j.mp/spf13-vim3, el cual es un shell script que ejecutaremos:

$ cd ~ $ wget http://j.mp/spf13-vim3 $ sh spf13-vim3 $ cd ~/.spf13-vim-3 $ git pull $ vim +BundleInstall! +BundleClean +q

Lo anterior instalará a spf13-vim en ~/.spf13-vim-3, creará varios directorios, algunos archivos (con el prefijo .vimrc) en ~ y finalmente descargará e instalará un conjunto de plugins más conocidos o usados en Vim.

Actualizaciones

Para actualizar a spf13-vim y los plugins que la integran solo ejecutaremos:

$ cd ~/.spf13-vim-3 $ git pull $ vim +BundleInstall! +BundleClean +q

Configuraciones personales

Puesto que tarde o temprano deseamos configurar ciertos aspectos de Vim podemos hacerlo en el archivo ~/.vimrc.local, como ejemplo dejo ciertos fragmentos del mío:

" Solarized Colorscheme for Vim " set background=light set t_Co=256 let g:solarized_bold=0 let g:solarized_underline=0 let g:solarized_italic=0 let g:solarized_termtrans=1 colorscheme solarized

" Spell Check " let b:myLang=0 let g:myLangList=["nospell","es","en"] function! ToggleSpell() let b:myLang=b:myLang+1 if b:myLang>=len(g:myLangList) | let b:myLang=0 | endif if b:myLang==0 setlocal nospell else execute "setlocal spell spelllang=".get(g:myLangList, b:myLang) endif echo "spell checking language:" g:myLangList[b:myLang] endfunction set nospell

nmap :call ToggleSpell() hi SpellBad term=reverse ctermfg=white ctermbg=darkred hi SpellCap ctermfg=white ctermbg=darkyellow hi SpellRare ctermfg=white ctermbg=darkblue hi SpellLocal term=reverse ctermfg=black ctermbg=darkgreen

" Paste toggle " nnoremap :set invpaste paste? set pastetoggle= set showmode

" UTF-8 " set encoding=utf-8 set fileencoding=utf-8 set fencs="ucs-bom,utf-8" set fileencodings="ucs-bom,utf-8" set termencoding=utf-8

" Persisten undo " set undofile set undolevels=1000 set undoreload=10000

" Directory for temporary and backup files " let g:spf13_consolidated_directory = $HOME . '/.vim/'

Instalando otros plugins

Para ver la lista de plugins instalado dentro de Vim ejecuta :BundleList y en caso de que quieras instalar algún plugin extra puedes hacerlo usando el archivo ~/.vimrc.bundles.local. Por cierto, el sistema para el manejo de plugins no es más que el plugin Vundle.

Aprendiendo a usar vim

Lo mejor que puedes hacer es desde la línea de comando ejecutar vimtutor es para aprender lo básico de Vim ;)

Finalmente

El desarrollo de Vim aún sigue en pie y es interesante observar que en la encuesta de características que se desea ver para la prox. versión, 7.4, está en primer lugar características de IDE ;) http://tech.groups.yahoo.com/group/vimannounce/message/216

Éste no es el único proyecto que plantea hacer de Vim algo más moderno, pueden encontrar también a https://github.com/humiaozuzu/dot-vimrc