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

54

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

Instalei o suporte da área de transferência, a versão 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 .vimrce é definido quando eu faço:

set clipboard?

ou

:echo has('clipboard')

Estou usando o Ubuntu 12.04 LTS e o vim por dentro gnome-terminal(mas também o GVim tem o mesmo problema). Qualquer ideia?

obrigado

gc5
fonte
stackoverflow.com/questions/11489428/… Isso pode ajudá-lo um pouco.
coteyr
Fez você sair vim entre digitar "+ y na seleção visual e tentando colar vim fora não vai funcionar se você faz?
Samuel Peter
@SamuelPeter Não, eu não desisti vim
GC5
11
Eu me deparei com esse problema porque estava definindo clipboard+=unnamedplusalgo na configuração padrão. Mudar para clipboard=unnamedplus(por exemplo, remover outras configurações) funcionou para mim.
JonnyRaa
Como @JonnyLeeds mencionado. A configuração set clipboard+=unnamed& set clipboard+=unnamedplusnão funciona ao usar y e p para compartilhar a área de transferência do sistema. :set clipboard?== clipboard=autoselect,exclude:cons\|linux,unnamed,unnamedplus; Depois que eu removi o primeiro +, que é set clipboard=unnamede set clipboard+=unnamedplus, e funciona !! :set clipboard?==clipboard=unnamed,unnamedplus
Marslo 27/06

Respostas:

87

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

Reinstale o vim como vim-gtk:

sudo apt-get install vim-gtk

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

"+y

colar no vim do tipo área de transferência :

"+p

Não sei por que, mas comparando a saída de vim --versionshows, a instalação usual do vim é bastante restrita em comparação com o vim-gtk. A substituição do vim pelo vim-gtk não afetou nenhum plug-in.


Outras informações:

Raffael
fonte
11
Não posso expressar o quanto você me ajudou e o quanto estou feliz agora: D
7hi4g0
11
Curiosamente, no 14.04, o VIM comum e o VIM-GTK têm xterm_clipboardsuporte, mas "+pnão funcionam no VIM comum. Em vez de recortar na área de transferência, aumenta a quantidade de linhas selecionadas.
dotancohen
11
A instalação vim-gtkfinalmente funcionou para mim na versão 14.04.4, mas eu experimentei as coisas de maneira um pouco diferente das que outros comentavam. Antes de vim-gtkinstalar, o vim estava aparecendo -xterm_clipboard(ou seja, não ativado). Após a instalação vim-gtk, mostra (+ xterm_clipboard). Estou verificando isso com vim --version | grep clip. Enfim, faz sentido que você precisa +xterm_clipboard!
overthink
Esta é uma otima soluçao. Na verdade, eu fiz isso pela primeira vez depois de instalar um novo sistema operacional Ubuntu.
Linuxxiaocao
A instalação do vim-gtk funcionou para mim. Obrigado
Miguel Mota
6

Deixarei a resposta original abaixo, pois pode ser importante para outras pessoas que pesquisam essa pergunta.

Em suma, não parece haver uma resposta única, mas com 'set clipboard = unnamedplus', um de '* p' ou '+ p' deve funcionar na área de transferência do "sistema".

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


O 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) é tratado primeiro pelo emulador de terminal, depois pelo shell e, finalmente, pelo programa (vim neste caso). vim e ctrl + c quase certamente nunca funcionam porque ctrl + c envia um sinal SIGINT para a tarefa em execução. O vim usa o SIGINT para interromper outras coisas, como interromper o modo de inserção ou interromper as funções de pesquisa.

Em outras palavras. Ctrl + C nunca é realmente passado para o VIM. SIGINT é passado para o VIM. O SIGINT tem outros usos no vim, portanto, o uso de copiar provavelmente não funcionará (e mesmo que você possa forçá-lo, não é uma boa idéia).

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

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

coteyr
fonte
Talvez eu confundido você .. eu disse usando ctrl-cvim exterior eo colar com p, mas no vim Eu sei que eu tenho que usar y.. Vou editar a minha pergunta
GC5
11
LOL ainda não tomou minha cafeína, desculpe.
coteyr
5

Use no seu vimrc:

set mouse=a

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

Sergio Abreu
fonte
3

Além da resposta aceita , se você estiver trabalhando remotamente por SSH (por exemplo, tmuxcom vários painéis com diferentes vimprocessos nos quais deseja copiar), também precisará exportar sua exibição do X, pois vimestá usando xterm-clipboarda interface entre diferentes processos. Você pode definir a exibição X executando

export DISPLAY=:0.0

Isso deve ser executado antes do vim lançamento e em qualquer outro shell que você tenha.

Yusuf Gören
fonte
1

Eu encontrei no Ubuntu 16.04 que preciso vim-gui-commoninstalar "+ypara funcionar.

Carlos Torchia
fonte