web-dev-qa-db-fra.com

Impossible de copier de vim dans le presse-papiers du système

Comme indiqué dans le titre, je ne parviens pas à copier de vim dans le presse-papiers du système. Viceversa fonctionne, copier à partir de vim extérieur et coller avec p est correct.

J'ai installé le support du presse-papier, la version de vim est 7.3.429:

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

J'ai:

set clipboard=unnamedplus

dans mon .vimrc et il est défini lorsque je le fais:

set clipboard?

ou

:echo has('clipboard')

J'utilise Ubuntu 12.04 LTS et vim dans gnome-terminal (mais GVim a le même problème). Une idée?

Merci

53
gc5

C'est ce qui fonctionne pour moi (Ubuntu 13.10):

Réinstallez vim en tant que vim-gtk:

Sudo apt-get install vim-gtk

sélectionnez ce que vous voulez en utilisant la souris - puis tapez pour copier dans le presse-papier :

"+y

pour coller dans vim à partir du presse-papier tapez:

"+p

Je ne sais pas pourquoi mais la comparaison de la sortie de vim --version montre que l'installation de vim habituelle est relativement limitée comparée à vim-gtk. Le remplacement de vim par vim-gtk n'affecta aucun pluging.


Informations complémentaires:

85
Raffael

Je vais laisser la réponse originale ci-dessous car il peut être important pour les autres personnes qui recherchent cette question.

En bref, il ne semble pas y avoir de solution unique pour tous, mais avec 'set clipboard = unnamedplus', l'un des '* p' ou '+ p' devrait fonctionner dans le presse-papiers "system".

'* p' est presque certainement celui que vous voulez. ( à partir d'ici )


vim est un programme cli. Lors de son utilisation à l'intérieur de gnome-terminal (ou de tout émulateur de terminal), crtl + c (ou toute combinaison de touches) est traité en premier par l'émulateur de terminal, puis par le shell, puis enfin par le programme (vim dans ce cas). vim et ctrl + c ne fonctionneront presque certainement jamais car ctrl + c envoie un signal SIGINT à la tâche en cours d'exécution. vim utilise SIGINT pour arrêter d’autres tâches telles que l’abandon du mode d’insertion ou l’arrêt des fonctions de recherche.

En d'autres termes. Ctrl + C n'est jamais réellement passé à VIM. SIGINT est transmis à VIM. SIGINT a d'autres utilisations dans vim, donc utiliser la copie ne fonctionnera probablement pas (et même si vous pouvez le forcer, ce n'est pas une bonne idée).

Au lieu de cela, essayez de coller avec Ctrl + Maj + C et Ctrl + Maj + V (il y en a d'autres mais je crois que ceux-ci ont mis du texte dans le presse-papiers du système)

Pour être juste, je ne sais pas grand chose de Gvim.

6
coteyr

Utilisez dans votre vimrc:

set mouse=a

Cela vous permettra de sélectionner et de copier manuellement avec la souris.

5
Sergio Abreu

En plus de la réponse acceptée , si vous travaillez à distance sur SSH (par exemple sur tmuxavec plusieurs volets avec différents processus vimque vous souhaitez copier), vous devez également exporter votre affichage X car vimest en utilisant xterm-clipboard pour interfacer entre différents processus. Vous pouvez définir l’affichage X en exécutant

export DISPLAY=:0.0

Cela doit être exécuté avant le lancement de vimname__, et sous tout autre shell que vous avez.

3
Yusuf Gören

J'ai trouvé sur Ubuntu 16.04, il faut que vim-gui-common soit installé pour que "+y puisse fonctionner.

1
Carlos Torchia