Não é possível copiar do vim para a área de transferência do sistema

44

Como dito no título, não consigo copiar do vim para a área de transferência do sistema. Viceversa trabalha, copiando de fora do vim e colando com p ok.

Eu instalei o suporte da área de transferência, a versão do vim é 7.3.429:

$ vim --version | grep clip
+clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments 
+xsmp_interact +xterm_clipboard -xterm_save 

Eu tenho:

set clipboard=unnamedplus

no meu .vimrc e é definido quando eu faço:

set clipboard?

ou

:echo has('clipboard')

Estou usando o Ubuntu 12.04 LTS e o vim dentro de gnome-terminal (mas também o GVim tem o mesmo problema). Alguma idéia?

Obrigado

    
por gc5 19.09.2013 / 16:31

3 respostas

72

Isso é o que funciona para mim (Ubuntu 13.10):

Reinstale o vim como vim-gtk:

sudo apt-get install vim-gtk

selecione o que você deseja usando o mouse - digite para copiar para a área de transferência :

"+y

para colar no vim do tipo clipboard :

"+p

Eu não sei porque, mas comparar a saída de vim --version mostra que a instalação usual do vim é bastante restrita em comparação ao vim-gtk. Substituir o vim pelo vim-gtk não afetou os plugings.

Mais informações:

por Raffael 16.03.2014 / 14:09
4

Vou deixar a resposta original abaixo porque pode ser importante para outras pessoas que pesquisam essa pergunta.

Em suma, não parece haver uma resposta de tamanho único, mas com 'set clipboard = unnamedplus', uma das opções '* p' ou '+ p' deve funcionar na área de transferência do 'sistema'.

'* p' é quase certamente o que você quer. ( daqui )

vim é um programa cli. Ao usá-lo dentro do gnome-terminal (ou qualquer emulador de terminal), o crtl + c (ou qualquer combinação de teclas) é manipulado primeiro pelo emulador de terminal, depois pelo shell, e finalmente pelo programa (vim neste caso). vim e ctrl + c quase certamente nunca funcionarão porque ctrl + c envia um sinal SIGINT para a tarefa em execução. O vim usa o SIGINT para parar outras coisas, como abortar o modo de inserção ou parar as funções de busca.

Em outras palavras. Ctrl + C nunca é passado para o VIM. SIGINT é passado para o VIM. SIGINT tem outros usos no vim, então usar para copiar provavelmente não irá funcionar (e mesmo se você forçar, não é uma boa idéia).

Em vez disso, tente usar as teclas Ctrl + Shift + C e Ctrl + Shift + V (há outras, mas acredito que elas colocam texto na área de transferência do sistema)

Para ser justo, não sei muito sobre o gvim.

    
por coteyr 19.09.2013 / 16:47
4

Use no seu vimrc:

set mouse=a

Ele permitirá que você selecione e copie manualmente com o mouse.

    
por Sergio Abreu 02.02.2017 / 16:17