03. Recortar, Copiar e Colar
2015-12-22Essa é a parte que você não deve fazer muitas vezes quando estiver programando.
Assim como outros editores, o VIM tem um sistema de copiar e colar. E, como vimos vendo desde o começo, o VIM tem seu modo peculiar de lidar com isso.
Toda a parte de copiar-e-colar do VIM é feita em modo normal. E sem que você soubesse, você já stava vendo a parte de recordar textos desde a parte de comandos do modo normal: Qualquer comando que exclua texto imediatamente transfere a parte excluído para a área de transferência do VIM. A única parte que ficou faltando foi como você “cola” estes textos de volta.
E, para colar, você usa p
(de "paste", veja só!).
E, obviamente, existe o [Shift]+p
também. E a diferença é facilmente explicada
se voltarmos para o capítulo #2.2.
Quando falamos do cursor, eu disse que o cursor encontra-se na parte inferior
esquerda do bloco do cursor. O colar do VIM é feito depois do cursor. Assim, ao
pressionar p
, o texto irá aparecer depois do caractere sob o cursor; se for
pressionado [Shift]+p
, o texto será colado antes do caractere atual, empurrando
o mesmo pra frente.
O funcionamento muda um pouco se você recortar o texto usando o modo visual de
linha (ou recortar usando algum movimento que desconsidere a coluna atual).
Nestes casos, o VIM entende que você quer colar uma linha inteira e, ao invés
de mover o conteúdo da linha atual, o texto é colado abaixo da linha atual,
desconsiderando a posição do cursor. [Shift]+p
irá colar o texto antes da linha
atual.
(Embora pareça complicado, a medida que você for se aclimatando com o copiar-e-colar do VIM, você verá que não é tão diferente dos demais editores -- com a exceção que os outros editores tentam adivinhar quando você quer fazer copia de linhas inteiras ou apenas pedaços, enquanto que o VIM deixa você mesmo decidir quando fazer isso.)
A única coisa que ficou faltando agora foi como copiar o texto sem remover o mesmo antes -- porque, vamos admitir, recortar e colar de novo seria muita burrice.
O comando para copiar é y{movimentação}
. Normalmente, ele é chamado de "yank"
(arrancar) e por isso muitos chamam o sistema de "copy'n'paste" do VIM de
"yank'n'paste".
Para copiar a linha inteira, você pode usar yy
. Isto copia toda a linha,
incluindo o marcador de nova linha, e o VIM vai entender que, na hora de colar,
você quer colar a linha inteira, seguindo as mesmas regras que eu expliquei
acima sobre o modo visual de linha.
Assim como outros editores, o VIM mantém a área de transferência entre arquivos (com isso, você pode abrir um arquivo, copiar um texto, abrir outro arquivo e colar a parte selecionada do primeiro) e, normalmente, o VIM ainda consegue manter a área de transferência entre execuções. Entretanto, uma coisa que você pode não gostar é que a área de transferência pertence e é gerenciada exclusivamente pelo VIM -- ou seja, ele não usa a área de transferência do sistema operacional1. Assim, você não vai conseguir copiar do VIM e colar no seu browser ou vice-versa.
.. a não ser que você use registradores, que nós vamos ver a seguir.
1 E não, o "botão do meio dentro do X" não é a mesma coisa a área de transferência.