Vim para Rails con plugins

Home  >>  Programación  >>  Vim para Rails con plugins

Vim para Rails con plugins

On abril 3, 2014, Posted by , In Programación,Rails,Vim, With No Comments

Buscando un editor ligero y útil para Rails me he encontrado con una solución sencilla… Vim

vim-logo

Hay muchos editores, pero este es especial. Se sirve de plugins variados para convertirse en lo que necesitas, mientras que el resto se orientan a una función concreta.

Las necesidades que busco son:

  • Coloreado de variables
  • Menú de navegación por carpetas
  • Salto de código entre el modelo, vista y controlador con funciones rápidas de teclado
  • Autocompletar
  • Poder lanzar comandos de rails sin salir del editor
  • … y cosas que todavía no sé que necesito e iré descubriendo.

En definitiva, mi receta rápida es…

Preparar el gestor de plugins llamado pathogen

mkdir -p ~/.vim/autoload ~/.vim/bundle; \
curl -Sso ~/.vim/autoload/pathogen.vim https://raw.github.com/tpope/vim-pathogen/master/autoload/pathogen.vi
cd ~/.vim/bundle

Y aquí la lista de plugins

git clone git://github.com/vim-ruby/vim-ruby.git
git clone git://github.com/scrooloose/nerdtree.git
git clone git://github.com/tpope/vim-rails.git
git clone git://github.com/kchmck/vim-coffee-script.gi
git clone git://github.com/tpope/vim-surround.git
git clone git://github.com/tpope/vim-repeat.git
git clone git://github.com/tpope/vim-fugitive.git
git clone git://github.com/godlygeek/tabular.git
git clone https://github.com/tomtom/tlib_vim.git
git clone https://github.com/MarcWeber/vim-addon-mw-utils.git
git clone https://github.com/garbas/vim-snipmate.git

Creamos un fichero .vimrc en el directorio raíz de nuestro perfil y lo dejamos de la siguiente forma

call pathogen#infect()
set nocompatible
syntax on
filetype plugin indent on
set shiftwidth=2
set tabstop=2
set expandtab

Gestionando Rails

  • :Rails new <aplicación>
  • :Rserver (lanza webrick como servidor web)
  • :Rpreview (Abre navegador por defecto con http://localhost:3000)
  • :Rgenerate scaffold Article title:string author:string content:text
  • :Rake db:migrate

Navegación por directorios

Con todo esto podemos hacer varias cosas. Para abrir el árbol de directorios escribimos :N+Tabulador (esto debería autocompletar :NERDTree). En este punto tenemos la posibilidad de crear marcadores con los ficheros o carpetas más utilizados escribiendo :Bookmark y mostrar los mardacores creados con B . Importante, los marcadores se pueden borrar con D.

Navegación por código

En este caso podemos usar los comandos:

  • :Rcontroller + Tabulación (abre un controlador)
  • :RView + Tabulación (abre una vista)
  • :A (abre el fichero alternativo. Sería el de tests de un controlador)
  • :R (abre el fichero relacionado. Sería el template de un controlador)
  • gf (si te pones encima de una palagra, apretando gf vamos a su definición)
  • :ta <palabra> (te lleva al primer tag que encuentra)

Autocompletar

Para el autocompletar hace falta algo más de ajuste. No es una herramienta muy compleja, pero en su sencillez radica la gracia.

apt-get install exuberant-ctags

He asociado el F12 a la generación de los tags, ya que me es más cómodo que en el ejemplo original. El fichero .vimrc entonces debe tener estas otras líneas al final.

" ,rt -&gt; regenerate tags, including objects/functions from installed gems
" http://effectif.com/vim/using-ctags-with-bundler-gems
map &lt;F12&gt; :!ctags --extra=+f --languages=-javascript --exclude=.git --exclude=log -R * `rvm gemdir`/gems/* `rvm gemdir`/bundler/gems/*&lt;CR&gt;&lt;C-M&gt;
" set tags-lookup-path
set tags=tags;/

" do not regard "-" as word seperator (css Files!)
set iskeyword+=-

Con esta configuración, apretando F12 podemos obtener todas las referencias a funciones y variables implicadas en el proyecto, incluyendo las gemas que estamos usando. Para hacer uso de esa funcionalidad sólo hay que apretar Ctrl + n o Ctrl + p para hacer aparecer la lista.

Plantillas de código con Snipmate… la joya de la corona.

La verdad es que este es uno de los plugins más útiles que he visto hasta la fecha. Es capaz de aplicar plantillas de código usando una abreviatura y apretando el tabulador. No sólo eso, es como un formulario pilotado el cual te permite navegar por la plantilla creada, completando la información básica. Lo más interesanet es que puedes adaptar y crear tus propias plantillas sin casi esfuerzo. Para ver cómo funciona simplemente hay que ir a la carpeta de snippets del plugin vim-snippets y encontrarás un fichero por lenguaje. Si lo abres como un fichero de texto verás la abreviatura para cada código.

En este video sobre Snipmate podéis ver un ejemplo de cómo funciona.

Links y recursos

A continuación os pongo los links donde he encontrado todo lo necesario para hacer el resumen que os ofrezco. Se explica con más detalle cada uno de los plugins y algún que otro truco.

Plugins de Vim para Rails
Uso del plugin rails.vim
Afinando el autocompletado
Uso del ctags
Más uso de ctags
Uso de NerdTree
SnipMate

Fernando Aparicio
Full Stack Developer. Entusiasta del Open Source, métodos de organización y colaboración ágiles.

Actualmente estoy en busca de otras formas de mejorar en mi trabajo. Aprovechar el talento innato y la colaboración en equipo.

Lean, Kanban, Scrum ... Descubrir las pequeñas cosas que dan calidad al proceso a través de las personas usando PNL. Renovar los esquemas para motivar la colaboración.

Nuevos tiempos, nuevas soluciones.
Comments are closed.