Vim: El editor fantástico

Antes de comenzar me gustaría mostraros el siguiente vídeo:

Impresionante, ¿verdad?

Como ya sabréis vim es un editor de texto. Si editáis pocos archivos de texto, no os recomiendo su uso. Vim tiene muchos comandos que se olvidan con facilidad. Para una edición simple con Gedit os puede valer. Pero si editas muchos archivos al día, Vim puede ser muy útil.

Vim posee división de vista (editar el mismo archivo desde diferentes posiciones), snipplets (plantillas como las que se muestran en el vídeo), autocompletado de texto, ayudas al desarrolllo web, a la programación, scripts, corregir la ortografía, permite alterar la interfaz y crear tus propios menús,…

Vim tiene dos modos de funcionamiento, uno gráfico y el otro en modo texto. Me voy a centrar en el modo gráfico.

Instalación

Para instalar Vim en modo gráfico desde Ubuntu se teclea en el terminal:

sudo apt-get install vim-gtk

Para ejecutarlo lo podemos buscar en los menús o ejecutar en un terminal:

gvim

Una vez instalado, tiene el siguiente aspecto:

gvim

El aspecto de cualquier editor de texto.

El modo de insercción

Vim tiene un comportamiento extraño para los tiempos actuales. Si intentas escribir algo en él, verás que no te lo permite 😦 . Vim se basa en comandos. Al principio su funcionamiento es complejo, pero rápidamente uno se acostumbra.

Para escribir deberemos pulsar la tecla i (modo inserción). En la parte inferior nos indicará que estamos en modo inserción:

insertar

Ya podemos escribir normalmente. 🙂

Autocompletar: Si estamos en modo inserción, empezamos a escribir una palabra y antes de acabar de escribirla pulsamos Ctrl N se mostrarán las opciones para autocompletar la palabra que estamos escribiendo. Por ejemplo, en el siguiente texto se ha escrito mundo y mundos. si escribimos mu y pulsamos Ctrl N:

autocompletar

La lista de palabras se toma de las palabras que hayamos escrito en el documento que estamos editando. Esta características es extremadamente útil y uno la hecha en falta cuando no la tiene.

A estas alturas el lector ya habrá comprobado que las combinaciones de teclas Ctrl C ó Ctrl V no funcionan como en el resto de editores. Muchas de estas combinaciones de teclas fueron impuestas por los primeros Windows, vi es anterior a todo eso por lo que mantiene sus propias combinaciones de teclas.

Si estamos usando el modo gráfico de Vim, podremos usar los menús y la barra de herramientas para las tareas más comunes como seleccionar, copiar o pegar.

El modo comando: copiar y pegar

En cualquier momento si pulsamos la tecla Escape (ESc en la mayoría de los teclados), pasamos al modo comando. Cada combinación de teclas que pulsamos hará una acción. Si usamos Vim en modo gráfico, todas estas acciones las podremos hacer usando los menús o la barra de herramientas. Las teclas asociadas a los comandos nos darán velocidad. Entre las más usadas están:

Teclas Acción
dd Borra una línea
x Borra un carácter
u Deshacer
Ctrl R Rehacer
p Pegar
v Modo visual. Se usa para seleccionar
y Copiar (se copia algo seleccionado desde el modo visual)

Es decir, para pegar no funciona Ctrl V, hay que ir a modo comando y pulsar p (Esc p).

Para copiar, se pueden usar el menú y el ratón, pero para hacerlo por teclado, se pulsará v (desde el modo comando) y se usarán las flechas del ratón para seleccionar. Después se usará ‘y’ para copiar.

División de vista

Si estamos usando el modo gráfico de Vim, en el menú Ventana tendremos dos opciones interesantes, “Dividir ventana” y “Dividir verticalmente”. Si las usamos podremos ver y editar varias partes a la vez del mismo archivo:

dividir-vista

En este caso se ha dividido el texto en tres vistas. Con el ratón podemos seleccionar cada vista y redimensionarlas.

Esto es útil cuando estamos programando y queremos ver la declaración de una función mientras escribimos código en otra.

En el caso de querer cerrar una vista, hay que ir al menú “Archivo” y seleccionar “Cerrar”.

Autocompletado en programación

Ya se ha visto que con Ctrl n se puede auto completar texto usando las palabras que se encuentran en el documento. Vim también puede completar funciones de los lenguajes de programación.

Vim es un gran editor, pero uno de sus grandes fallos es que muchas de las opciones que lo hacen ser útil, no están activadas.

Para activarlas tenemos que abrir un terminal y editar el archivo ~/.vimrc:

gvim ~/.vimrc

Este archivo guarda la configuración de Vim. Se ejecuta cada vez que abrimos Vim, por lo que para que un cambio sea visible por Vim, tenemos que hacer el cambio, cerrar Vim y volverlo a abrir.

El archivo que yo tengo en ~/.vimrc es:

autocmd FileType python set omnifunc=pythoncomplete#Complete
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
autocmd FileType php set omnifunc=phpcomplete#CompletePHP
autocmd FileType c set omnifunc=ccomplete#Complete
set nu
set ai
set cindent
filetype plugin on

Activa algunas de las opciones más útiles.

Una vez introducida la configuración anterior en ~/.vimrc, sólo hay que pulsar Ctrl x Ctrl o para autocompletar código y ver las diferentes opciones. Por ejemplo, si estamos editando CSS y escribimos “font-” y pulsamos Ctrl x Ctrl o, veremos un desplegable con las opciones disponibles para el estilo “font”:

font

Plantillas

Una opción interesante de Vim es que se pueden ampliar sus capacidades mediente plugins. Para instalar un plugin sólo hay que descargarlo y descomprimirlo en la carpeta ~/.vim

La carpeta ~/.vim puede no estar creada, por ello en un terminal deberemos escribir:

mkdir ~/.vim

Un plugin muy interesante es SnipMate. Es una colección de pequeñas plantillas, que se activan según el lenguaje de programación, que podemos aplicar escribiendo el nombre de la plantilla y la tecla tabulador. Además podemos crear nuestras propias plantillas.

Para instalar SnipMate, sólo hay que descargarlo y descomprimir en ~/.vim:

unzip snipMate.zip -d ~/.vim

También hay que añadir la línea siguiente a ~/.vimrc:

filetype plugin on

Una vez activado en la carpeta ~/.vim/snipples/ tenemos las plantillas disponibles según el lenguaje de programación. Allí podemos cambiar las plantillas disponibles o añadir plantillas nuevas.

En el siguiente vídeo podemos ver cómo se usan las plantillas:

Yo me he creado dentro de las plantillas de html la siguiente:
snippet xid
<${1:p} id="${2}">${3}</$1>

El nombre de la plantilla es xid. Por lo que se dispara cuando se escribe xid y se pulsa tabulador. Esta plantilla escribe de forma automática:

   <p id=""></p>

Según vamos escribiendo y pulsando tabulador va rellenando las posiciones de los “$” que indica la plantilla. Los ${1}, ${2}, ${3},… es la posición del cursor cada vez que pulsamos tabulador. El $1 significa que lo que se escriba en ${1} se copiará en esa posición. El ${1:p} significa el texto por defecto, una p.

Selección en bloque

Supongamos que se tiene una tabla de números como la siguiente:

numeros-1

Ahora se desea eliminar la columna del centro. Para ello podemos usar las selección en bloque. La selección en bloque permite seleccionar una columna en lugar de una línea de texto.

Para entrar en el modo de selección en bloque, se pulsa Escape (modo comando) y después se pulsa Ctrl v Después usaremos las flechas para seleccionar la zona que deseemos. En nuestro caso la columna central:
numeros-2
Finalmente usaremos la tecla x (recordemos que servía para suprimir) para eliminar la columna. Por lo que quedará:
numeros-3
También podemos escribir en bloque. Si desde el modo comando pulsamos Ctrl v y después pulsamos I, podremos escribir el mismo texto en varias líneas a la vez. Para finalizar pulsaremos la tecla Escape. Es decir, si queremos escribir el texto “Datos” al comienzo de cada línea del ejemplo anterior, pulsamos Ctrl v, marcamos la primera columna de las tres primeras líneas:

numeros-4

Pulsamos I, escribimos “Datos”, pulsamos Escape y el resultado será:
numeros-5

Creando nuestros propios menús

Supongamos que hay un comando que usamos algunas veces pero es muy útil. Lo más seguro es que se nos olvide. Podemos editar el archivo ~/.vimrc y añadir una entrada en el menú.

Por ejemplo, para crear una entrada en el menú herramientas que se llame Autocompletar y ejecute Ctrl x Ctrl o desde el modo de inserción, habría que escribir en al archivo  ~/.vimrc:

amenu Tools.Autocompletar i<C-x><C-o>

Tools es el menú herramientas. Con un punto se separa el nombre del menú. Después viene el comando. En nuestro caso el comando es i, la i es porque se supone que todos los comandos se ejecutan desde el modo comando y este comando se debe ejecutar desde el modo de inserción.

Reiniciamos Vim y ya está.

Dentro de la carpeta /usr/share/vim hay una carpeta llamada vim73 (o vim74, vim75 según la versión de vim que esté usando) y allí se encuentra el archivo “menu.vim”. En este archivo se encuentran los menús por defecto y se pueden sacar ideas para crear otros menús.

Más información sobre los menús se puede encontrar en el manual del vim.

Anuncios
Esta entrada fue publicada en Software. Guarda el enlace permanente.

4 respuestas a Vim: El editor fantástico

  1. Noé Reyes dijo:

    Impresionante este editor de texto, no conocía ninguno de este estilo. Aunque este tipo de editores con autocompletado tengan sus detractores, me parece que sabiendolos usar se puede agilizar mucho un trabajo.
    Acabo de conocer este blog y tiene mucho contenido interesante, sigue así! Saludos

  2. lihersanchez dijo:

    Excelente articulo, me ha gustado mucho, igual me planteo cambiar mi Geany por el vim :D. Felicidades por el blog, esta muy bien me añado el feed ;D, un saludo

  3. Muchas gracias por el artículo, en emacs utilizaba el modo cua-mode, estaba buscando algo parecido en vim, y con la explicación de los bloques fue mas que suficiente, ahora puedo escribir varias líneas en bloques. Actualmente encontré el siguiente proyecto: http://vim.spf13.com/#vimrc que me parece una maravilla, solo configuras algunos detalles, pero ya vienen muchas cosas que generalmente necesita un developer. Saludos.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s