web-dev-qa-db-fra.com

Comment copier du texte de vim vers un programme externe?

J'essaie de copier-coller du texte de vim. Je fais v pour entrer en mode visuel, puis y une fois que j'ai sélectionné mon bloc.

Il semble copier le texte dans le presse-papiers de vim, car p le collera. Mais dans un autre programme (par exemple Chrome), un clic droit-> coller ne colle pas le texte correct. Comment copier du texte dans le presse-papiers correct?

91
ripper234

Ce qui suit ne fonctionnera que si vim --version indique que vous avez +xterm_clipboard fonctionnalité. Sinon, vous devrez installer des packages supplémentaires ou recompiler vim avec cette fonctionnalité ajoutée.


Il existe en fait deux options:

"+y

copie dans le tampon du presse-papiers "habituel" (pour pouvoir coller avec Ctrl + V, cliquer avec le bouton droit et sélectionner "Coller", etc.), tout en

"*y

copies dans la sélection X11 - vous pouvez coller à partir de ce tampon en utilisant le clic du milieu.

Notez que "* et "+ fonctionne dans les deux sens. Donc, si vous avez sélectionné du texte dans une autre application, vous pouvez le coller dans vim en utilisant "*p et si vous avez copié du texte (en utilisant, disons, Ctrl-C), vous pouvez le coller dans vim en utilisant "+p.

70
Hamish Downer

Si vous utilisez vim> = 7.3.74, vous pouvez réellement mettre ceci dans votre vimrc:

set clipboard=unnamedplus

Qui utilisera automatiquement le + buffer (le presse-papiers du système) par défaut. Ensuite, pour copier (copier), il vous suffit d'utiliser la commande régulière y, etc.

J'ai trouvé ce comportement assez ennuyeux, cependant, car des commandes comme d mettent le texte sur lequel elles opèrent dans le tampon par défaut, ce qui signifie que je ne pouvais pas faire un dd rapide et coller une ligne depuis Internet, par exemple.

35
Reid

Maintenez la touche Maj enfoncée et sélectionnez le texte avec le curseur de la souris.
Le texte sera copié dans le presse-papiers.

Cela fonctionne également pour coller depuis le presse-papiers dans vim.

Pour être clair, cela fonctionne pour vim s'exécutant dans un terminal tel que xterm.

31
Andrew Stacey

Je trouve la norme "+gP et "+y commandes très difficiles à utiliser. J'ai donc remappé Ctrl-Y pour tirer dans le presse-papiers et Ctrl-P à coller depuis le presse-papiers. Ajoutez ceci à .vimrc

nnoremap <C-y> "+y
vnoremap <C-y> "+y
nnoremap <C-p> "+gP
vnoremap <C-p> "+gP
11
Bernhard Heijstek

Qu'à cela ne tienne, j'ai trouvé la réponse - elle est inscrite sur les menus du vim.

"+y

Très intuitif.

6
ripper234

Juste pour ajouter une réponse non spécifique à vim: vous pouvez utiliser Ctrl+Shift+C à copier dans le presse-papiers du système dans Ubuntu (si la fonctionnalité est fournie par votre émulateur de terminal, gnome-terminal pour celle-ci la fournit). Ctrl+Shift+V colle dans une autre fenêtre de terminal, régulière Ctrl+V colle à une application graphique.

De plus, si vous sélectionnez le texte dans le terminal, puis cliquez avec le bouton du milieu, il sera collé depuis le presse-papiers X11.

4
crazy2be

Maintenez enfoncée la touche MAJ et sélectionnez le texte de la souris pour le copier.

Collez ensuite un autre programme avec CTRL + v.

Fonctionne en terminal sur mon Ubuntu 16.04. Pas sûr de gvim et d'autres systèmes.

enter image description here

4
Andrzej Rehmann

Lorsque j'ai vérifié que mon vim ne supportait pas le presse-papiers:

vim --version | grep clip
-clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      -mouseshape      +startuptime     -xterm_clipboard

J'ai installé vim-gnome puis vérifié à nouveau

vim --version | grep clipboard
+clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      +mouseshape      +startuptime     +xterm_clipboard

Maintenant, je peux copier et coller en utilisant respectivement "+ y et" + p.

3

Par défaut, si vous installez la version allégée de vim, vous n'aurez pas le +xterm_clipboard fonction activée (vim --version | grep xterm), nécessaire pour utiliser le * et + s'inscrit en dehors de vim.

Pour l'activer, vous devez soit compiler vim vous-même, soit installer une version de vim qui l'accompagne pré-activée. J'ai utilisé vim-gnome: Sudo apt-get install vim-gnome. Si vous effectuez vim --version | grep xterm, vous verrez que c'est maintenant +xterm_clipboard.

Maintenant, essayez de copier dans le + et * et ça devrait marcher.

2
laughing_man

Juste pour ajouter, si quelque chose fonctionne, essayez de changer le terminal qui enveloppe vim (si vous utilisez vim depuis le terminal). J'ai trouvé que, par exemple, le presse-papiers est inaccessible par guake alors qu'il est accessible à partir de gnome-terminal.

0
gc5