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?
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
.
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.
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
.
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
Qu'à cela ne tienne, j'ai trouvé la réponse - elle est inscrite sur les menus du vim.
"+y
Très intuitif.
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.
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.
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.
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.