Mis apuntes sobre Vim

Cómo copiar objetos de texto

Yank: uso básico

Luego, para pegar uso p (después) o P (antes).

Yank en contexto (bloques determinados por delimitadores)

Nota: el uso de la “a” para definir un contexto hace que el delimitador sea incluido en la copia (and), mientras que el uso de la “i” hace que el delimitador sea excluido (inside). Así que para cada comando de copia, tenemos dos versiones: con la “a” o con la “i”

Delimitadores: aparte de los espacios en blanco, se pueden emplear otros delimitadores para definir bloques

Así tenemos todo tipo de comandos que determinan qué bloque de texto va a ser copiado, dependiendo de esos delimitadores. Por ejemplo:

Yank con Regex

Deshacer cambios (UNDO)

Branches (ramas alternativas de cambios)

Elemental… salvo un detalle: si hago un cambio, lo deshago y escribo otra cosa, las nuevas versiones de vim abren una nueva historia de cambios (branching) y recuerda los cambios realizados en cada rama de la historia.

Normalmente el undo y redo funcionan sobre la última rama de cambios realizados, pero los comandos:

Branches 2: volver al estado del buffer hace t tiempo...

Ejemplos:

:earlier 15m
:later 50s

Los <time_offset> siempre son relativos (obviamente). Estos dos comandos parecen ser más razonables que g+ y g-, porque te ubica temporalmente en el estado en que tenías el buffer y no se maneja por rama de cambios. Uno puede usar “bisección”, saltando hacia adelante y hacia atrás en el tiempo hasta recuperar el estado que prefiera.