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?
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.
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 ...
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
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
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
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.
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.
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.
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>
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.
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 seulementsi 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
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.
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
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:
-
v_CTRL-C
: arrêt mode visuel -
v_CTRL-X
: soustrayez [count] du nombre -
v_CTRL-V
: blockwise Visual mode -
i_CTRL-V
: inscrire littéralement le non-chiffre suivant, qui est aussi mappé ài_CTRL-Q
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
ce dont vous avez vraiment besoin est EasyClip . Il fera exactement cela et bien plus encore...
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.
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.
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
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.
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.
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 *
ouy +
(selon votre système) pour yank le texte sélectionné au bloc-notes système
la solution la plus simple à cela, qui fonctionne également entre différentes machines Linux à travers ssh
est:
-
vérifiez si vim supporte le bloc-notes X-11:
vim --version | grep clipboard
. Si elle rapporte-clipboard
et-xterm_clipboard
vous devez installer soitvim-gtk
ouvim-gnome
(gvim sur arch linux) -
ajouter les lignes suivantes à votre
.vimrc
:
set clipboard=unnamedplus set paste
- 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é.
si vous utilisez d'abord une souris do
:set paste
puis right click mouse
et le contenu dans le tampon sera collé