+++
title = "03. Recortar, Copiar e Colar"
date = 2015-12-22
weight = 768
+++

Essa é a parte que você não deve fazer muitas vezes quando estiver
programando.

<!-- more -->

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 operacional[^1]. 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.

{{ chapters(prev_chapter_link="./02-outros-comandos", prev_chapter_title="Outros Comandos", next_chapter_link="./04-registradores", next_chapter_title="Registradores") }}
