El sistema de operadores y movimientos es el núcleo del lenguaje de Vim: un operador define qué hacer y un movimiento define sobre qué. Cualquier combinación válida produce un comando preciso y componible.
Abreviaciones de modos: N = Normal | I = Insert | V = Visual | C = Command | VB = Visual Block
Operadores principales
Modo
Comando
Acción
N
d{motion}
Borra el texto cubierto por el movimiento
N
y{motion}
Copia el texto cubierto por el movimiento
N
c{motion}
Cambia el texto cubierto (borra y entra a Insert)
N
>{motion}
Indenta a la derecha el texto cubierto
N
<{motion}
Indenta a la izquierda el texto cubierto
N
={motion}
Autoindenta el texto cubierto
N
g~{motion}
Alterna mayúsculas/minúsculas del texto cubierto
N
gu{motion}
Convierte a minúsculas el texto cubierto
N
gU{motion}
Convierte a mayúsculas el texto cubierto
N
!{motion}
Filtra el texto cubierto por un comando externo
V
gq
Formatea el texto seleccionado respetando textwidth
Movimientos esenciales como argumento
Modo
Comando
Acción
N
{op}w
Hasta el inicio de la siguiente palabra
N
{op}e
Hasta el final de la palabra actual
N
{op}b
Hacia atrás hasta el inicio de la palabra
N
{op}$
Hasta el final de la línea
N
{op}0
Hasta el inicio de la línea
N
{op}^
Hasta el primer carácter no-blanco
N
{op}gg
Desde el cursor hasta la primera línea
N
{op}G
Desde el cursor hasta la última línea
N
{op}{n}j
El operador aplicado sobre n líneas hacia abajo
N
{op}f{c}
Hasta el carácter c inclusive
N
{op}t{c}
Hasta justo antes del carácter c
N
{op}/patrón
Hasta la siguiente ocurrencia del patrón
Text objects (objetos de texto)
Modo
Comando
Acción
N
{op}iw
Palabra actual (inner word, sin espacios)
N
{op}aw
Palabra actual más el espacio adyacente
N
{op}is
Oración actual (inner sentence)
N
{op}as
Oración actual más espacio adyacente
N
{op}ip
Párrafo actual (inner paragraph)
N
{op}ap
Párrafo actual más línea vacía adyacente
N
{op}i"
Contenido dentro de comillas dobles
N
{op}a"
Comillas dobles y su contenido
N
{op}i'
Contenido dentro de comillas simples
N
{op}i)
Contenido dentro de ()
N
{op}a)
Paréntesis y su contenido
N
{op}i]
Contenido dentro de []
N
{op}i}
Contenido dentro de {}
N
{op}it
Contenido dentro de etiqueta HTML/XML
N
{op}at
Etiqueta HTML/XML y su contenido
N
{op}i``
Contenido dentro de backticks
Formas dobles (operador aplicado a la línea completa)
Modo
Comando
Acción
N
dd
Borra la línea completa
N
yy
Copia la línea completa
N
cc
Cambia la línea completa
N
>>
Indenta la línea a la derecha
N
<<
Indenta la línea a la izquierda
N
==
Autoindenta la línea actual
N
guu
Convierte la línea a minúsculas
N
gUU
Convierte la línea a mayúsculas
Combinaciones con count
Modo
Comando
Acción
N
{n}{op}{motion}
Aplica el operador n veces sobre el movimiento
N
d2w
Borra las siguientes 2 palabras
N
y3j
Copia la línea actual más las 3 siguientes
N
c2f,
Cambia hasta la segunda coma en la línea
N
>2j
Indenta la línea actual y las 2 siguientes
N
d5dd
Equivalente a borrar 5 líneas (igual que 5dd)
Tips
{op}i{delimitador} funciona desde cualquier punto dentro del bloque: el cursor no necesita estar en el delimitador, solo dentro de él.
c/patrón<Enter> es extremadamente preciso para cambiar texto hasta un punto visual exacto sin contar palabras.
=G desde cualquier posición autoindenta todo el resto del archivo; gg=G lo hace completo.
gU{motion} y gu{motion} aceptan cualquier movimiento o text object: gUiw convierte la palabra actual a mayúsculas sin moverse.
La regla del doble (dd, yy, cc) se cumple para todos los operadores: cuando no sabes qué motion usar, prueba doble para operar sobre la línea completa.