Comandos básicos de Vim que todo usuario de Linux debe conocer [Incluye hoja de trucos gratuita]

Una guía completa que explica los comandos básicos de vim que serán útiles para cualquier usuario de Linux, ya sea un administrador de sistemas o un desarrollador.
Warp Terminal

No importa si eres un administrador de sistemas o un desarrollador de software, si trabajas en la terminal de Linux, te enfrentarás a la situación de tener que editar archivos de texto en la terminal.

Cuando estás restringido a la terminal, debes usar uno de los editores de línea de comandos como Vim. La mayoría de nosotros estamos acostumbrados a los editores GUI y esto causa un problema porque usar un editor de línea de comandos no es lo mismo que usar un editor de texto gráfico como Atom.

Hay varios editores de texto de línea de comandos disponibles y eres libre de usar cualquiera de ellos, sin embargo, Vim es uno de los editores de texto de línea de comandos más populares y lo encontrarás instalado en cualquier distribución estándar de Linux. Por eso, aprender los fundamentos de Vim te ayudará mucho.

Ahora bien, esta no es una guía completa para convertirte en un experto en Vim. Es tan solo una guía exhaustiva de Vim que pretende proporcionarte lo suficiente para sobrevivir a Vim en la terminal de Linux.

Espero que hayas instalado Vim en Ubuntu o en cualquier distribución de Linux que estés usando.

Video en idioma inglés

Comandos básicos de Vim que debe conocer

Iniciando con VIM: Guía completa de principiante

Si has trabajado con Vim anteriormente, tal vez quieras refrescar tus recuerdos mirando esta hoja de trucos de Vim:

Vim Command Description
i Entrar en el modo de inserción
Esc Entrar en el modo comando
x or Del Borrar un carácter
X El carácter de borrado es el modo de retroceso
u Deshacer cambios
Ctrl + r Rehacer los cambios
yy Copiar una línea
dd Eliminar una línea
p Pegar el contenido del buffer
/<search_term> Buscar y luego recorrer las coincidencias con n y N
[[ or gg Mover al principio de un archivo
]] or G Mover al final de un archivo
:%s/foo/bar/gci Buscar y reemplazar todas las ocurrencias con confirmación
Esc + :w Guardar cambios
Esc + :wq or Esc + ZZ Guardar y salir de Vim
Esc + :q! Forzar la salida de Vim descartando todos los cambios
📋
También puede descargar los comandos anteriores en formato PDF, esto gracias a Linux Handbook. Descárgalo, imprímelo y guárdalo en tu escritorio para consultarlo rápidamente.

De cualquier manera, no te preocupes, voy a explicar estos comandos básicos de Vim a detalle enseguida.

Entender los modos de Vim

Antes de empezar, conozcamos los modos de Vim, el cual cuanta con dos:

  • Modo Comando: Cuando inicias Vim, te colocas en el modo Comando. En este modo, puedes moverte por la pantalla, borrar texto y copiar texto.
  • Modo de inserción: No se puede escribir texto en modo comando. Para escribir texto (o digamos insertar texto) en un archivo, hay un modo de inserción dedicado. Cuando quieras escribir algo en un archivo, debes entrar en el modo de inserción.

Una vez que conozcas los modos de Vim, veamos algunos comandos básicos de Vim para varios propósitos.

Entrar en el modo de inserción en Vim

Recuerda siempre que la i significa modo de inserción. Presiona la tecla ‘i’ para entrar en el modo de inserción.

Cuando entres en el modo de inserción, verás — INSERTAR — en la parte inferior de la pantalla del editor/terminal. Esto indica que estás en modo de inserción.

Modo insert

Pero no es la única manera de entrar en el modo de inserción. Hay varios otros comandos para entrar en el modo de inserción en Vim. La posición del cursor es importante al entrar en el modo de inserción.

  • i – El nuevo texto aparecerá antes del cursor
  • a – El nuevo texto aparecerá después del cursor
  • I – El nuevo texto aparecerá al principio de la línea actual
  • A – El texto siguiente aparecerá al final de la línea actual
  • o – Se crea una nueva línea después de la línea actual
  • O – Se crea una nueva línea antes de la línea actual

Volver al modo comando en Vim

Si se empieza en modo comando, se entra en modo inserción. Si quiere volver al modo comando, pulse la tecla Esc (escape).

Cuando hayas introducido tu texto, te aconsejo que pulses la tecla Esc para entrar en modo comando. De esta manera, no introducirá ningún texto nuevo sin saberlo, involuntariamente.

💡
Consejo: Si no recuerda nada más, sólo recuerde pulsar la ‘i’ para el modo de inserción y la tecla Esc para el modo de comando. Esto debería ser suficiente.

Moverse en Vim

Cuando estás en Vim, no puedes usar el ratón para hacer clic en un punto de la pantalla como en los editores de texto o de código normales. Por eso es necesario conocer los comandos de movimiento a una determinada línea o palabra o posición en Vim.

Los puristas de Vi/Vim sugerirán el uso de las teclas h, j, k y l para moverse hacia arriba, izquierda, derecha y abajo respectivamente cuando estés en el modo de comandos. Aunque esto es aplicable tanto a los editores de Vi como a los de Vim, yo no prefiero usar estas extrañas combinaciones de teclas.

💡
Trivia: Cuando el editor Vi fue desarrollado por primera vez, la mayoría de los teclados no tenían teclas de dirección. Por eso se usaban las teclas h,j,k,l para el movimiento.

Yo uso las teclas de flecha para moverme en Vim. Funciona bien incluso cuando estás en modo de inserción en Vim. Esa es la forma estándar de moverse a la que está acostumbrada la mayoría de la nueva generación.

Si eres nuevo en Linux o en Vim, puedes optar por las teclas de dirección. No hay problema.

Sin embargo, si quieres ser un poco más hábil con Vim, puede que quieras memorizar algunos atajos de Vim para moverte fácilmente por la pantalla. Algunos de mis comandos de movimiento favoritos de Vim son

  • H – Mover a la parte superior de la pantalla. Tenga en cuenta que no siempre significa moverse a la primera línea del archivo. Es sólo para moverse a la parte superior de la pantalla visible.
  • L – Mover a la parte inferior de la pantalla. Tenga en cuenta que no siempre significa moverse a la última línea del archivo. Es sólo para moverse a la parte inferior de la pantalla visible.
  • M – Mover a la mitad de la pantalla.
  • [[ – Mover a la primera línea del archivo. También puede ue gg aquí.
  • ]] – Mover a la última línea del archivo. También puede usar G aquí.
  • nG – Desplazarse a la línea número n. Tenga en cuenta que no verá nada en la pantalla mientras escribe los números de línea.
💡
Consejo: Puede mostrar los números de línea en Vim entrando en el modo de comandos y escribiendo :set number

Como puede ver, con estos comandos de movimiento adicionales, te será más fácil moverse en un archivo de texto grande. Puedes aprender más comandos de movimiento como { y } para moverte hacia adelante y hacia atrás del párrafo, w para moverte palabra por palabra, etc.

También puedes usar ‘modificadores de repetición’ como nG que acabas de ver con la mayoría de los comandos en Vim. Por ejemplo, si usas 5w, se moverán 5 palabras. Si usas 6H, se moverá a la 6ª línea desde la parte superior de la pantalla.

Los modificadores de repetición también funcionan con ‘i’ y aquí es donde mucha gente comete errores. Si accidentalmente has pulsado un número como el 7 antes de pulsar la ‘i’ para pasar al modo de inserción, cualquier texto que escribas se añadirá 7 veces. No lo verás en la pantalla inmediatamente hasta que empieces a guardar el documento.

¿Qué hacer cuando cometes un error tan tonto como éste? Deshacerlo.

Deshacer los cambios en Vim

Si has cometido un error en Vim, no tienes que vivir con él para siempre. También he visto gente que sale del editor sin guardar en estos casos, lo cual es un poco ridículo.

Vim te permite deshacer y rehacer tus cambios. También puedes rehacer tus cambios. Todo esto es aplicable en la misma sesión, por supuesto. Una vez que has guardado tus cambios, no puedes deshacerlos.

Para deshacer un cambio, ve al modo de comandos y pulsa la tecla «u». Puedes pulsarla varias veces para realizar varias acciones de deshacer.

Si quieres rehacer un cambio, pulsa la combinación de teclas Ctrl+r en el modo de comandos. Puedes pulsarla varias veces para realizar múltiples acciones de rehacer.

Borrar en Vim

Además de deshacer los cambios, es posible que también quieras borrar algún texto del archivo. En Vim, siempre puede utilizar la tecla Suprimir para borrar un carácter, pero hay algunas combinaciones de teclas para manejar mejor el borrado en Vim.

  • x – Borra el carácter en la posición actual del cursor como una tecla de borrado
  • X – Borra el carácter anterior a la posición actual del cursor como una tecla de retroceso. Tenga en cuenta que la tecla de retroceso no funciona en Vim.
  • dw – Borrar palabra. En realidad, borra desde la posición actual del cursor hasta el final de la palabra actual más el espacio en blanco posterior.
  • dd – Borra la línea actual.
  • d$ – Borra desde la posición actual del cursor hasta el final de la línea.
  • dG – Borra desde la posición actual del cursor hasta el final del archivo.
💡
Nota: No hay comandos de corte en Vim porque cuando se borra algo, el texto borrado se coloca en el buffer. En otras palabras, los comandos de borrado son los comandos de corte.

Copiar y pegar en Vim

Puede que te preguntes cómo copiar y pegar en Vim. Esta es una preocupación legítima porque no siempre escribirás los textos.

Hay dos tipos de copiar y pegar en Vim. Uno que se ocupa del buffer y otro que se ocupa del texto ‘externo’.

Cuando estás en modo comando, puedes usar tus atajos de la terminal de Linux para copiar el texto o las siguientes combinaciones de teclas para copiar texto:

  • yw – Copiar palabra. En realidad, copia desde la posición actual del cursor hasta el final de la palabra actual más el espacio en blanco después de ella.
  • yy – Copia la línea actual.
  • y$ – Copia desde la posición actual del cursor hasta el final de la línea.
  • yG – Copia desde la posición actual del cursor hasta el final del archivo.

Supongamos que has utilizado uno de los comandos de borrado mencionados anteriormente. El texto borrado se coloca en el buffer. Puedes pegar este texto desde el buffer usando estos dos comandos de pegado:

  • p – Pegar el contenido del buffer antes de la posición del cursor
  • P – Pegar el contenido del buffer después de la posición del cursor

Ten en cuenta que, si ha borrado una línea entera, el contenido se colocará antes o después de la línea actual con los comandos de pegado mencionados.

Los comandos de pegado sólo funcionan con el buffer de Vim. ¿Qué pasa con el texto que has copiado de algún otro archivo? En esos casos, puedes utilizar las combinaciones de teclas estándar de copiar y pegar de tu Terminal de Linux.

En Ubuntu y en muchos otros terminales de distribución de Linux, se utiliza Ctrl+Mayús+C para copiar y Ctrl+Mayús+V para pegar. En algunas otras terminales, al seleccionar un texto se copia y se puede pegar con el clic derecho.

Cualquiera que sea la forma de copiar y pegar en tu terminal Linux, también puedes usarla en Vim. Sólo asegúrate de que estás en el modo de inserción para este tipo de copiado y pegado.

Búsqueda de texto en Vim

Encontrar un texto en particular es una función importante de un editor de texto. Puedes buscar texto en el archivo en Vim usando ‘/’.

En el modo de comandos, use / y luego escriba su texto de búsqueda y pulse Intro. Verás lo que estás escribiendo en la parte inferior izquierda de la pantalla.

Hará una búsqueda hacia adelante del término buscado desde la posición de tu cursor. También puedes usar ‘?’ y luego escribir tu término de búsqueda y pulsar enter para realizar una búsqueda hacia atrás. Tenga en cuenta que la búsqueda distingue entre mayúsculas y minúsculas.

Si hay más de una coincidencia para su texto de búsqueda, puede saltar a la siguiente posición pulsando la tecla n. Si quiere volver a la coincidencia anterior, pulse N. Básicamente, con n y N puede recorrer todas las coincidencias. Consejo: Puede utilizar la opción \c para realizar una búsqueda sin distinción de mayúsculas y minúsculas en Vim. Ejemplo: /\cMi_Búsqueda

Buscar y reemplazar en Vim

Vim ofrece un comando de sustitución (:s) para buscar y reemplazar texto. Se basa en gran medida en las expresiones regulares (regex) para buscar y reemplazar.

Puede utilizarlo de la siguiente manera:

:%s/foo/bar/g

El comando anterior sustituirá todos los ‘foo’ por ‘bar’ en todo el archivo. La ‘g’ del final se encarga de extender la función de buscar y reemplazar en todas las coincidencias. De lo contrario, sólo se reemplazará la primera coincidencia.

:s/foo/bar/g

El comando ‘:s’ hará exactamente la misma función que el anterior pero sólo en la línea actual en lugar de en todo el archivo.

Por defecto, la búsqueda distingue entre mayúsculas y minúsculas. Para que no distinga entre mayúsculas y minúsculas, puede utilizar la bandera ‘i’ junto con g.

:%s/foo/bar/gci

Aquí he añadido una bandera ‘c’ adicional. En realidad, puede que no te sientas cómodo con la idea de que todos tus textos coincidentes sean reemplazados en todo el documento en cuestión de segundos. Aquí es donde la bandera ‘c’ ayuda mucho. Con esta bandera de confirmación, Vim le pedirá que confirme si desea realizar un reemplazo en cada coincidencia.

En el modo de confirmación, se te presentará la siguiente opción: ¿Reemplazar con UU (y/n/a/q/l/^E/^Y)?

Le explico las opciones

  • y – SÍ, reemplazar esta coincidencia
  • n – NO, no reemplazar esta coincidencia y pasar a la siguiente
  • a – Reemplazar TODAS las coincidencias
  • q – SALIR sin reemplazar ninguna coincidencia
  • l – Reemplazar esta coincidencia y salir como si fuera la ÚLTIMA coincidencia
  • ^E – Desplazar la pantalla hacia arriba
  • ^Y – Desplazar la pantalla hacia abajo
💡
Consejo: Si no puede recordar todo lo demás, sólo recuerde que :%s/foo/bar/gci intentará reemplazar todas las coincidencias en todo el archivo con su confirmación.

Guardar y salir de Vim

Acaba de aprender los comandos básicos de Vim. Es hora de guardar su trabajo y salir de Vim. Para guardar o salir de Vim, debes entrar primero en el modo de comandos pulsando la tecla Esc. Y luego puedes usar las siguientes opciones:

  • :w – Guardar los cambios, pero no salir
  • :wq – Guardar y salir
  • :q – Sólo salir (si tiene cambios sin guardar, verá esta advertencia: E37: No se ha escrito desde el último cambio (¡añada! para anular))
  • ¡:q! – Forzar salida (descartará cualquier cambio no guardado)

Puedo entender que, si eres nuevo en Vim, recordar lo que acabas de aprender puede ser difícil. Por eso he creado una lista de comandos básicos de Vim y su rápida explicación.

Puedes descargar esta hoja de trucos de Vim en formato PDF (brindada por Linux Handbook), imprimirla y mantenerla en tu escritorio para una referencia rápida.

Ir más allá con Vim

Bien, acabas de aprender todos los principales fundamentos de Vim que necesitas para sobrevivir a este editor de texto terriblemente impresionante. Con estos conocimientos, puedes leer texto, buscar texto y hacer algunas ediciones básicas en Vim. Esto será suficiente para ahorrarte el pánico en cuanto te asalte la idea de usar un editor de texto de terminal como Vim.

Deberías marcar esta página para refrescar lo que has aprendido sobre Vim aquí. También puedes utilizar el comando vimtutor. La mayoría de las distribuciones de Linux tienen el comando vimtutor instalado. Si te apetece refrescar tus conocimientos de Vim o practicar los comandos de Vim, sólo tienes que ejecutar vimtutor en un terminal.

Espero que esta guía te haya ayudado a empezar con Vim. Si tienes preguntas o sugerencias, por favor dejanos un comentario.

About the author
Marco Carmona

Marco Carmona

My name is Marco Antonio Carmona, I'm a physics and data science student, a great and passionate reader, and randomly, my favorite hobby is writing about what I learn day by day.

Become a Better Linux User

With the FOSS Weekly Newsletter, you learn useful Linux tips, discover applications, explore new distros and stay updated with the latest from Linux world

itsfoss happy penguin

Great! You’ve successfully signed up.

Welcome back! You've successfully signed in.

You've successfully subscribed to It's FOSS.

Success! Check your email for magic link to sign-in.

Success! Your billing info has been updated.

Your billing was not updated.