¿Cómo aprender a usar VIM desde cero?
¿Cómo aprender a usar VIM desde cero?
  • Autor de la entrada:
  • Tiempo de lectura:22 minutos de lectura

¿Alguna vez quisiste aprender Vim pero no sabías por donde comenzar? No hay problema, a continuación vas a encontrar todo lo que necesitas.

En este artículo tienes todos los comandos de Vim y no solo eso; también los mejores libros gratis, los mejores tutoriales y cursos sobre Vim; tanto en español, como en inglés.

¿Qué es Vim?

Vim es un editor de texto altamente configurable creado para permitir una edición de texto eficiente. Vim es una versión mejorada del editor vi que viene por defecto en la mayoría de los sistemas UNIX.

Al editor de Vim a menudo se le denomina “el editor de los programadores” y eso es porque es tan útil para la programación que muchos lo consideran un IDE completo.

Sin embargo, Vim no es exclusivamente solo para los programadores.

Vim es perfecto para todo tipo de edición de texto, desde la redaccción de correos electrónicos hasta la edición de archivos de configuración del sistema.

¿Quién debería aprender Vim?

  • Administradores de sistemas.
  • Programadores.
  • Si trabajas con HTML, LaTeX u otros lenguajes de marcado.
  • Si requieres de la edición intensiva de archivos de texto sin formato.

¿Qué no es Vim?

Vim no es un editor diseñado cualquier tipo de usuarios, es una herramienta cuyo curva de aprendizaje es de largo recorrido, y su manejo se aprende a raíz de su uso y práctica.

Vim no es un procesador de textos. Aunque puede mostrar texto con varias formas de resaltado y formatos.

Tampoco es un software para proporcionar la edición WYSIWYG de documentos tipográficos (aunque es genial para editar documentos TeX).

¿Por qué debería aprender Vim?

Vim es un editor que apareció en la guerra de editores y sigue usándose en la actualidad.

La principal ventaja que aporta Vim a diferencia de un IDE completo o otro editor, principalmente a los programadores, es la velocidad a la hora de trabajar con el código. Además, del uso de ínfimos recursos del sistema.

Muchos de los programadores de las primeras generaciones crecieron usando Vim y prefieren no dejar de usarlo. ¿Por qué dejar de utilizar algo que simplemente funciona?

Juegos Aprender Vim

Chuleta del Editor VIM

General

  • :h[elp] keyword – abrir ayuda para palabra clave
  • :sav[eas] file – guardar archivo como
  • :clo[se] – cerrar archivo actual
  • :ter[minal] – abre una ventana de terminal
  • K – abrir página del manual (man page) de la palabra bajo el cursor

Consejo: Ejecuta vimtutor en la terminal para aprender los comandos más importantes de Vim.

Mover el Cursor

  • h – mover el cursor hacia la izquierda
  • j – mover el cursor hacia abajo
  • k – mover el cursor hacia arriba
  • l – mover el cursor hacia la derecha
  • H – moverse hacia la parte superior de la pantalla
  • M – moverse hacia el centro de la pantalla
  • L – moverse hacia la parte inferior de la pantalla
  • w – saltar hasta el inicio de la siguiente palabra
  • W – saltar hasta el inicio de la siguiente palabra (incluso con puntuación)
  • e – saltar hasta el final de la siguiente palabra
  • E – saltar hasta el final de la siguiente palabra (incluso con puntuación)
  • b – regresar al inicio de una palabra
  • B – regresar al inicio de una palabra (incluso con puntuación)
  • ge – saltar hacia atrás hasta el final de una palabra
  • gE – saltar hacia atrás hasta el final de una palabra (las palabras pueden contener puntuación)
  • % – ir al carácter asociado (pares por defecto: ‘()’, ‘{}’, ‘[]’ – usar :h matchpairs en vim para más información)
  • 0 – saltar al inicio de la línea
  • ^ – saltar al primer carácter no-espacio de la línea
  • $ – saltar al final de la línea
  • g_ – saltar al último carácter no-espacio de la línea
  • gg – ir a la primera línea del documento
  • G – ir a la última línea del documento
  • 5gg o 5G – ir a la línea 5
  • gd – move to local declaration
  • gD – move to global declaration
  • fx – saltar a la siguiente ocurrencia del carácter x
  • tx – saltar a la ocurrencia previa del carácter x
  • Fx – saltar a la aparición anterior del carácter x
  • Tx – saltar a después de la aparición anterior del carácter x
  • ; – repetir el movimiento anterior de f, t, F o T
  • , – repetir el movimiento anterior de f, t, F o T, hacia atrás
  • } – saltar al párrafo siguiente (o función/bloque, en modo edición)
  • { – saltar al párrafo previo (o función/bloque, en modo edición)
  • zz – centrar el cursor en la pantalla
  • Ctrl + e – mover la pantalla hacia abajo una línea (sin mover el cursor)
  • Ctrl + y – mover la pantalla una línea hacia arriba (sin mover el cursor)
  • Ctrl + b – retroceder una pantalla
  • Ctrl + f – avanzar una pantalla
  • Ctrl + d – avanzar cursor media pantalla
  • Ctrl + u – retroceder cursor media pantalla

Consejo: Escribe un número antes del un comando de movimiento para repetirlo. Por ejemplo 4j moverá el cursor hacia abajo 4 líneas.

Editar

  • r – reemplazar un carácter
  • R – replace more than one character, until ESC is pressed.
  • J – juntar siguiente línea con la actual
  • gJ – une la línea de abajo a la actual sin espacio entre ellas
  • gwip – párrafo de reflujo
  • g~ – cambiar caso a movimiento
  • gu – cambiar a minúsculas hasta movimiento
  • gU – cambiar a mayúsculas hasta el movimiento
  • cc – cambiar (reemplazar) toda la línea
  • C – cambiar (reemplazar) al final de la línea
  • c$ – cambiar (reemplazar) hasta el final de la línea
  • ciw – cambiar (reemplazar) palabra completa
  • cw o ce – cambiar (reemplazar) una palabra
  • s – eliminar carácter y reemplazar texto
  • S – eliminar línea y reemplazar texto (igual que el comando cc)
  • xp – transponer dos letras (suprimir y pegar)
  • u – deshacer
  • U – restaurar (deshacer) la última línea modificada
  • Ctrl + r – rehacer
  • . – repetir el último comando

Copiar y Pegar

  • yy – copiar una línea
  • 2yy – copiar dos líneas
  • yw – copiar el resto de los carácteres de la palabra desde la posición del cursor hasta el principio de la siguiente palabra
  • yiw – copiar la palabra localizada en la posición del cursor
  • yaw – copiar la palabra localizada en la posición del cursor y el espacio detras de ella o delante
  • y$ – copiar hasta el final de la línea
  • p – pegar antes del cursor
  • P – pegar después del cursor
  • dd – cortar una línea
  • 2dd – cortar dos líneas
  • dw – cortar el resto de los carácteres de la palabra desde la posición del cursor hasta el principio de la siguiente palabra
  • diw – cortar la palabra localizada en la posición del cursor
  • daw – cortar la palabra localizada en la posición del cursor y el espacio detras de ella o delante
  • D – cortar hasta el final de la línea
  • d$ – cortar hasta el final de la línea
  • x – cortar carácter

Salir

  • :w – guardar archivo sin salir
  • :w !sudo tee % – guardar archivo usando sudo
  • :wq or 😡 or ZZ – guardar archivo y salir
  • :q – salir (no funciona si hay cambios sin guardar)
  • :q! or ZQ – salir descartando los cambios no guardados
  • :wqa – escribir (guardar) y salir en todas las pestañas

Buscar y Reemplazar

  • /pattern – buscar patrón
  • ?pattern – buscar patrón hacia atrás
  • \vpattern – patrón ‘muy mágico’ (very magic): los caracteres no alfanuméricos son interpretados como caracteres especiales regex (sin necesidad de escaparlos)
  • n – repetir la búsqueda en la misma dirección
  • N – repetir la búsqueda en la dirección contraria
  • :%s/old/new/g – reemplazar en todo el archivo
  • :%s/old/new/gc – reemplazar en todo el archivo pidiendo una confirmación
  • :noh[lsearch] – desactiva el realce (highlight) de los resultados de búsqueda

Buscar en Varios Archivos

  • :vim[grep] /pattern/ {{file}} – buscar un patrón en varios archivos

  • e.g. :vim[grep] /foo/ **/*

  • :cn[ext] – ir al resultado siguiente

  • :cp[revious] – ir al resultado previo
  • :cope[n] – abrir ventana con una lista de los resultados
  • :ccl[ose] – cerrar la ventana de corrección rápida

Modo insertar – insertar/agregar texto

  • i – insertar antes del cursor
  • I – insertar al comienzo de la línea
  • a – insertar después del cursor
  • A – insertar al final de la línea
  • o – insertar una nueva linea debajo de la línea actual
  • O – insertar una nueva línea encima de la línea actual
  • ea – insertar después de palabra
  • Ctrl + h – eliminar el carácter antes del cursor durante el modo de inserción
  • Ctrl + w – eliminar palabra antes del cursor durante el modo de inserción
  • Ctrl + j – comenzar una nueva línea durante el modo de inserción
  • Ctrl + t – sangrar (mover a la derecha) línea un ancho de cambio durante el modo de inserción
  • Ctrl + d – desangrar (mover a la izquierda) línea un ancho de turno durante el modo de inserción
  • Ctrl + n – insertar (autocompletar) la siguiente coincidencia antes del cursor durante el modo de inserción
  • Ctrl + p – insertar (autocompletar) coincidencia anterior antes del cursor durante el modo de inserción
  • Ctrl + rx – insertar el contenido del registro x
  • Esc – salir del modo insertar

Sangría del texto

  • >> – sangría (mover a la derecha) línea uno ancho de turno
  • << – desangrar (mover a la izquierda) línea uno ancho de turno
  • >% – sangrar un bloque con () o {} (cursor sobre llave)
  • >ib – sangrar el bloque interior con ()
  • >at – sangrar un bloque con etiquetas <>
  • 3== – re-sangrar 3 líneas
  • =% – volver a sangrar un bloque con () o {} (cursor sobre llave)
  • =iB – volver a sangrar el bloque interior con {}
  • gg=G – volver a sangrar todo el búfer
  • ]p – pegar y ajustar la sangría a la línea actual

Macros

  • qa – grabar macro a
  • q – detener la grabación de la macro
  • @a – ejecutar macro a
  • @@ – re-ejecutar la última macro ejecutada

Seleccionar texto (modo visual)

  • v – iniciar modo visual, seleccionar lineas y ejecutar un comando (como y-yank)
  • V – iniciar modo visual seleccionando toda la línea
  • o – moverse al otro extremo de la zona seleccionada
  • Ctrl + v – iniciar modo visual de bloque (visual block mode)
  • O – moverse a la otra esquina del bloque
  • aw – seleccionar una palabra
  • ab – un bloque con ()
  • aB – un bloque con {}
  • at – un bloque con etiquetas <>
  • ib – un bloque interno con ()
  • iB – un bloque interno con {}
  • it – bloque interior con etiquetas <>
  • Esc – salir del modo visual

Consejo: En lugar de b o B también se puede utilizar ( o { respectivamente.

Comandos visuales

  • > – mover texto hacia la derecha
  • < – mover texto hacia la izquierda
  • y – copiar texto seleccionado
  • d – eliminar texto seleccionado
  • ~ – pasar de minúscula a mayúscula y viceversa
  • u – cambiar el texto marcado a minúsculas
  • U – cambiar el texto marcado a mayúsculas

Registros

  • :reg[isters] – mostrar el contenido de los registros
  • “xy – copiar en el registro X
  • “xp – pegar el contenido del registro X
  • “+y – copiar en el registro del portapapeles del sistema
  • “+p – pegar desde el registro del portapapeles del sistema

Consejo: Los registros son guardados en ~/.viminfo, y serán cargados la próxima vez que se ejecute vim.

Registros Especiales

0 – ultima copia
 ” – registro sin nombre, última eliminación o copia
 % – nombre de archivo actual

 # – nombre de archivo alternativo

    • contenido del portapapeles (X11 primario)
    • contenido del portapapeles (portapapeles X11)
      / – último patrón de búsqueda
       : – última línea de comandos
       . – último texto insertado
    • último pequeño (menos de una línea) eliminar
      = – registro de expresión
       _ – registro de agujero negro

Pestañas

  • :tabnew o :tabnew {page.words.file} – abrir archivo en una nueva pestaña
  • Ctrl + wT – mover la ventana actual a su propia pestaña
  • gt o :tabn[ext] – irr a la próxima pestaña
  • gT o :tabp[revious] – ir a la pestaña anterior
  • #gt – ir a la pestaña número #
  • :tabm[ove] # – mover a la pestaña actual a la posición número # (desde 0)
  • :tabc[lose] – cerrar todas las pestañas y sus ventanas
  • :tabo[nly] – cerrar todas las pestañas salvo la actual
  • :tabdo command – run the command on all tabs (e.g. :tabdo q – closes all opened tabs)

Marcas

  • :marks – mostrar marcas
  • ma – definir posición actual para la marca A
  • `a – saltar a la posición de la marca A
  • y`a – copiar texto a la posición de la marca A
  • `0 – ir a la posición donde se había salido previamente de Vim
  • `” – ir a la posición en la que se editó por última vez este archivo
  • `. – ir a la posición del último cambio en este archivo
  • “ – ir a la posición antes del último salto
  • :ju[mps] – lista de saltos
  • Ctrl + i – ir a la nueva posición en la lista de salto
  • Ctrl + o – ir a la posición anterior en la lista de salto
  • :changes – lista de cambios
  • g, – ir a la nueva posición en la lista de cambios
  • g; – ir a la posición anterior en la lista de cambios
  • Ctrl + ] – saltar a la etiqueta debajo del cursor

Consejos: Para saltar a una marca, puedes utilizar una tilde (`) o un apóstrofe (‘). Usar un apóstrofe salta al principio (a la primera línea que no este en blanco).

Trabajar con Varios Archivos

  • :e[dit] file – editar un archivo en un nuevo búfer
  • :bn[ext] – ir al próximo búfer
  • :bp[revious] – ir al búfer anterior
  • :bd[elete] – eliminar búfer (cerrar archivo)
  • :b[uffer]# – ir a un búfer por #
  • :b[uffer] file – ir a un búfer por archivo
  • :ls or :buffers – mostrar todos los búfers abiertos
  • :sp[lit] file – abrir archivo en un nuevo búfer y dividir la ventana
  • :vs[plit] file – abrir archivo en un nuevo búfer y dividir la ventana verticalmente
  • :vert[ical] ba[ll] – editar todos los búferes como ventanas verticales
  • :tab ba[ll] – editar todos los búferes como pestañas
  • Ctrl + ws – dividir ventana
  • Ctrl + wv – dividir ventana verticalmente
  • Ctrl + ww – cambiar de ventana
  • Ctrl + wq – cerrar ventana
  • Ctrl + wx – intercambiar la ventana actual con la siguiente
  • Ctrl + w= – hacer que todas las ventanas tengan la misma altura y ancho
  • Ctrl + wh – mover el cursor a la ventana izquierda (división vertical)
  • Ctrl + wl – mover el cursor a la ventana derecha (división vertical)
  • Ctrl + wj – mover el cursor a la ventana de abajo (división horizontal)
  • Ctrl + wk – mover el cursor a la ventana de arriba (división horizontal)

Diferencia

  • zf – definir manualmente un pliegue hasta el movimiento
  • zd – eliminar pliegue debajo del cursor
  • za – alternar pliegue debajo del cursor
  • zo – pliegue abierto debajo del cursor
  • zc – cerrar pliegue debajo del cursor
  • zr – reducir (abrir) todos los pliegues en un nivel
  • zm – doblar más (cerrar) todos los dobleces en un nivel
  • zi – alternar la funcionalidad de plegado
  • ]c – saltar al inicio del próximo cambio
  • [c – saltar al inicio del cambio anterior
  • do or :diffg[et] – obtener (obtener) diferencia (de otro búfer)
  • dp or :diffpu[t] – poner diferencia (a otro búfer)
  • :diffthis – hacer que la ventana actual forme parte de diff
  • :dif[fupdate] – actualizar diferencias
  • :diffo[ff] – desactivar el modo diferencial para la ventana actual

Consejo: Los comandos para plegar (por ejemplo, za) operan en un nivel. Para operar en todos los niveles, usa letras mayúsculas (por ejemplo, zA).
Consejo 2: Para ver las diferencias de archivos, se puede iniciar Vim directamente en modo diff ejecutando vimdiff en una terminal. Incluso se puede configurar esto como git difftool.


Fuente de la Cheatsheet de Comandos: Bajo licencia MIT


Enlaces para Aprender Vim

Enlaces en inglés para Aprender Vim

Cursos de Udemy sobre VIM

Relacionados: Terminales y Editores de Texto