69 votes

Impossible de copier de vim au presse-papiers du système

Comme indiqué dans le titre, je ne parviens pas à copier de vim vers le presse-papiers du système. L'inverse fonctionne, copier depuis l'extérieur de vim et coller avec p c'est bon.

J'ai installé le support du presse-papiers, 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 

Je l'ai fait :

set clipboard=unnamedplus

dans mon .vimrc et il est réglé quand je le fais :

set clipboard?

ou

:echo has('clipboard')

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

Merci

111voto

Raffael Points 3511

Voici 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 à l'aide de la souris - puis tapez pour copier dans le presse-papiers :

"+y

pour coller dans vim à partir du presse-papiers type :

"+p

Je ne sais pas pourquoi mais en comparant la sortie de vim --version montre que l'installation habituelle de vim est assez restreinte par rapport à vim-gtk. Remplacer vim par vim-gtk n'a pas affecté les plugins.


Pour plus d'informations :

7voto

coteyr Points 16560

Je vais laisser la réponse originale ci-dessous car elle peut être importante pour d'autres personnes qui cherchent cette question.

En bref, il ne semble pas y avoir de réponse unique, mais avec 'set clipboard=unnamedplus', l'un des deux '*p' ou '+p' devrait fonctionner à partir du presse-papiers "système".

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


vim est un programme clique. Lorsqu'on l'utilise dans gnome-terminal (ou n'importe quel émulateur de terminal), crtl+c (ou n'importe quelle combinaison de touches) est d'abord géré par l'émulateur de terminal, puis par le Shell, et enfin par le programme (vim dans ce cas). vim et ctrl+c ne fonctionneront certainement jamais parce que ctrl+c envoie un signal SIGINT à la tâche en cours d'exécution. vim utilise SIGINT pour arrêter d'autres choses comme l'abandon du mode insertion, ou l'arrêt des fonctions de recherche.

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

Essayez plutôt de vous en tenir à Ctrl+Shift+C et Ctrl+Shift+V (il y en a d'autres mais je crois que ceux-là mettent le texte dans le presse-papiers du système).

Pour être honnête, je ne connais pas grand chose à gvim.

5voto

Sergio Abreu Points 195

A utiliser dans votre vimrc :

set mouse=a

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

5voto

Manu Points 741

En plus de la réponse acceptée si vous travaillez à distance via SSH (par exemple, via tmux avec plusieurs volets avec différents vim que vous voulez copier entre eux), vous devez également exporter votre affichage X puisque vim utilise xterm-clipboard pour assurer l'interface entre différents processus. Vous pouvez définir l'affichage X en exécutant

export DISPLAY=:0.0

Cela doit être exécuté avant vim est lancé, et sous tout autre Shell que vous avez.

4voto

J'ai découvert que sur Ubuntu 16.04 j'ai besoin de vim-gui-common installé afin que "+y pour travailler.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X