Contrairement à d'autres éditeurs, vim stocke le texte copié dans son propre presse-papiers. Il est donc très difficile pour moi de copier du texte à partir d'une page Web et de le coller dans le fichier de travail actuel. Il se trouve que je dois ouvrir gedit ou le taper manuellement.
Puis-je faire de la pâte vim depuis et vers le presse-papiers du système?
sudo apt-get install vim-gnome
ce qui ajoutera cette fonctionnalité à vim intégré d'utiliser le presse-papiers du système.vim-gnome
est probablement exagéré ou simplement indisponible dans leur système d'exploitation / distribution, alors que je soupçonnevim-gtk
et de préférencevim-gtk3
est plus susceptible d'exister et de tirer moins de dépendances, tout en offrant une intégration du presse-papiers (au moins pour ceux qui sont encore sur X11; Je ne sais pas comment tout cela interagit avec Wayland).Réponses:
Les registres
"*
et"+
sont destinés au presse-papiers du système (:help registers
). Selon votre système, ils peuvent faire différentes choses. Par exemple, sur les systèmes qui n'utilisent pas X11 comme OSX ou Windows, le"*
registre est utilisé pour lire et écrire dans le presse-papiers du système. Sur les systèmes X11, les deux registres peuvent être utilisés. Voir:help x11-selection
pour plus de détails, mais fondamentalement,"*
c'est analogue à la sélection PRIMAIRE de X11 (qui copie généralement les choses que vous sélectionnez avec la souris et colle avec le bouton central de la souris) et"+
est analogue à la sélection CLIPBOARD de X11 (qui est le presse-papiers proprement dit).Si tout cela vous dépasse, essayez d'utiliser
"*yy
ou"+yy
de copier une ligne dans le presse-papiers de votre système. En supposant que vous disposez des options de compilation appropriées, l'une ou l'autre devrait fonctionner. Vous voudrez peut-être remapper cela à quelque chose de plus pratique pour vous. Par exemple, vous pouvez mettrevnoremap <C-c> "*y
votre ~ / .vimrc pour pouvoir sélectionner visuellement et appuyer sur Ctrl+ cpour accéder au presse-papiers de votre système.Sachez que copier / coller à partir du presse - papiers du système ne fonctionnera pas si
:echo has('clipboard')
renvoie 0. Dans ce cas, vim n'est pas compilé avec la+clipboard
fonctionnalité et vous devrez installer une version différente ou la recompiler. Certaines distributions Linux fournissent une installation minimale de vim par défaut, mais généralement si vous installez le packagevim-gtk
ouvim-gtk3
vous pouvez obtenir les fonctionnalités supplémentaires.Vous voudrez peut-être aussi jeter un œil à l'
'clipboard'
option décrite à:help cb
. Dans ce cas, vous pouvez:set clipboard=unnamed
ou:set clipboard=unnamedplus
pour que toutes les opérations de tirage / suppression soient automatiquement copiées dans le presse-papiers du système. Cela peut être un inconvénient dans certains cas où vous stockez quelque chose d'autre dans le presse-papiers car il le remplacera.Pour coller, vous pouvez utiliser
"+p
ou"*p
(encore une fois, selon votre système et / ou la sélection souhaitée) ou vous pouvez les mapper à autre chose. Je les tape explicitement, mais je me retrouve souvent en mode insertion. Si vous êtes en mode insertion, vous pouvez toujours les coller avec une indentation appropriée en utilisant<C-r><C-p>*
ou<C-r><C-p>+
. Tu vois:help i_CTRL-R_CTRL-P
.Il convient également de mentionner l'
paste
option de vim (:help paste
). Cela place vim dans un "mode de collage" spécial qui désactive plusieurs autres options, vous permettant de coller facilement dans vim à l'aide de votre émulateur de terminal ou du raccourci de collage familier du multiplexeur. Tapez simplement:set paste
pour l'activer, collez votre contenu, puis tapez:set nopaste
pour le désactiver. Alternativement, vous pouvez utiliser l'pastetoggle
option pour définir un code clé qui bascule le mode (:help pastetoggle
). Je recommande d'utiliser des registres au lieu de ces options, mais s'ils sont encore trop effrayants, cela peut être une solution de contournement pratique pendant que vous perfectionnez vos côtelettes Vim.Voir
:help clipboard
pour plus d'informations.la source
"*p
? Dois-je appuyer sur Shift- ', puis Shift-8, puis p, etc.?dd
par exemple. Le premierd
entre en mode opérateur en attente, puis le secondd
termine la commande et supprime la ligne. Si vous tapezdG
, cependant, leG
fait supprimer jusqu'à la fin du fichier au lieu de simplement supprimer la ligne. Les registres utilisent ce même principal pour permettre à diverses commandes de les utiliser.vim-gtk
paquet (sous Debian, au moins), pour obtenir vim qui est compilé avec+xterm_clipboard
. Cela m'a pris 40 minutes pour le découvrir, et seulement quelques secondessudo apt-get install vim-gtk
.vim-gnome
fonctionne également et a+xterm_clipboard
activé.Vous pouvez copier dans vim par le raccourci de gnome-terminal pour coller. Faites le fichier en mode insertion et utilisez
Ctrl+ Shift+ v.
N'oubliez pas au préalable
pour éviter de jouer avec l'indentation.
la source
Linux
Sur mon système Linux, les registres
+
et*
correspondent à une sélection X11, qui peut être collée avec le bouton central de la souris. Lorsque:set clipboard=unnamed
et:set clipboard=unnamedplus
sont utilisés, les registres sont mappés au presse-papiers et peuvent être collés avec CTRL-V.Les détails semblent être quelque peu dépendants de la configuration et du système, donc votre kilométrage variera certainement. Cela devrait certainement vous faire pointer dans la bonne direction.
Voir également
http://vim.wikia.com/wiki/Accessing_the_system_clipboard
la source
*
Mappe uniquement au registre principal X11 (qui est normalement collé par la souris).+
correspond au registre du presse-papiers X11 normalement collé par des raccourcis.*
pour les+
registres X11 primaires et pour le presse-papiers, vous pouvez le voir dans la source de vim: ces valeurs sont définies là-bas et ne sont jamais modifiées,clip_star
etclip_plus
sont toujours utilisées pour*
et+
registres respectivement.Pour moi, cette configuration fonctionne pour copier et coller
la source
Ce serait les lignes dont vous avez besoin dans votre vimrc à cet effet:
la source
Je pense que cette question mérite une réponse plus objective et graphique:
Entrer en mode Coller
Quitter le mode Coller
Vous avez collé le texte et vous pouvez taper à nouveau.
la source
:set nopaste
ne fait rien. Que doit-il faire? Pourquoi en ai-je besoin?:set nopaste
jouez, vous dites à l'éditeur que vous ne voulez plus coller. Et quand vous frappezi
, vous revenez au mode d'édition :).presse-papiers
Il y a un registre spécial pour stocker cette sélection, c'est le registre "*. Rien n'est mis ici sauf si les informations sur le texte sélectionné sont sur le point de changer (par exemple avec un clic gauche de la souris quelque part), ou lorsqu'une autre application veut collez le texte sélectionné. Le texte est ensuite placé dans le registre "*. Par exemple, pour couper une ligne et en faire la sélection actuelle / la mettre sur le CLIPBOARD:
De même, lorsque vous souhaitez coller une sélection à partir d'une autre application, par exemple, en cliquant sur le bouton central de la souris, la sélection est placée dans le registre "* d'abord, puis" mise "comme n'importe quel autre registre. Par exemple, pour placer la sélection (contenu du CLIPBOARD):
registres E354
Coller depuis le presse-papiers
Vérifier la prise en charge du presse-papiers X11 dans le terminal
Lorsque vous souhaitez exécuter Vim dans un terminal, vous devez rechercher une version de Vim qui a été compilée avec le support du presse-papiers. Vérifiez la prise en charge du presse-papiers X11, à partir de la console, tapez:
Si vous voyez "+ xterm_clipboard", vous êtes prêt à partir.
http://vim.wikia.com/wiki/Accessing_the_system_clipboard
http://linux.die.net/man/1/xsel
la source
J'ai essayé les suggestions ci-dessus et aucune d'entre elles n'a fonctionné dans mon environnement. (Windows PuTTY clone sur ssh)
Des recherches supplémentaires sur Google sont apparues: /unix/110684/copy-paste-into-sshd-vim-from-local-windows-clipboard
L'un des commentaires a suggéré d'utiliser
SHIFT+INSERT
ce qui a fait l'affaire pour coller du presse-papiers de mon bureau dans le tampon de Vim.Ctrl-C
travaillait déjà pour copier dans le presse-papiers du bureau à partir de Vim.la source
SHIFT+INSERT
fonctionne parce que c'est l'option coller pour votre terminal (ou dans votre cas PuTTY); cependant, l'indentation sera probablement fausse. Consultez le dernier paragraphe de ma réponse sur l'paste
option pour corriger cela.SHIFT+INS
fonctionne à partir d'un hôte linux vers ssh vim ainsi que le troisième clic de la souris.Je n'avais pas de presse-papiers + alors j'ai trouvé cette solution alternative en utilisant xsel:
Ajoutez à votre ~ / .vimrc:
vnoremap <C-C> :w !xsel -b<CR><CR>
la source
vnoremap <C-C> :w !xclip -i -sel c<CR><CR>
Une note rapide pour les personnes dont l'installation de vim ne prend pas en charge les registres * et +. Il n'est pas nécessaire de télécharger une nouvelle installation de vim à coller depuis le presse-papiers. Voici une méthode alternative:
1) Installer parcellite (un gestionnaire de presse-papiers avec une faible empreinte mémoire);
2) Dans votre fichier .vimrc, ajoutez ce qui suit:
3) Redémarrez vim.
Maintenant, lorsque vous tapez: Clip comme une commande ex, le contenu du presse-papiers sera collé au niveau du curseur. Vous pouvez également mapper la nouvelle commande à une touche de fonction afin de pouvoir le faire en une seule touche.
la source
Cela fonctionne pour moi: Ctrl+ Shift+V
la source
La solution la plus simple à cela, qui fonctionne également entre différentes machines Linux,
ssh
est:Vérifier si les supports vim X-11 clipboard:
vim --version | grep clipboard
. S'il rapporte-clipboard
et que-xterm_clipboard
vous devez installer soitvim-gtk
ouvim-gnome
(gvim sur arch linux)Ajoutez les lignes suivantes à votre
.vimrc
:ssh -Y machine
Maintenant, le copier-coller devrait fonctionner exactement comme prévu sur une seule machine et sur différentes machines en utilisant uniquement
y
pour yank etp
pour paste. NB modifier.vimrc
sur toutes les machines sur lesquelles vous souhaitez utiliser cette fonctionnalité.la source
J'ai rencontré ce problème sur un Macbook Pro mi-2017 fonctionnant
vim
dansiTerm2
mon environnement de développement principal.Comme d'autres réponses l'ont suggéré, j'ai couru
vim --version
et j'ai remarqué qu'il revient-clipboard
, ce qui signifie que la version devim
celle livrée avec ma machine n'a pas été compilée avec l'option presse-papiers.Le
homebrew
package pourvim
semble compiler avec l'clipboard
option, donc le correctif pour moi était de:brew install vim
set clipboard+=unnamed
à mon~/.vimrc
dossieriTerm2
la source
Copier dans le presse-papiers du système d'exploitation
Sélectionnez le texte en mode visuel, appuyez sur
"*y
Coller depuis le presse-papiers du système d'exploitation
presse
"*p
la source
À la suite de la réponse de Conner, ce qui était super, mais
C-R C-p +
etC-R C-p *
en mode d'insertion est un peu pratique bits. Idem"*p
et"+p
depuis le mode commande.un gourou de VIM a suggéré ce qui suit pour mapper
C-v
sur ce qui seC-r C-p +
passe.la source
Si vous utilisez vim dans MAC OSX, malheureusement, il est livré avec une version plus ancienne et non conforme aux options du presse-papiers. Heureusement, les homebrews peuvent facilement résoudre ce problème.
installez vim:
brew install vim --with-lua --with-override-system-vim
installez gui verion de vim:
brew install macvim --with-lua --with-override-system-vim
redémarrez le terminal pour prendre effet.
ajouter la ligne suivante à
~/.vimrc
set clipboard=unnamed
vous pouvez maintenant copier la ligne dans vim avec
yy
et la coller à l'échelle du système.la source
Si vous utilisez d'abord une souris,
Ensuite
right click mouse
, le contenu du tampon sera colléla source
En plus du paramètre
:set clipboard=unnamed
, vous devez utilisermvim -v
ce que vous pouvez obtenirbrew install macvim
si vous utilisez vim sur Terminal.app sur Mac OS X 10.9. Vim par défaut ne prend pas en charge l'option de presse-papiers.la source
Il peut également être utile de mentionner que, sur OSX à l'aide de Vim, vous pouvez sélectionner du texte avec la souris, Cmd-C à copier dans le presse-papiers du système OSX, et le texte copié sera disponible dans le presse-papiers à l'extérieur de Vim.
En d'autres termes, OSX le traite comme s'il s'agissait d'une fenêtre ordinaire, et c'est là que le bouton Apple "Commande" tant décrié est utile.
B-30
la source
Sur la base de la réponse @ lis2, j'utilise une configuration plus simple qui ne forcera pas le mode Insertion à la fin:
Gardez à l'esprit que tous ces mappages Vim par défaut sont remplacés:
v_CTRL-C
: arrêter le mode visuelv_CTRL-X
: soustraire [count] du nombrev_CTRL-V
: mode visuel par blocsi_CTRL-V
: insérer littéralement le non-chiffre suivant, qui est également mappé ài_CTRL-Q
Comme alternative, on peut utiliser les touches inspirées du « coup sec », « supprimer » et « put » verbes: Vim
<C-y>
,<C-d>
et<C-p>
respectivement. Ceux-ci ne remplaceraient qu'un seul mappage par défaut:i_CTRL-P
: mot-clé de recherche en arrière pour compléterla source
Les autres solutions sont bonnes si vous voulez changer votre vimrc, etc ... Cependant, je voulais un moyen simple de copier de vim sur mon clavier système. C'est ce que j'ai trouvé.
v
:
(il s'agrandira automatiquement pour s'afficher:'<,'>
)y *
ouy +
(selon votre système) pour extraire le texte sélectionné dans le presse-papiers du systèmela source
Ce dont vous avez vraiment besoin, c'est d' EasyClip . Il fera exactement cela et bien plus encore ...
la source
Depuis vim 8, le clic droit active le mode visuel par défaut. Cela empêche le copier-coller "normal" (appelez-le un "défaut de conception" https://github.com/vim/vim/issues/1326 ). Corrigez-le en faisant:
echo "set mouse-=a" >> ~/.vimrc
.Quittez et redémarrez vim.
la source
Avec Vim 8+ sur Linux ou Mac, vous pouvez maintenant simplement utiliser la pâte native du système d'exploitation (
ctrl+shift+V
sous Linux,cmd+V
sur Mac). N'appuyez pasi
pour le mode d'insertion.Il collera le contenu de votre presse-papiers du système d'exploitation, en préservant les espaces et les tabulations sans ajouter d'indentation automatique. Il est équivalent à l'ancienne
:set paste
,i
,ctrl+shift+V
,esc
,:set nopaste
méthode.Vous n'avez même plus besoin d'installer les fonctionnalités
+clipboard
ou+xterm_clipboard
vim. Cette fonction est appelée "coller entre crochets". Pour plus de détails, voir Désactiver le retrait automatique lors du collage de texte dans vimla source
Lorsque j'utilise mon vim Debian qui n'est pas intégré à Gnome (vim --version | grep clip # ne montre aucun support du presse-papiers), je peux copier dans le presse-papiers après avoir maintenu la touche Maj enfoncée et sélectionné le texte avec la souris, comme avec n'importe quel autre programme de malédictions. Comme je l'ai pensé à partir d'un commentaire de @Conner, c'est le terminal (gnome-terminal dans mon cas) qui désactive son rapport d'événement de souris lorsqu'il détecte ma pression sur Shift. Je suppose que les programmes basés sur des malédictions peuvent recevoir des événements de souris après avoir envoyé une certaine séquence d'échappement au terminal.
la source
Si vous êtes sous Windows et que vous souhaitez coller le contenu du presse-papiers du système à l'aide de,
p
tapez cette commande.Cela a résolu mon problème.
la source
Il existe deux façons simples de procéder. Créez votre fichier en mode insertion et 1) appuyez sur le bouton central (la molette de défilement) de votre souris, ou 2) Ctrl + Maj + V
la source
Pour certains claviers internationaux, vous devrez peut-être appuyer sur "+ Spacepour obtenir un
"
.Donc, dans ces cas, vous devrez appuyer sur "Space+you "Space*ycopier.
Et "Space+pou " Space*ppour coller.
la source
J'ai utilisé la réponse de NM Pennypacker et installé vim via homebrew pour un MacBook Pro début 2011:
Maintenant, je peux également utiliser le registre "* pour copier et coller du texte dans vim. Je n'ai même pas eu à changer quelque chose dans mon fichier ~ / .vimrc ou $ PATH. Homebrew a ajouté des liens symboliques dans / usr / local / bin, par exemple vim -> ../Cellar/vim/8.1.2350/bin/vim.
L'alternative, qui fonctionnait auparavant, consiste à copier certaines lignes de texte dans vim en le marquant avec la souris et en utilisant le copier-coller (cmd + c, cmd + v) sur un mac. Cette option ne fonctionne que si le texte que vous souhaitez copier et coller est de taille inférieure à la taille de la fenêtre de vim. Si vous souhaitez copier tout le texte dans vim en marquant la fenêtre entière ou en utilisant cmd + a, cela copiera d'autres parties de la console, écrites avant de démarrer vim, ce qui est très ennuyeux.
Je suis donc heureux d'avoir trouvé la nouvelle méthode en utilisant le registre de clippboard.
la source