Las Macros de Vi y algunas opciones avanzadas
¿Quién no ha utilizado alguna vez el editor de textos por excelencia Vi?
Somos muchos los que lo utilizamos a diario, y muchas veces no sabemos sacarle todo el partido. La principal razón, a mi juicio, es el desconocimiento de la capacidad tan brutal que tiene este programa.
Una de las opciones menos conocidas y más interesantes es el uso de Macros.
En el editor Vi, las macros primero se definen y luego se usan. Al definir una macro, se asocia un valor a un nombre. Por ejemplo:
:map nombre valor |
Un ejemplo práctico pudiera ser una macro que borrara una palabra, se posicionara al final de la línea y allí copiara la palabra.
:map borra de$p |
Para utilizar la macro, simplemente tendremos que teclear su nombre en modo comando. El resultado será el mismo que si hubiesemos tecleado los caracteres del valor de la macro.
Para incluir caracteres especiales en una macro contamos con el carácter ^V ( CONTROL V ) que quita el significado especial al carácter siguiente tecleado.
Si queremos introducir el carácter escape en el valor de una macro deberemos pulsar tres veces ^V y luego escape una vez.
Para definir una macro que inserte “deckerix” al comienzo de una línea teclearemos por tanto:
:map lov Ideckerix^V^V^V<em>escape</em> |
Las macros pueden parecer tediosas, pero una vez creada.. mil veces puede ser usada.
Podemos guardar las macros en un fichero de configuración del Vi denominado .vimrc que tendremos que guardar en nuestro $HOME. En él no solamente podemos guardar las macros, si no también otro tipo de configuraciones tales como visualizar el número de línea, cambiar el ancho del documento, etc.
En modo comando podemos usar las siguientes:
:set showmode Pone un indicador en la parte inferior derecha de la pantalla para que sepamos el modo en el que estamos trabajando, insercción, o modificación. :set wm= número Si estamos en una pantalla configurada para que quepan 80 caracteres, :Set wm= 10, hará que se configure a 80-10 caracteres. :set number Presenta el número de línea, los cuales no se insertan en el fichero, son simplemente una ayuda. :set all Muestra todas las opciones |
Un ejemplo práctico de un fichero de configuración es el siguiente:
set tabstop=5 set sw=4 ''Mi fichero set ai set sm set ruler set number set nocompatible set novisualbell set noerrorbells ab _email deckerix@gmail.com iab _hora <C-R>=strftime("%H:%M")<CR> iab _fecha <C-R>=strftime("%a %b %d %T %Z %Y")<CR> ab _comentario /*===============*/ ab <img> <img src="" alt=""> map ^[c ^[I//^[j |
Sobre este fichero de configuración, puedo recalcar 2 cosas más; los comentarios empiezan por dobles comillas y que ab es un tipo de macro de sustitución. Cualquier cosa que escribamos se sustituirá por el valor indicado.