|
feb 24
2009
|
Bash-support vim plugin. Adaptar Vim para editar bash scriptsEscrito por: Toni Serna en Divulgación el 24 de Febrero de 2009 |
|
Vim es un lobo con piel de cordero. Un editor de texto que muchos desprecian por su interfaz y por su manejo mediante combinaciones de teclas, pero flexible, potente y capaz como pocos.
En The Geek Stuff encontré un artículo acerca de cómo personalizar nuestro Vim para que escribir shell scripts sea mucho más cómodo. Lo probé y ahora os lo cuento en español. Una aportación genial de Fritz Mehner y que además también tiene versiones para otros lenguajes como Perl, C y C++
Introducción
Con el "tuning" que supone el "Bash-support plugin" para el Vim podremos automatizar tareas de edición que como programadores nos vemos obligados a repetir mucho:
- Añadir automáticamente cabeceras a los ficheros
- Añadir comentarios a de diversos tipos
- Escribir los esqueletos de los distintos comandos de control (if, case, for, while...)
- Verificar la sintaxis
- Consultar la documentación de un comando de Bash
- Convertir un bloque de código en comentario o viceversa
- Escribir rápidamente expresiones regulares
- ...
Este "plugin" de soporte al Bash es capaz de hacer todo lo anterior y por lo tanto nos ahorrará mucho tecleo. Veremos cómo instalarlo en 3 pasos y 8 de sus potentes prestaciones.
Instalación
Paso 1: Descargar el plugin.
Mediante los comandos siguientes nos podemos descargar los componentes de esta extensión desde vim.org
$ cd /usr/src
$ wget -O bash-support.zip http://www.vim.org/scripts/download_script.php?src_id=9890
(¡ ojo ! para descargar el fichero bash-suport.zip en /usr/src es posible que necesites privilegios de "root" por tanto antes de cada comando antepon "sudo" si usas Ubuntu o entra en una sesión de root con el comando "su" para otras distribuciones).
Paso 2: Instalarlo
Vuelve a la sesión de tu usuario personal (repetir ésto con cada usuario para el que quieras activar el soporte avanzado para Bash en Vim) y teclea:
$ mkdir ~/.vim # puede que el directorio ya exista
$ cd ~/.vim
$ unzip /usr/src/bash-support.zip
(Nota: el carácter "~" lo obtendrás pulsando "Alt Gr" + "ñ")
Paso 3: Activarlo
Edita tu fichero " .vimrc" personal e incorpórale al final el texto que se indica:
$ vim ~/.vimrc
filetype plugin on
Así de fácil, a partir de ahora desded Vim tendrás a tu alcance un conjunto de herramientas que repasamos a continuación.
8 utilidades para la edición de "bash scripts"
En un intento de mostrar en acción algunas de las cosas que os permitirá el "Bash Support Plugin" vamos a presentar 8 de sus utilidades. Todas ellas son válidas tanto para la versión de consola como para GVim, la versión gráfica de Vim para Gnome. Aunque la verdad es que si quieres usar toda la potencia de este plugin necesariamente deberás usar GVim (disponible en los repositorios de aplicaciones oficiales de Ubuntu).

Utilidad 1:Cabeceras automáticas
Simplemente cuando crees un nuevo fichero con extensión ".sh"
$ vim prueba.sh
éste comenzará con una cabecera como la que aparece a continuación:
#!/bin/bash
#============================================================
#
# FILE: prueba.sh
#
# USAGE: ./prueba.sh
#
# DESCRIPTION:
#
# OPTIONS: ---
# REQUIREMENTS: ---
# BUGS: ---
# NOTES: ---
# AUTHOR: (),
# COMPANY:
# VERSION: 1.0
# CREATED: 23/02/09 15:42:08 CET
# REVISION: ---
#============================================================
Esta cabecera puede personalizarse fácilmente editando el fichero: ~/.vim/bash-support/templates/bash-file-header
Además podemos hacer que aparezca con algunos campos cumplimentados por defecto, por ejemplo el autor, su correo-e, la compañía, etc. Para ello incluye líneas como las siguientes al final de tu archivo ~/.vimrc
let g:BASH_AuthorName = 'Toni Serna'
let g:BASH_Email = ' Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla '
let g:BASH_Company = 'EDIB - Escuela de Diseño e Informática de Baleares '
Así es como aparecen las cabeceras después de personalizar los ficheros que acabamos de mencionar:

Utilidad 2: Esqueletos de funciones ( \sfu )
Si en el editor en modo Normal pulsamos la secuencia \sfu (statement function - declaración de función) nos aparece un prompt en el que se pide el nombre de la función. Una vez tecleado ("funcion_ejemplo") veremos que en el lugar del cursor se habrá insertado el esqueleto básico de la función, tal y como puede verse en la imagen.

Nota importante: Todas las combinaciones de teclas que se mostrarán a continuación deben teclearse moderadamente rápido. Si por ejemplo entre la "\" y la"s" o entre ésta y la "f" o entre ésta y la "u" dejamos que pasen varios segundos, no aparecerá el prompt con el nombre de la función y simplemente se escribirá "\sfu" en el texto.
Utilidad 3: Comentarios de funciones ( \cfu )
De un modo análogo a las cabeceras del script, podéis personalizar las cabeceras de comentarios de las funciones editando el archivo bash-function-description.
$ vim ~/.vim/bash-support/templates/bash-function-description
Después de personalizar y traducir la cabecera con la secuencia \cfu insertaréis un bloque de comentarios a la función como se muestra en la figura siguiente:

Utilidad 4: Crear un marco de comentarios ( \cfr )
Cuando necesitemos insertar un bloque de comentarios, teclearemos \cfr (comment frame). Obtendremos lo siguiente:

Utilidad 5: Insertar declaraciones de comandos en un script ( \s... )
Todos los atajos de teclado para los diferentes comandos empiezan por \s (de statement):
- \sc case in ... esac
- \sl elif then
- \sf for in do done
- \sfo for ((...)) do done
- \si if then fi
- \sie if then else fi
- \ss select in do done
- \st until do done
- \sw while do done
- \se echo e "\n"
- \sp printf "\n"
A modo de ejemplo os muestro lo que conseguiremos tecleando \sc mientras estamos en modo Inserción:

Utilidad 6: Intertar fragmentos de código predefinidos ( \nr \nw)
Para insertar rápidamente esas porciones de código que tecleamos muy a menudo, tenemos la combinación \nr que debemos usar desde el modo de Comandos (). Al pulsarla nos aparece un prompt pidiéndonos el nombre del fichero que contiene el pedazo de código que queremos insertar. Fácilmente podemos recorrerlos uno a uno pulsando la tecla de tabulación varias veces. Por defecto en el sistema se incluyen unos cuantos fragmentos (snippets), algunos de ellos muy interesantes. La lista inicial es la siguiente:
- assert
- basename+pathname
- basename-function
- check-number-of-command-line-arguments
- create-tempfile
- create-tempfile-with-trap
- free-software-comment
- read-and-split-into-array
- timestamp
- usage-and-command-line-arguments.noindent
- use-file-descriptor-read
- use-file-descriptor-write
- well-behaved-script
Al pulsar \nr y seleccionar el fichero "assert" éste es el código que se insertará:

Los ficheros que almacenan estos fragmentos de código se encuentran en ~/.vim/bash-support/codesnippets/ de modo que se pueden modificar fácilmente para adaptarlos a nuestras preferencias, también podemos crear nuevos fragmentos o incluso crear fragmentos a partir del código que estemos creando.
Para crear un snippet a partir de nuestro código primero deberemos marcar la porción de texto que queremos guardar (usando + v para entrar en el modo "Visual" y desplazando el cursor para seleccionar). A continuación teclearemos \nw. Se nos solicitará un nombre con el que que guardará ese fragmento y que luego con \nr recuperaremos todas las veces que queramos
Utilidad 7: Obtener ayuda rápida sobre comandos internos de Bash ( \hh )
Debemos situar el cursor sobre el comando interno del Bash del que necesitamos saber más y pulsar \hh . A continuación se muestra lo que pasa al usarlo sobre el comando "read".

Para cerrar el fichero de ayuda basta usar el conocido :q
Utilidad 8: Comentarios clave ( \ck... )
Esta característica puede ser útil para facilitar la inserción de comentarios rápidos en nuestro código. Algunas de las combinaciones disponibles son:
- \ckb Comentar un error (BUG)
- \ckt Comentario "Pendiente de hacer" (TODO)
- \ckr Comentar código truculento (TRICKY)
- \ckw Comentario de aviso (WARNING)
- \ckn Comentario clave personalizado (NEW KEYWORD)

En la imagen anterior se muestra el resultado de pulsar \ckt. Inserta una línea de comentario "TODO" con la fech, donde prodremos introducir lo que queremos que no se nos olvide programar más tarde.
Con ésto ya os habréis hecho una idea de la potencia de este plugin. Dejadme decir que todavía hay mucho más. Explorad las opciones del menú "Bash" en GVim y veréis el gran trabajo que se ha hecho.
Para tener más información acerca de ésta herramienta os dejo algunas referencias:
- FICHERO LEEME : ~/.vim/README.bashsupport
- PDF : ~/.vim/bash-support/doc/bash-hot-keys.pdf
- Este plugin trae un fichero de ayuda que puede consultarse desde Vim con :h
- Online bash-support vim plugin documentation
- Más capturas de pantalla
Trackback(0)
TrackBack URI para esta entradaComentarios (3)
RSS Comentarios...
Muy bueno...
Saludos



todo un signo de inteligencia y audacia
