vim cortar y pegar historial

60

Cuando estoy 'cortando' en vim, creo que hay registros que mantienen un historial de todas las cosas recientes que he cortado. ¿Cómo accedo a esos registros?

Por ejemplo, digamos que corté cada una de estas palabras consecutivamente

  • 'Hola'
  • 'Mundo'
  • 'Y'
  • 'Empuje'

Tenga en cuenta que en realidad no estoy guardando estas ediciones en registros particulares, solo estoy usando 'd' cuatro veces consecutivas.

usuario4941
fuente

Respuestas:

102

los

: registros de ayuda

El comando revela que hay 10 registros numerados ( "0a "9).

Registrarse "0es lo más reciente que se ha eliminado ; register "1tiene el texto eliminado más reciente , registra "2la eliminación anterior, "3tiene la eliminación anterior y así sucesivamente.

Si elimina cada línea, a su vez, registros "1, "2, "3y "4contendrá "Vim", "Y", "Mundial" y "Hola", respectivamente.

Puede verificar esto utilizando el comando :reg(o :registers):

:reg
""   Vim^J
"1   Vim^J
"2   And^J
"3   World^J
"4   Hello^J

Entonces, después de eliminar las cuatro líneas de una en una, puede recuperar la segunda línea ("Mundo") con

"3p

porque es la tercera eliminación más reciente.

njd
fuente
Esto es perfecto; sin embargo, ¿cuál es el texto más reciente "arrancado"?
Alexey
Entonces usarías: p (que significa lo mismo que "0p)
njd
1
También preste atención a los registros especiales, especialmente "*" y "+", cuando lea :help registers. Muy útil
Daniel Andersson
3
Dioses, aprendes algo nuevo todos los días como vimmer. Es genial. Gracias @njd.
ELLIOTTCABLE
3
Esta respuesta omite un detalle importante: de esta manera solo se almacenan las eliminaciones de una línea o más en el historial. Si elimina las palabras de la manera que OP describió en la pregunta (usando dcuatro veces, en lugar de dd), se pierden todas menos la última eliminada.
Alexander Rechsteiner
8

Además de la respuesta de njd, esto se puede simplificar con el complemento YankRing . Además de facilitar la exploración de los yanks anteriores, puede configurar algunas teclas para permitirle sacar los yanks anteriores de la 'pila'. Esto te permite hacer:

yy    " Copy first line
yy    " Copy second line
yy    " Copy third line
yy    " Copy fourth line
" Assumes you've mapped ,p to be the pop command: choose your preferred key or key-combination
,p    " Paste fourth line and pop it off the Yank Ring
,p    " Paste third line and pop it off the Yank Ring
,p    " Paste second line and pop it off the Yank Ring
,p    " Paste first line and pop it off the Yank Ring
Alabama.
fuente
44
¿Podría agregar cómo mapear ,ppara hacer estallar el tirón anterior?
Andrew Wood