Global

  • :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
Tip Ejecuta vimtutor en una terminal para aprender los primeros comandos 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
  • gj - move cursor down (multi-line text)
  • gk - move cursor up (multi-line text)
  • 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 or 5G - ir a la línea 5
  • gd - saltar a la declaración local
  • gD - saltar a la declaración global
  • 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
  • zt - position cursor on top of the screen
  • zb - position cursor on bottom of the screen
  • 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
Tip Escribir un número antes del comando de movimiento para repetirlo. Por ejemplo, 4j mueve el cursor hacia abajo 4 líneas.

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
  • Ctrl + ox - Ingrese temporalmente al modo normal para emitir un comando de modo normal x.
  • Esc or Ctrl + c - salir del modo insertar

Editar

  • r - reemplazar un carácter
  • R - reemplazar más de un carácter, hasta que se presione ESC.
  • 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$ or C - cambiar (reemplazar) hasta el final de la línea
  • ciw - cambiar (reemplazar) palabra completa
  • cw or 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

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 or Ctrl + c - salir del modo visual
Tip En lugar de b o B también puede usar ( 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
Tip Los registros son guardados en ~/.viminfo, y serán cargados la próxima vez que se ejecute vim.
Tip 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

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
Tip Para saltar a una marca, puede usar una tilde (`) o un apóstrofo ('). Usando un apóstrofo salta al inicio (primer carácter no-espacio) de la linea que contiene la marca.

Macros

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

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$ or Y - copiar hasta el final de la línea
  • p - pegar antes del cursor
  • P - pegar después del cursor
  • gp - put (paste) the clipboard after cursor and leave cursor after the new text
  • gP - put (paste) before cursor and leave cursor after the new text
  • 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
  • :3,5d - delete lines starting from 3 to 5
Tip You can also use the following characters to specify the range:
e.g.

:.,$d - From the current line to the end of the file
:.,1d - From the current line to the beginning of the file
:10,$d - From the 10th line to the beginning of the file

  • :g/{pattern}/d - delete all lines containing pattern
  • :g!/{pattern}/d - delete all lines not containing pattern
  • d$ or D - cortar hasta el final de la línea
  • x - cortar carácter

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)
  • <% - de-indent a block with () or {} (cursor on brace)
  • >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

Salir

  • :w - guardar archivo sin salir
  • :w !sudo tee % - guardar archivo usando sudo
  • :wq or :x 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

Pestañas

  • :tabnew or :tabnew {page.words.file} - abrir archivo en una nueva pestaña
  • Ctrl + wT - mover la ventana actual a su propia pestaña
  • gt or :tabn[ext] - irr a la próxima pestaña
  • gT or :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 - ejecuta el comando en todas las pestañas (p. ej., :tabdo q - cierra todas las pestañas abiertas)

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)
  • Ctrl + wH - make current window full height at far left (leftmost vertical window)
  • Ctrl + wL - make current window full height at far right (rightmost vertical window)
  • Ctrl + wJ - make current window full width at the very bottom (bottommost horizontal window)
  • Ctrl + wK - make current window full width at the very top (topmost horizontal window)

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
Tip Los comandos de plegar za) operan en un nivel. Para operar en todos los niveles, use letras mayúsculas (p. ej. zA).
Tip Para ver las diferencias de archivos, puede iniciar Vim directamente en el modo diferencias ejecutando vimdiff en una terminal. Incluso se puede configurar como git difftool.