7. Editor vi

vi es un clásico editor en ambientes tipo UNIX cuya prioridad es la eficiencia. Por lo mismo no requiere el uso de ratón sino de breves comandos que a medida que se memoricen y usen harán más rápida la edición de textos.

Para editar un archivo (digamos ma.txt) con el editor vi, teclee desde un intérprete de comandos:

$ vi ma.txt

7.1. Modos de vi

7.1.1. Modo comando

Cuando vi cargue, se observará en la pantalla una parte del archivo de texto que va a editar. Al arrancar vi, está en un modo especial llamado modo comando ó modo normal . Esto significa, por ejemplo, que si presiona l en el teclado, en vez de introducir una l en la posición actual del cursor, el cursor se va a mover un caracter a la derecha. En este modo, los caracteres del teclado sirven para enviar comandos a vi.

7.1.2. Comandos de movimiento - Movimientos del cursor

Para mover el cursor, pulse las teclas: h (mueve a la izquierda), j (mueve hacia abajo), k (mueve hacia arriba), l (mueve a la derecha).

Las teclas h, j, k y l son prácticas porque una vez acostumbrado a ellas, será capaz de moverse por el archivo sin tener que retirar los dedos de la posición natural del teclado.

7.1.3. Modo inserción

Este modo es para introducir texto, es decir lo que vaya tecleando podrá verlo en la pantalla, en el lugar donde estaba el cursor. Veamos algunas utilidades para este modo:

Puede insertar texto con varias teclas:

i

Inserta texto antes del caracter sobre el cual está el cursor.

a

Inserta texto después del caracter sobre el cual está el cursor.

I

Inserta texto al comienzo de la línea en la que está el cursor.

A

Inserta texto al final de la línea en la que está el cursor.

o

Abre espacio para una nueva línea después de la línea en la que está el cursor y permite insertar texto en la nueva línea.

O

Análogo al anterior, pero abre espacio en la línea anterior.

7.1.4. Edición de texto - Borrar

Debemos estar en modo comandos. Pulsar ESC para pasar de modo inserción a modo comandos.

Mover el cursor y colocarlo sobre el caracter que va ser borrado y pulsar x.

Digitar dw para borrar hasta el final de la palabra. Y digitando dd se borra la línea entera.

7.1.5. Deshacer cambios

Si por alguna razón desea deshacer los cambios realizados en el texto, estando en modo normal, pulse u para deshacer el último cambio. Con U se deshace todos los cambios realizados en la línea actual.

7.2. Otros comandos - Guardar y salir

Pulse la tecla ESC (para asegurarse de que está en modo normal).

Escriba :q! y ejecute ENTER para salir de vi sin guardar ningún cambio que se haya hecho.

Para guardar los cambios realizados y salir, escriba :wq y ejecute ENTER.

Para guardar los cambios realizados sin salir de vi y seguir trabajando, escriba :w y ejecute ENTER.

Estando en el modo normal, pulsamos el comando : para pasar al modo línea de comandos y el cursor se traslada a la última línea de la pantalla. Allí escribimos el nombre del comando y pulsamos ENTER para ejecutarlo.

[Aviso]Aviso

Recuerde: Para pasar de modo inserción a modo comando pulsamos la tecla ESC. Puede desplazarse sobre el archivo, empleando las flechas, PgUp, PgDn ó bien para mantener los dedos mejor posicionados en el teclado puede emplear las teclas h, j, k y l, como lo vimos anteriormente.

7.3. vim

En su sistema puede haber diversas versiones de vi, recomendamos vim que ofrece extensa ayuda y cuenta con varias extensiones.

7.3.1. Modo visual - Copiar, cortar y pegar

En el modo visual ''resaltamos" el texto para ser eliminado o copiado para luego pegarlo.

Asegúrese que esté en modo comandos. Pulse v para entrar en modo visual. Mueva el cursor con las teclas de desplazamiento para resaltar o remarcar el texto a copiar.

Pulse y para copiar la sección remarcada. Si desea cortar digite d .

Ahora ubica el cursor en el lugar donde desea insertar el texto copiado o cortado y pulsa p para insertar el texto, después del cursor.

7.3.2. Otras características de vim

Digrafos

Útil para producir caracteres del español, si el teclado o la configuración del mismo no lo permiten. Presione Control-K y después una secuencia de dos teclas de acuerdo al caracter, e.g 'a produce á, n? produce ñ, u: produce ü, !I produce ¡, ?I produce ¿. Pueden verse otros caracteres con el comando :digraphs.

Resaltado de sintaxis

Permite ver con colores que resaltan la sintaxis de algunos tipos de archivos (por ejemplo fuentes de DocBook, C, LaTeX). Se activa con :syntax enable. Para que se vean los colores de este editor, asegúrese de que su variable de ambiente TERM tenga el valor de una terminal que soporte color, por ejemplo las terminales gráficas soportan xterm-color y desde consolas tipo texto por ejemplo VT220. Vea como establecer la variable TERM en cada inicio de sesión en Sección 6, “Personalización”.

Indentación automática

Permite indentar automáticamente diversos tipos de archivos como XML, C, LaTeX, XSLT. Se activa con :filetype indent on. Para modificar tal indentación pueden establecerse variables de vim, bien en la sesión abierta, bien en ~/.vimrc o bien en cada archivo. Para fijar una configuración particular que se tome al editar cierto archivo, basta agregar al comienzo una línea (puede ser un comentario en el caso de lenguajes de programación) como:

/* vim: set expandtab tabstop=4 shiftwidth=4 foldmethod=marker: */
		

Numeración de líneas

Pueden verse el número de cada línea con :set number y esta característica se deshabilita con :set nonumber.

Archivo de configuración

Cada usuario puede tener sus propias configuraciones en el archivo ~/.vimrc, que consta de líneas con comandos o comentarios. Los comandos no deben iniciar con ':' y los comentarios se colocan en líneas completas o al final de una línea iniciando con comillas. Por ejemplo:

" Este es un ejemplo de archivo de configuración para vim
syntax enable
filetype on
filetype plugin on
filetype indent on
	

Puede resultar instructivo que copie y examine un archivo de ejemplo distribuido con vim así:

$ cp /usr/local/share/vim/vim63/vimrc_example.vim ~/.vimrc
		

Sesión de vim

7.3.3. Locale en vim

vim empleará el locale establecido en la variable de ambiente LANG (ver Sección 6.1, “Locale”). Sin embargo si prefiere también puede establecer idioma de los mensajes que presenta, así como codificación de la termina y de los archivos.

Puede establecer el idioma de los mensajes que vim presenta con el comando :language, por ejemplo para establecer español de Colombia, desde el modo comandos teclee:

:language es_CO

Puede establecer esta configuración por defecto agregando el comando al archivo ~/.vimrc.

vim puede emplear codificaciones diferentes para la terminal y para los archivos, ambos se establecen con la variable encoding (o enc) y cada uno en particular con termencoding (o tenc) y fileencoding (o fenc). Los valores típicos para codificar español son latin1 (que corresponde a codificicación en un byte ISO8859-1) o utf8 (que corresopnde a codificación multibyte UTF-8). Por ejmplo para establecer la codificación de la termina en UTF-8, desde modo comando teclee:

:set tenc=utf8

Típicamente vim detectar la codificación de los archivos que edite, o empleará su codificación preferida en archivos nuevos. Puede deshabilitarse la autodetección dejando vacía la variable fileencoding (lo cual no recomendamos). La forma recomendada y por defecto en vim es emplear una terminal que soporte la codificación especificada en LANG y dejar que vim la emplee y que autodetecte la codificación de archivos. Si no opera de esta forma puede intentar agregar a su archivo ~/.vimrc:

set encoding&           " terminal charset: follows current locale 
set fileencoding&       " auto-sensed charset of current buffer  
	

7.4. Lecturas recomendadas

Puede aprender sobre vim y su configuración en el manual de este programa que se consulta presionando la tecla F1. Esta documentación también está disponible en Internet en: http://vimdoc.sourceforge.net/htmldoc/usr_toc.html

Hay numerosos archivos de comando (scripts) para vim en http://www.vim.org/scripts/index.php