Comment faire coller vim à partir (et copier vers) du presse-papiers du système?

contrairement à d'autres éditeurs, vim stocke du texte copié dans son propre presse-papiers. Donc, c'est très difficile pour moi de copier du texte d'une page Web et de le coller dans le fichier courant. Il se trouve que je dois ouvrir gedit ou le taper manuellement.

puis-je faire de la pâte vim à partir et vers le presse-papiers du système?

627
demandé sur Cem Kalyoncu 2012-07-15 08:28:19

24 réponses

les registres "* et "+ sont pour le bloc-notes du système ( :help registers ). Selon votre système, ils peuvent faire des choses différentes. 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 le "* est analogue à X11 primaire sélection (qui habituellement copie des choses que vous sélectionnez avec la souris et les pâtes avec le bouton du milieu de la souris) et "+ est analogue à X11 bloc-notes sélection (qui est le bloc-notes proprement dit).

si tout ce qui est passé par dessus votre tête, essayez d'utiliser "*yy ou "+yy pour copier une ligne dans le bloc-notes de votre système. En supposant que vous avez les options de compilation appropriées, l'une ou l'autre devrait fonctionner. Vous voudrez modifier cela pour quelque chose de plus pratique pour vous. Par exemple, vous pouvez mettre vnoremap <C-c> "*y dans votre ~/.vimrc de sorte que vous pouvez sélectionner visuellement et appuyez sur Ctrl + c pour glisser vers le bloc-notes de votre système.

soyez conscient que la copie/collage à partir du bloc-notes système ne fonctionnera pas si :echo has('clipboard') retourne 0. Dans ce cas, vim n'est pas compilé avec la fonctionnalité +clipboard et vous devrez installer une version différente ou la recompiler. Quelque linux distros fournit une installation vim minimale par défaut, mais généralement si vous installer le "paquet vim-gtk vous pouvez obtenir les fonctionnalités supplémentaires.

vous pouvez également jeter un oeil à l'option 'clipboard' décrite à :help cb . Dans ce cas, vous pouvez :set clipboard=unnamed ou :set clipboard=unnamedplus pour faire toutes les opérations de tirage/suppression automatiquement copier dans le bloc-notes du système. Ce pourrait être un inconvénient dans certains cas, lorsque vous êtes stocker autre chose dans le presse-papiers comme il va le remplacer.

pour coller Vous pouvez utiliser "+p ou "*p (encore une fois, en fonction de votre système et/ou de la sélection désirée) ou vous pouvez les associer à autre chose. J'type explicitement, mais je me retrouve souvent en mode insertion. Si vous êtes en mode insert, vous pouvez toujours les coller avec une bonne indentation en utilisant <C-r><C-p>* ou <C-r><C-p>+ . Voir :help i_CTRL-R_CTRL-P .

ça vaut aussi mentionner l'option paste de vim ( :help paste ). Cela met vim dans un "mode pâte" spécial qui désactive plusieurs autres options, vous permettant de coller facilement dans vim en utilisant votre émulateur de terminal ou le raccourci de pâte de multiplexeur familier. Il suffit de taper :set paste pour l'activer, coller votre contenu, puis tapez :set nopaste pour le désactiver. Alternativement, vous pouvez utiliser l'option pastetoggle pour définir un code qui bascule le mode ( :help pastetoggle ). Je recommande d'utiliser des registres au lieu de ces options, mais si elles sont encore trop effrayantes, cela peut être une solution pratique pendant que vous perfectionnez vos côtelettes vim.

Voir :help clipboard pour de plus amples informations.

748
répondu Conner 2018-03-26 14:05:53

vous pouvez copier dans vim. Faites le fichier en mode insert et utilisez Ctrl + Shift + v . Rappelez-vous à l'avance à

 :set paste 

pour éviter de jouer avec l'identation ...

109
répondu neel 2017-05-17 08:37:17

Linux

sur mon système Linux, les + et * enregistrent une carte vers une sélection X11, qui peut être collée avec le bouton du milieu de la souris. Lorsque :set clipboard=unnamed et :set clipboard=unnamedplus sont utilisés, alors les registres se dirigent vers le bloc-notes, et peuvent être collés avec CTRL-V.

les spécificités semblent dépendre de la configuration et du système, donc votre kilométrage va certainement varier. Il devrait certainement vous obtenir pointé dans le droit direction, cependant.

Voir Aussi

http://vim.wikia.com/wiki/Accessing_the_system_clipboard

37
répondu Todd A. Jacobs 2012-07-15 04:38:20

pour moi cette configuration fonctionne pour la copie et le collage

" copy and paste
vmap <C-c> "+yi
vmap <C-x> "+c
vmap <C-v> c<ESC>"+p
imap <C-v> <ESC>"+pa
36
répondu lis2 2013-05-16 08:50:18

ce sont les lignes dont vous avez besoin dans votre vimrc à cette fin:

set clipboard+=unnamed  " use the clipboards of vim and win
set paste               " Paste from a windows or from vim
set go+=a               " Visual selection automatically copied to the clipboard
30
répondu Danniel Little 2013-05-15 21:21:55

presse-papiers

Il ya un registre spécial pour stocker cette sélection, il est le "* inscrire. Rien n'est mis ici à moins que l'information sur ce que le texte est selected est sur le point de changer (par exemple avec un clic gauche de la souris quelque part), ou quand une autre application veut coller le texte sélectionné. Puis le texte est mis dans le "* registre. Par exemple, pour couper une ligne et d'en faire l'actuel sélection/de le mettre sur le Bloc-notes:

    "*dd

de même, lorsque vous voulez coller une sélection d'une autre application, par exemple, en cliquant sur le bouton central de la souris, la sélection est mis dans le "* s'inscrire d'abord, puis "mettre" comme n'importe quel autre registre. Par exemple, pour mettre le sélection (contenu du presse-papiers):

    "*p

registres E354

> There are nine types of registers:                      
> 1. The unnamed register ""
> 2. 10 numbered registers "0 to "9
> 3. The small delete register "-
> 4. 26 named registers "a to "z or "A to "Z
> 5. four read-only registers ":, "., "% and "#
> 6. the expression register "=
> 7. The selection and drop registers "*, "+ and "~ 
> 8. The black hole register "_
> 9. Last search pattern register "/

Coller à partir du presse-papiers

1. Clipboard: Copy
2. Vim insertmode, middle mouse key

contrôle pour X11 - support de presse-papiers dans le terminal

quand vous aimez exécuter Vim dans un terminal vous devez chercher une version de Vim qui a été compilée avec le support de presse-papiers. Vérifiez le support du bloc-notes X11, depuis la console, tapez:

% vim --version

si vous voyez" +xterm_clipboard", vous pouvez y aller.

http://vim.wikia.com/wiki/Accessing_the_system_clipboard

le serveur X maintient trois sélections, appelées:

primaire, secondaire et presse-papiers

la sélection primaire est traditionnellement utilisée pour mettre en œuvre la copie et collage via le bouton du milieu de la souris. Le SECONDAIRE et le presse-papiers les sélections sont moins fréquemment utilisées par les programmes d'application.

http://linux.die.net/man/1/xsel

16
répondu The Demz 2015-07-24 21:28:50

j'ai essayé les suggestions ci-dessus et aucune d'elles n'a fonctionné dans mon environnement. (Windows PuTTY clone over SSH)

d'autres recherches sur Google ont été faites: https://unix.stackexchange.com/questions/110684/copy-paste-into-sshd-vim-from-local-windows-clipboard

L'un des commentaires suggérait l'utilisation de SHIFT+INSERT qui a fait le tour pour coller du presse-papiers de mon bureau dans le tampon de Vim. Ctrl-C travaillait déjà pour copier dans le bloc-notes du bureau de Vim.

12
répondu jinksPadlock 2017-04-13 12:36:31

je crois que cette question mérite une réponse plus objective.

Entrée En Mode Pâte

  • ESC
  • : set paste
  • appuyez sur je
  • SHIFT + Insérer (avec un texte copié dans votre presse-papiers)



Laissant Coller En Mode

  • ESC
  • : set nopaste
  • appuyez sur je

vous avez collé le texte et vous pouvez le taper à nouveau.

11
répondu ivanleoncz 2018-04-20 03:35:41

N'avait pas +Presse-papiers donc j'ai trouvé cette solution alternative en utilisant xsel:

Ajouter à votre ~/.vimrc:

vnoremap <C-C> :w !xsel -b<CR><CR>

7
répondu rotestein 2014-01-06 23:55:57

une note rapide pour les personnes dont l'installation vim ne supporte pas les registres * et+. Il n'est pas nécessaire de télécharger une nouvelle installation vim à coller à partir du presse-papiers. Voici une méthode alternative:

1) Installer parcellite (un gestionnaire de presse-papiers avec une faible empreinte mémoire);

2) dans votre .vimrc, ajouter le texte suivant:

command Clip r !parcellite -c

3) redémarrer vim.

maintenant quand vous tapez: Clip en tant que commande ex, le contenu du presse-papiers sera inséré dans le curseur. Vous pouvez aussi mapper la nouvelle commande à une touche de fonction de façon à pouvoir le faire avec une touche de touche.

6
répondu lovecraftian 2013-12-08 00:01:34

cela me va: Ctrl + Shift + V 151970920"

3
répondu Boseam 2016-03-15 18:11:15

suite à la réponse de Conner, ce qui était génial, mais C-R C-p + et C-R C-p * en mode insertion est un peu gênant. Idem "*p et "+p du mode commande.

un gourou VIM a suggéré ce qui suit à la carte C-v à ce que C-r C-p + fait.

vous pourriez avoir :inoremap <C-v> <C-o>"+p pour insérer le mode seulement

si vous voulez vraiment passer outre le mode visuel dans le sens du bloc (pas recommandé par lui comme visuel mode is good) vous pourriez avoir map <C-v> "+p

2
répondu barlop 2014-05-25 15:44:43

en plus du paramètre :set clipboard=unnamed , vous devez utiliser mvim -v que vous pouvez obtenir avec brew install macvim si vous utilisez vim sur Terminal.application sur Mac OS X 10.9. Par défaut, vim ne supporte pas l'option presse-papiers.

1
répondu Nobu 2013-11-20 20:26:38

il peut également être intéressant de mentionner, sur OSX en utilisant Vim, vous pouvez sélectionner le texte avec la souris, Cmd-C pour copier dans le bloc-notes du système OSX, et le texte copié sera disponible dans le bloc-notes à l'extérieur de Vim.

En d'autres termes, OSX traite comme il s'agissait d'une fenêtre, et c'est là que le tant décrié Apple "Commande" bouton est très pratique.

B-30

1
répondu B-30 2015-06-15 00:50:34

basé sur la réponse @lis2, j'utilise une configuration plus simple qui ne forcera pas le mode insertion à la fin:

" Copy and paste
if has('clipboard') && !has('gui_running')
  vnoremap <C-c> "+y
  vnoremap <C-x> "+d
  vnoremap <C-v> "+p
  inoremap <C-v> <C-r><C-o>+
endif

l'Esprit que toutes ces substituer par défaut Vim mappages:

comme alternative, on peut utiliser des touches inspirées des verbes" yank"," delete "et" put "Vim: <C-y> , <C-d> et <C-p> respectivement. Ceux-ci ne remplaceraient qu'un seul mappage par défaut:

  • i_CTRL-P : recherche par mot clé pour l'achèvement
1
répondu ericbn 2016-08-06 18:53:24

ce dont vous avez vraiment besoin est EasyClip . Il fera exactement cela et bien plus encore...

1
répondu Scott Wade 2017-02-25 05:59:25

lorsque J'utilise ma Vim Debian qui n'est pas intégrée à Gnome (vim --version | grep clip # ne montre aucune prise en charge du presse-papiers), je peux copier dans le presse-papiers après avoir tenu la touche majuscules et sélectionné le texte avec la souris, tout comme avec tout autre programme de malédictions. Comme je l'ai compris à partir d'un commentaire de @Conner, c'est le terminal (gnome-terminal dans mon cas) qui éteint son compte rendu d'événement de souris quand il sent Ma Presse de décalage. Je suppose que les programmes basés sur des malédictions peuvent recevoir des événements de souris après avoir envoyé un une certaine séquence D'évasion vers le terminal.

0
répondu eel ghEEz 2015-01-22 21:34:47

si vous êtes sur windows et que vous voulez coller le contenu du bloc-notes système en utilisant p alors tapez cette commande.

:set clipboard = unnamed

Cela a résolu mon problème.

0
répondu vincent mathew 2015-05-06 09:30:17

Il y a deux façons simples de le faire. Faites votre fichier en mode insert et 1) Appuyez sur le bouton du milieu (la roue de défilement) dans votre souris, ou 2) Ctrl + Maj + V

0
répondu user1898814 2015-07-09 02:30:31

Pour certains claviers internationaux, vous devrez appuyer sur " + l'Espace pour obtenir un " .

Donc, dans ces cas, vous devrez appuyer sur " l'Espace + y ou " l'Espace * y à copier.

et " l'Espace + p ou " l'Espace * p pour coller.

0
répondu Arthur F 2015-08-23 18:50:41

si vous utilisez vim dans MAC OSX, malheureusement il est livré avec verion plus ancien, et non conforme avec les options de presse-papiers. Heureusement, homebrew peut facilement résoudre ce problème.

installer vim:

brew install vim --with-lua --with-override-system-vim

install guide of vim:

brew install macvim --with-lua --with-override-system-vim

redémarrer le terminal pour prendre effet.



ajouter la ligne suivante à ~/.vimrc

set clipboard=unnamed

maintenant vous pouvez copier la ligne dans vim avec yy et la coller à l'échelle du système.

0
répondu anonymous 2016-08-16 08:00:27

les autres solutions sont bonnes si vous voulez changer votre vimrc, etc... Cependant je voulais un moyen simple pour copier de vim à mon clavier de système. C'est ce que je suis venu avec.

  • sélectionnez le texte que vous souhaitez copier en mode visuel v
  • appuyez sur : (il s'étendra automatiquement pour afficher :'<,'> )
  • Type y * ou y + (selon votre système) pour yank le texte sélectionné au bloc-notes système
0
répondu NateW 2016-12-21 00:00:03

la solution la plus simple à cela, qui fonctionne également entre différentes machines Linux à travers ssh est:

  1. vérifiez si vim supporte le bloc-notes X-11: vim --version | grep clipboard . Si elle rapporte -clipboard et -xterm_clipboard vous devez installer soit vim-gtk ou vim-gnome (gvim sur arch linux)

  2. ajouter les lignes suivantes à votre .vimrc :

set clipboard=unnamedplus
set paste
  1. si vous vous connectez sur une autre machine via ssh, utilisez l'option-Y: ssh -Y machine

maintenant la copie et le collage devraient fonctionner exactement comme prévu sur une seule machine, et à travers différentes machines en utilisant seulement y pour yank et p pour la pâte. NB modifier .vimrc sur toutes les machines où vous souhaitez utiliser cette fonctionnalité.

0
répondu chao 2017-07-06 09:14:59

si vous utilisez d'abord une souris do

 :set paste 

puis right click mouse et le contenu dans le tampon sera collé

0
répondu Mohammed Rafeeq 2018-03-02 13:58:03