Banner

Informática EDIB

Una forma de compartir el conocimiento que se maneja en los Estudios de Informática de EDIB

feb 24
2009

Bash-support vim plugin. Adaptar Vim para editar bash scripts

Escrito por: Toni Serna en Divulgación

Etiquetado en: vim , shell , scripts , plugin , Desarrollo , bash

Vim un dulce corderitoVim 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).

 

Vim y GVim

 

Vim para consola y GVim con el menu del Bash Support Plugin desplegado en "Expresiones Regulares" 

 

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:

 

 

 

Trackback(0)

TrackBack URI para esta entrada

Comentarios (3)

RSS Comentarios
...
Sin duda, creo que iran mejorando este VIM, pues a la larga contendra todas las caracteristicas y funcionalidades de algunos que nada tienen de VIM...

Muy bueno...

Saludos
Rafsys , 20 de mayo de 2009
Uep !
¡Qué sorpresa! Todavía quedan quien sabe apreciar el valor de Vim smilies/grin.gif todo un signo de inteligencia y audacia smilies/wink.gif

Un saludo y gracias por el comentario
Toni Serna , 7 de mayo de 2009 | url
Buen tema
Bien explicado, bastante útil, gracias!!
israel , 6 de mayo de 2009

Escribir comentario

corto | largo
security image
Escribe los caracteres de la imagen

busy
 

Palabras clave