vim recortar e colar histórico

55

Quando estou 'cortando' no vim, acredito que existem registros que mantêm um histórico de todas as coisas recentes que eu cortei. Como eu acesso esses registros?

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

  • 'Olá'
  • 'mundo'
  • 'E'
  • 'Vim'

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

    
por user4941 31.01.2010 / 02:10

2 respostas

93

O

:help registers
O comando

revela que existem 10 registros numerados ( "0 to "9 ).

Registre "0 é a coisa mais recente yanked ; registre "1 tem o texto mais recente excluído , registre "2 da exclusão anterior, "3 tenha a exclusão antes disso e assim por diante.

Se você excluir cada linha sucessivamente, os registros "1 , "2 , "3 e "4 conterão "Vim", "And", "World" & "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

Então, depois de excluir as quatro linhas uma de cada vez, você pode recuperar a segunda linha ("Mundo") com

"3p

porque é a terceira exclusão mais recente.

    
por 31.01.2010 / 02:50
7

Além da resposta do njd, isso pode ser simplificado com o plug-in YankRing . Além de facilitar a navegação dos yanks anteriores, você pode configurar algumas teclas para permitir que você retire os yanks anteriores da 'stack'. 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
    
por 31.01.2010 / 12:50

Tags