Para muchos es un desconocido, pero para los administradores de sistemas linux se ha convertido en una herramienta imprescindible en su trabajo diario. Se trata de un editor de texto sin formato y recuerda al antiguo y ya desaparecido EdLin de MS-DOS. La primera impresión que da el editor vi es la de un editor arcaico y uno se pregunta para que usar este editor existiendo algunos tan bonitos como kate, bloc de notas o kwrite.
Sin embargo, tras superar la desilusión y empezar a explorar su funcionamiento, podemos comprobar que dentro de sus posibilidades es bastante potente, ya que se puede hacer casi todo lo imaginable, desde escribir o eliminar texto, hasta duplicar líneas o realizar búsquedas. Una de sus ventajas radica en que está presente en todas las distribuciones de Linux, incluso en las que no está presente el sistema de ventanas o gráfico (las X). De este modo, si necesitamos conectarnos a un servidor Linux de forma remota y modificar algún fichero, con una simple conexión ssh, rlogin o telnet, podemos ejecutar vi y modificar los ficheros que queramos o tengamos permisos. Una de las ventajas de poder prescindir del motor gráfico es poder descartar todos los agujeros de seguridad que contienen las X.
Para ejecutarlo, simplemente deberemos escribir en una consola vi o vi [fichero] y accederemos al entorno de vi. Este entorno tiene dos modos: edición y comandos. Por defecto, al entrar estaremos en el modo comandos. Estos comandos serán aplicados donde se encuentre el puntero actualmente. Si lo que queremos es utilizar la línea de comandos para comandos como salir o guardar, deberemos pulsar Esc y después dos puntos (:).
Si es la primera vez que lo usas, quizá habrá una cosa que no sabrás hacer aunque parezca increible: ¡salir! Pero tranquilo, es sencillo. Sólo debes entrar en la línea de comando (Esc :) y luego teclear q (q! si has realizado cambios que no quieres guardar) o wq para salir guardando los cambios (wq! si es de sólo lectura). Si sólo queremos salir un momento para ejecutar algún comando y luego volver al vi, podemos ejecutar:sh y se nos abrirá una consola. Para volver a vi, bastará con salir de la consola con exit.
El editor vi tiene multitud de comandos, por lo que será difícil recordarlos todos. Por esta razón, lo más seguro al menos al principio, es que uses sólo unos pocos de ellos. Los básicos son los de salir (explicados en el párrafo anterior) y para editar i (insertar en la posición del cursor) ó I (insertar al principio de la línea). Tras pulsar cualquiera de estos dos comandos ya podremos escribir como si un editor de texto cualquiera se tratase hasta que pulsemos Esc.
Con estos comandos ya puedes hacer prácticamente de todo, pero para hacer más cómoda la edición conviene ir aprendiendo algunos más poco a poco. Otro de los comandos que viene bien conocer es x, el cual sirve para borrar el caracter donde se encuentra el cursor actualmente, el cual puedes mover con los cursores del teclado. Si lo que quieres es borrar la línea entera, conviene conocer que con dd puedes hacerlo.
Pero si sólo queremos ver el contenido del fichero sin editarlo, o buscar una línea a editar, nos puede venir bien realizar una búsqueda en el editor vi. Para ello, en el modo comando, bastará con poner /xxx, donde xxx será el texto a buscar. Una vez realizada la búsqueda, si queremos ir a la siguiente concurrencia del texto a buscar, deberemos pulsar n.
Otro comando muy útil cuando vamos a escribir un texto repetidas veces en un mismo fichero es :ab [abreviatura] [texto], donde [abreviatura] es el texto corto que escribiremos y [texto]el texto completo por el que se sustituirá automáticamente cada vez que escribamos la abreviatura. Por ejemplo, si escribimos :ab cs ca sento, cada vez que escribamos cs, éste se sustituirá automáticamente por ca sento.
Sin embargo, dentro de la austeridad de vi, éste puede ser configurado para mejorar un poco su apariencia a nuestro gusto. Esto lo podemos lograr mediante la línea de comandos de vi, o bien, creando un fichero llamado .exrc, el cual lo colocaremos bien en $HOME, o bien en el mismo directorio donde se encuentre el fichero que queremos editar. Creando este fichero tenemos la ventaja de que siempre que abramos un fichero con vi se cargará esta configuración. La sintaxis será set [opción], pudiendo ser:
- set showmode (muestra el modo en el cual nos encontramos: comando o edición)
- set tabstop 4 (el tabulador será de 4 caracteres de ancho)
- set number (muestra los números de línea)
- set ignorecase (en las búsquedas ignorará las mayúsculas y las minúsculas)
- set wm=2 (especifica que el corte de cada línea debe de estar a 2 caracteres de la parte derecha de la pantalla)
- set sm (cuando cerremos una llave o un paréntesis, nos resaltará cual estamos cerrando)
Para terminar, voy a exponer algunos de los comandos más utilizados de vi, en cualquier distribución de Linux como Fedora o Ubuntu.
Comandos de edición en vi
- I (insertar al principio de la línea)
- i (insertar en la posición del cursor)
- a (añadir después del cursor)
- A (añadir al final de la línea actual)
- o (insertar en una nueva línea anterior a la actual)
- O (insertar en una nueva línea posterior a la actual)
Borrar
- x (borrar caracter sobre el que se encuentra el cursor)
- X (borrar caracter anterior al cursor)
- dd (borrar la línea entera)
- D (borrar hasta el final de la línea)
- dw (borrar palabra)
- r x (reemplazar el caracter actual por x)
Copiar y pegar
- yy (copia la línea actual)
- p (pega delante del cursor)
- P (pega detrás del cursor)
Buscar
- % (busca el caracter delimitador que balancea al actual: llave, paréntesis,…)
- /Texto (busca el texto que le indiquemos hacia delante)
- ?Texto (busca el texto que le indiquemos hacia detrás)
- n (repite la búsqueda hasta la siguiente concurrencia)
- N (repite la búsqueda en el sentido contrario)
Salir y guardar
- :w (guardar en vi los cambios)
- :q (salir de vi si no hay cambios)
- :q! (salir de vi sin guardar)
- :wq (salir guardando los cambios)
- :wq! (salir forzando el guardado aunque el fichero sea de sólo lectura)
- 😡 (guardar los cambios y salir)