Question Comment faire de la pâte vim depuis (et copier dans) le presse-papiers du système?


Contrairement aux autres éditeurs, vim stocke le texte copié dans son propre presse-papiers. Il est donc très difficile pour moi de copier du texte d'une page Web et de le coller dans le fichier de travail en cours. Il se trouve que je dois soit ouvrir gedit ou le taper manuellement.

Puis-je faire une pâte vim depuis et vers le presse-papier du système?


614
2017-07-15 04:28


origine


Réponses:


le "* et "+ les registres sont pour le presse-papiers 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 "* register 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 copie généralement les éléments sélectionnés à l'aide de la souris et colle avec le bouton central de la souris) "+ est analogue à X11 CLIPBOARD sélection (qui est le presse-papiers proprement dit).

Si tout cela vous dépasse, essayez d'utiliser "*yy ou "+yy pour copier une ligne dans le presse-papiers de votre système. En supposant que vous avez les options de compilation appropriées, l'un ou l'autre devrait fonctionner. Vous voudrez peut-être refaire cela à quelque chose de plus pratique pour vous. Par exemple, vous pourriez mettre vnoremap <C-c> "*y dans votre ~ / .vimrc afin que vous puissiez sélectionner visuellement et appuyez sur Ctrl+c pour tirer sur le presse-papiers de votre système.

Soyez conscient 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 le +clipboard fonctionnalité et vous devrez installer une version différente ou le recompiler. Certaines distributions Linux fournissent une installation minimale de vim par défaut, mais généralement si vous installez le vim-gtk paquet vous pouvez obtenir les fonctionnalités supplémentaires.

Vous pouvez également jeter un oeil à la '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 suppression / 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 désiré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 l'indentation appropriée en utilisant <C-r><C-p>* ou <C-r><C-p>+. Voir :help i_CTRL-R_CTRL-P.

Il est également intéressant de mentionner vim paste option (:help paste). Cela met vim dans un "mode collage" spécial qui désactive plusieurs autres options, vous permettant de coller facilement dans vim en utilisant le raccourci de collage de votre émulateur de terminal ou du multiplexeur. Tapez simplement :set paste pour l'activer, collez votre contenu, puis tapez :set nopaste pour le désactiver. Alternativement, vous pouvez utiliser le pastetoggle option pour définir un code clé qui permute 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 de contournement pratique pendant que vous perfectionnez vos côtelettes vim.

Voir :help clipboard pour des informations plus détaillées.


737
2017-07-15 04:31



Vous pouvez copier dans vim. Faire le fichier en mode insertion et utiliser Ctrl+Décalage+v. Rappelez-vous d'avance à

 :set paste 

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


106
2017-07-15 15:46



Linux

Sur mon système Linux, le + et * enregistre la carte dans une sélection X11, qui peut être collée avec le bouton central de la souris. Quand :set clipboard=unnamed et :set clipboard=unnamedplus sont utilisés, puis les registres sont mappés au presse-papiers et peuvent être collés avec CTRL-V.

Les spécificités semblent être quelque peu dépendantes de la configuration et du système, donc votre kilométrage variera certainement. Il devrait certainement vous faire pointer dans la bonne direction, cependant.

Voir également

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


37
2017-07-15 04:38



Pour ma configuration fonctionne pour copier et coller

" copy and paste
vmap <C-c> "+yi
vmap <C-x> "+c
vmap <C-v> c<ESC>"+p
imap <C-v> <ESC>"+pa

36
2018-05-16 08:50



Ce serait 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
2018-05-15 21:02



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 l'information sur ce texte est sélectionné est sur le point de changer (par exemple avec un clic gauche de la souris quelque part), ou lorsque une autre application veut coller le texte sélectionné. Ensuite, le texte est mis dans le registre "* .Par exemple, pour couper une ligne et en faire le courant sélection / mettre sur le CLIPBOARD:

    "*dd

De même, lorsque vous souhaitez coller une sélection 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 «mettre» comme n'importe quel autre registre. Par exemple, pour mettre le sélection (contenu du CLIPBOARD):

    "*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 du presse-papiers

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

Vérifier le support X11-presse-papiers dans le terminal

Lorsque vous souhaitez exécuter Vim dans un terminal, vous devez rechercher une version de Vim compilée avec le support du presse-papiers. Vérifiez le support X11-presse-papiers, à partir de la console, tapez:

% vim --version

Si vous voyez "+ xterm_clipboard", vous êtes prêt à partir.

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

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

PRIMAIRE, SECONDAIRE et CLIPBOARD

La sélection PRIMAIRE est classiquement utilisée pour implémenter la copie et   coller via le bouton central de la souris. Le SECONDAIRE et CLIPBOARD   les sélections sont moins fréquemment utilisées par les programmes d'application.

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


16
2017-07-21 08:55



J'ai essayé les suggestions ci-dessus et aucune d'elles n'a fonctionné dans mon environnement. (Clonage de Windows PuTTY sur ssh)

Quelques recherches supplémentaires ont été effectuées: https://unix.stackexchange.com/questions/110684/copy-paste-into-sshd-vim-from-local-windows-clipboard

Un des commentaires suggérait d'utiliser SHIFT+INSERT qui a fait l'affaire pour coller du presse-papiers de mon bureau dans le tampon de Vim. Ctrl-C travaillait déjà à copier dans le presse-papier du bureau de Vim.


12
2017-08-22 18:36



Je n'avais pas + presse-papiers donc je suis venu avec cette solution alternative en utilisant xsel:

Ajoutez à votre ~ / .vimrc:

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


7
2018-01-06 23:55



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

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

2) Dans votre fichier .vimrc, ajoutez ce qui suit:

command Clip r !parcellite -c

3) Redémarrez vim.

Maintenant, lorsque vous tapez: Clip comme une commande ex, le contenu du presse-papiers sera collé au curseur. Vous pouvez également mapper la nouvelle commande à une touche de fonction afin de pouvoir le faire avec une seule touche.


6
2017-12-08 00:01



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

Entrer en mode Coller

  • ESC
  • : mettre la pâte
  • presse je
  • DÉCALAGE + Insérer (avec un texte copié sur votre presse-papiers)


Quitter le mode Coller

  • ESC
  • : définir nopaste
  • presse je

Vous avez collé le texte et vous êtes en mesure de taper à nouveau.


5
2018-04-20 03:35



Cela fonctionne pour moi: Ctrl+Décalage+V


3
2018-03-14 12:02