The source content for blog.juliobiason.me
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3.4 KiB

+++ 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.

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") }}