Copiar e colar Vim nos terminais

19

O vim usual yanke pastefunciona apenas na mesma janela (mas funciona com arquivos e comandos de fechar / salvar). É possível fazê-lo funcionar entre terminais (arrancar da janela em um terminal e colar em outro) e, em caso afirmativo, como?


fonte

Respostas:

30

Provavelmente a coisa mais simples para você tentar é colocar set clipboard=unnamedem seu .vimrce reiniciar suas sessões vim.

Isso permite que você execute yank(por exemplo yy) em uma janela e put(por exemplo p) em outra janela funcionará, porque todas as sessões do vim compartilharão o mesmo buffer de seleção X.

Por outro lado, seu buffer de arranque será substituído assim que você selecionar algum texto em qualquer outra janela de qualquer aplicativo.

Por outro lado, também significa que qualquer coisa que você puxe no vim agora pode ser colada em qualquer aplicativo clicando com o botão do meio.

Se você não gostar dessa maneira, digite "+ou "*antes de puxar e colocar comandos, por exemplo, "+yypuxar uma linha.

Os +formulários interagem com a área de transferência ( "+yé como Ctrl+ C, "+pé como Ctrl+ V).
Os *formulários interagem com o buffer de seleção ( "*yé como clicar com o botão esquerdo e arrastar, "*pé como clicar com o botão do meio).

Consulte Fazendo seleções de GUI , suporte para seleção X11 e as opções da área de transferência e mouse para obter detalhes.

Mikel
fonte
3
Deus, eu amo o clique do meio. :)
Dan M.
set clipboard=unnamednão funciona para mim (coloquei no .vimrc e reiniciei todas as sessões do vim). Infelizmente, nem os outros métodos. Parece que meu vim não é compilado com x-support. Estou usando o VNC para conectar-se a uma máquina Linux a partir de uma máquina Windows.
3
Sim, este método requer suporte ao X11. Execute :echo has('x11'), se o suporte ao X estiver ativado, ele será impresso 1.
22611 Mikel
0

Se você deseja copiar um arquivo inteiro para o seu arquivo de destino.

Abra seu arquivo de destino no vim.

Coloque o cursor onde quiser e digite o seguinte:

:r /path_to_file/file.ext

Isso copiará um arquivo inteiro para onde seu cursor está ...

no1uknow
fonte