Linux desde ceroPosts del SysAdmin

Resumen de vi (y su versión mejorada vim)

No es ningún secreto que un editor de texto se convierte rápidamente en el compañero más fiel de un sysadmin. En el blog hemos publicado posts sobre el tema, pero para que tengas todo junto en un solo lugar en esta oportunidad te traemos un resumen de vi. Tanto principiantes como los usuarios con un poco más de experiencia encontrarán útil este material.

En este post compartimos un resumen de vi
En este post compartimos un resumen de vi

Resumen de vi

Tanto en vi como en vim existen dos modos principales de operación:

  • El modo entrada (o edición) nos permite ingresar texto.
  • El modo comando nos permite operar sobre el archivo que estemos editando. Esto no solamente incluye el guardar, descartar, y deshacer cambios, sino también operaciones tales como copiar, cortar, pegar, e insertar texto proveniente de otros archivos o de comandos Linux. Este es el modo por defecto en el que se encuentra el editor al abrirlo.

Si en algún momento no sabemos en qué modo estamos, basta presionar la tecla Esc para asegurarnos de estar en el modo comando.

Pasar de un modo al otro y operar

Para pasar del modo comando al modo entrada, presionar:

  • i (insert), para insertar texto en la posición actual del cursor.
  • a (append) para insertar texto después de la posición actual del cursor.
  • A para agregar texto al final de la línea en la que está el cursor.
  • I para insertar texto al principio de la línea actual.
  • o para crear una nueva línea debajo de la actual.
  • O para insertar una nueva línea encima de la actual.

Para copiar o cortar n líneas de texto (donde n es un número mayor que cero) y luego pegarlas:

  • nyy (copiar)
  • ndd (cortar)
  • p para pegar a partir de la línea inmediatamente debajo de la posición actual del cursor.

Si solamente necesitamos copiar o cortar una línea, podemos omitir n. Es decir, 1yy o 1dd causan el mismo efecto que yy o dd, respectivamente.

Para guardar o deshacer cambios (siempre desde el modo comando):

  • Con :wq, 😡, o ZZ guardamos cambios y cerramos el archivo. Esta última alternativa no requiere el uso de : (dos puntos) y puede sernos útil en el caso de encontrarnos con una configuración de teclado diferente a la que estemos acostumbrados. Si omitimos la q en la primera alternativa (dejando solamente :w) podremos guardar los cambios más recientes sin salir del archivo.
  • Con :q salimos sin guardar, mientras que con u deshacemos el último cambio y con U todos los cambios que se hayan hecho sobre la línea actual.

Insertar contenido de archivos o resultado de comandos

También es posible insertar los contenidos de un archivo dentro del que estemos editando. Para hacerlo, necesitaremos hacer lo siguiente:

donde linea es representa la línea encima del punto de inserción, r indica la operación, y archivo es la ruta al archivo a insertar. Si el nombre del archivo a insertar contiene un punto (como por ejemplo, para indicar la extensión del mismo) se debe escapar utilizando la barra \. Por ejemplo, para insertar pruebas.txt en la línea 10 del archivo actual, deberemos hacer:

Además, puede resultar útil insertar el resultado de un comando al editar un archivo. La sintaxis es muy similar al caso anterior:

Por ejemplo,

insertará el resultado de which python3 en la línea 6 del archivo.

Si omitimos el número de línea en cualquiera de los casos anteriores, por defecto vi/m asumirá la línea actual donde esté el cursor.

Cambiar texto: líneas, palabras, y caracteres

Cambiar texto implica sustituir una sección de texto por otra. El editor vi/m tiene varios modos de hacer esto, dependiendo de nuestra necesidad. Veamos algunos ejemplos:

  • Para reemplazar una palabra, posicionar el cursor al principio de la palabra a ser reemplazada, y teclear cw seguido de la nueva palabra.
  • Para cambiar parte de una palabra, colocar el cursor sobre la palabra, a la derecha de la parte a cambiar, y proceder como en el caso anterior.
  • A fin de reemplazar una línea, poner el cursor en cualquier parte de la línea y teclear cc. La línea desaparece, dejando una línea en blanco para el nuevo texto, que puede ser de cualquier longitud.
  • Para reemplazar parte de una línea, colocar el cursor a la derecha de la parte a modificar. A continuación, presionar C, e introducir la corrección.
  • Para substituir el carácter bajo el cursor por uno o más caracteres, teclear s seguido del nuevo texto y pulsar Esc para terminar.
  • A fin de reemplazar el carácter bajo el cursor por otro, pulsar r seguido por un único carácter, pues al pulsar una tecla vi inmediatamente pasa a modo comando.

Más ejemplos

Ningún resumen de vi estaría ni cerca de estar completo sin incluir los siguientes comandos:

  • Para trasposicionar caracteres, colocar el cursor sobre la primera letra a mover y pulsar xp. Esto hará que se se intercambien las posiciones de ambos caracteres. Esto es útil para fallos tales como escribir qeu en lugar de que.
  • Para partir una línea sin afectar al texto, mover el cursor al espacio donde se quiere partir la línea y teclear r (de replace) seguido de ENTER.
  • Si necesitamos unir dos líneas, colocar el cursor en la línea superior y teclear J.
  • Para borrar un carácter, posicionar el cursor sobre el carácter a borrar y teclear x. El comando x también borra el espacio ocupado por el carácter.
  • Si queremos borrar el carácter anterior a la posición del cursor pulsar X.
  • Para borrar una palabra, posicionar el cursor al principio de la palabra y pulsar dw. Esto hará que se borre la palabra y el espacio que ocupaba.
  • Para borrar parte de una palabra, hay que colocar el cursor a la derecha de la parte a modificar y teclear dw.

Espero que este resumen de vi les haya resultado útil. ¡Nos leemos en el próximo post!

Te invitamos a conocer la propuesta completa de Carrera Linux Argentina para convertirte en un experto y completo sysadmin desde cero. En nuestro sitio web Aprender Linux podrás encontrar más detalles y contactarnos si te surgen preguntas o dudas. ¡Esperamos tu consulta!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *