vim cortar e colar história

60

Quando estou "cortando" o vim, acredito que há registros que mantêm um histórico de todas as coisas recentes que eu cortei. Como faço para acessar esses registros?

Por exemplo, digamos que eu corte cada uma dessas palavras consecutivamente

  • 'Olá'
  • 'Mundo'
  • 'E'
  • 'Vim'

Observe que, na verdade, não estou salvando essas edições em registros específicos, estou apenas usando 'd' quatro vezes consecutivas.

user4941
fonte

Respostas:

102

o

: registros de ajuda

O comando revela que existem 10 registros numerados ( "0para "9).

Registrar "0é a coisa mais recente arrancada ; register "1tem o texto excluído mais recente , registra "2a exclusão anterior, "3tem a exclusão antes disso e assim por diante.

Se você excluir cada linha, por sua vez, registra "1, "2, "3e "4conterá "Vim", "E", "World" e "Olá", respectivamente.

Você pode verificar isso usando o comando :reg(ou :registers):

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

Assim, após excluir as quatro linhas, uma de cada vez, você poderá recuperar a 2ª linha ("Mundo") com

"3p

porque é a terceira exclusão mais recente.

njd
fonte
Isto é perfeito; no entanto, o que eu quero o texto 'arrancado' mais recente?
27410 Alexey
Então você usaria: p (que significa o mesmo que "0p)"
njd 27/10/10
11
Preste atenção também nos registros especiais, especialmente "*" e "+", quando você ler :help registers. Muito útil.
Daniel Andersson
3
Deuses, você aprende algo novo todos os dias como um vimmer. É ótimo. Obrigado, @njd.
ELLIOTTCABLE
3
Esta resposta deixa de fora um detalhe importante: somente exclusões de uma linha ou mais são armazenadas no histórico dessa maneira. Se você excluir as palavras da maneira que o OP descreveu na pergunta (usando dquatro vezes, em vez de dd), todas, exceto a última excluída, serão perdidas.
Alexander Rechsteiner
8

Além da resposta do njd, isso pode ser simplificado com o plug- in YankRing . Além de facilitar a navegação nos puxões anteriores, você pode configurar algumas teclas para permitir que os puxões anteriores saiam da 'pilha'. Isso permite que você faça:

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
Al.
fonte
4
Você poderia adicionar como mapear ,ppara exibir o arranco anterior?
Andrew Wood