web-dev-qa-db-fra.com

Vim: copier la sélection dans le presse-papier OS X

Supposons que vous ayez sélectionné une zone dans vim. Comment pouvez-vous le copier dans le presse-papiers OS X?

(Astuce: le presse-papier OS X peut être écrit via un tube dans /usr/bin/pbcopy)

215
ʞɔıu

En fonction de la version de vim que j'utilise, je peux utiliser le registre + pour accéder au presse-papiers.

http://vim.wikia.com/wiki/Mac_OS_X_clipboard_sharing peut avoir des idées qui fonctionnent aussi pour vous.

75
Chris AtLee

Pour MacVim et Windows Gvim, ajoutez simplement ce qui suit à votre ~/.vimrc:

set clipboard=unnamed

Toutes les opérations telles que yy, D et P fonctionnent avec le Presse-papiers. Pas besoin de les préfixer avec "* ou "+.

229
George V. Reilly

Si le Presse-papiers est activé, vous pouvez copier une région sélectionnée dans le Presse-papiers en appuyant sur "*y.

Pour voir s'il est activé, o vim --version et cherchez +clipboard ou -clipboard. Par exemple, il n’est pas activé par défaut sur ma boîte 10.5.6:

% qui vim
/usr/bin/vim
% vim --version 
 VIM - Vi IMproved 7.2 (9 août 2008, compilé le 11 novembre 2008 à 17:20:43). -22 
 Compilé par [email protected]
Version normale sans interface graphique. Caractéristiques incluses (+) ou non (-):...
-serveur client -clipboard  + cmdline_compl + cmdline_hist + cmdline_info + comments 
...

S'il avait été compilé avec +clipboard, je pourrais utiliser le registre "* pour accéder au presse-papiers du système.

J'ai téléchargé le fichier 7.2 source et je l'ai compilé (aussi simple que tar xjf vim-7.2.tar.bz && cd vim72 && ./configure && make && Sudo make install), et le presse-papier a été activé:

% vim
/usr/local/bin/vim
% vim --version 
 VIM - Vi IMproved 7.2 (9 août 2008, compilé le 24 mars 2009 17:31:52). [email protected]
Version normale avec interface graphique GTK2. Caractéristiques incluses (+) ou non (-):...
 + serveur client + presse-papier  + cmdline_compl + cmdline_hist + cmdline_info + comments 
...

Cependant, même après la compilation, je ne pouvais pas copier dans le presse-papiers lors de l'exécution de vim dans Terminal.app, uniquement dans X11.app.

133
rampion

Vous pouvez sélectionner visuellement du texte et taper :w !pbcopy<CR>

Ou vous pouvez inclure les mappages de touches ci-dessous dans votre fichier ~/.vimrc. Ils coupent/copient le texte en mode visuel dans le presse-papier du système d'exploitation.

vmap <C-x> :!pbcopy<CR>  
vmap <C-c> :w !pbcopy<CR><CR> 

source: http://drydevelopment.com/blog/vim-pbcopy-on-os-x

92
user242065

double astérisque ("*) avant toute commande yank, les résultats sont transférés dans le tampon de copie. Cela fonctionne aussi pour Windows et Linux.

36
Paul Tomblin

Sur macos 10.8, vim est compilé avec -clipboard. Par conséquent, pour utiliser "*y, vous devez disposer de Recompile. Heureusement, brew install vim compilerait facilement une nouvelle version pour vous Et ce serait +clipboard.

26
nikola

Sélectionnez visuellement le texte et tapez:

ggVG
!tee >(pbcopy)

Que je trouve mieux que:

ggVG
:w !pbcopy

Comme il ne clignote pas, une invite: "Appuyez sur ENTRÉE ou tapez commande pour continuer"

17
James Scriven

Si vous utilisez MacPorts, vous pouvez mettre à niveau votre VIM pour inclure la prise en charge du presse-papiers via:

port installer vim + x + x11

Maintenant, vous utilisez le registre "+" pour transférer votre texte directement dans le presse-papier de votre Mac. Fonctionne comme un charme.

11
Matt Hughes

Dans mon cas il me suffisait de faire:

:set mouse=v

visitez la solution d'origine sur superuser.com

9
Telmo Dias

Si vous êtes sur MacOS X:

$ brew install vim
$ vim --version
VIM - Vi IMproved 7.4 [...]

Ensuite, ajoutez à votre fichier .vimrc:

set clipboard=unnamed

Maintenant, il vous suffit d’être dans vim et :%y pour que tout le contenu soit copié dans votre presse-papiers.

7
Jose Alban

Je viens d'essayer le

map <C-x> :!pbcopy<CR>
vmap <C-c> :w !pbcopy<CR><CR>

Cela a très bien fonctionné. 

4
user3133576

Si votre vim n'est pas compilé avec les presse-papiers, si vous souhaitez copier du texte sélectionné au lieu de lignes entières, vous ne souhaitez pas installer macvim ou autre interface graphique, la solution la plus simple consiste à ajouter cette ligne à votre fichier .vimrc:

map <C-c> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR>

Pour l'utiliser, sélectionnez simplement le texte que vous souhaitez copier, puis Contrôle-C. Si vous voulez une explication complète de cette ligne, lire ici

4
songz

Utilisez Homebrew's vim: brew install vim

Mac (à partir de 10.10.3 Yosemite) est livré pré-installé avec un vim système qui ne pas a le drapeau clipboard activé.

Vous pouvez soit compiler vim et activer ce drapeau, soit simplement utiliser le vim de Homebrew correctement configuré.

Pour voir cela par vous-même, consultez le système de stock vim avec /usr/bin/vim --version

Vous verrez quelque chose comme:

$ /usr/bin/vim --version

VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Nov  5 2014 21:00:28)
Compiled by [email protected]
Normal version without GUI.  Features included (+) or not (-):
... -clientserver -clipboard +cmdline_compl ...

Notez le -clipboard

Avec vim de homebrew vous obtenez plutôt

$ /usr/local/bin/vim --version

VIM - Vi IMproved 7.4 (2013 Aug 10, compiled May 10 2015 14:04:42)
MacOS X (unix) version
Included patches: 1-712
Compiled by Homebrew
Huge version without GUI.  Features included (+) or not (-):
... +clipboard ...

Notez le +clipboard

4
Evan

si vous avez l'option + presse-papiers sur votre installation VIM (vous pouvez vérifier avec: version) et que vous êtes en mode visuel, vous pouvez faire "+ y Ceci ramènera la sélection au tampon + c'est le presse-papier.

J'ai ajouté les cartes suivantes à mon vimrc et cela fonctionne bien. 

vmap y "+ y Avec cela, je peux faire clé de direction suivre par y pour copier dans le presse-papiers en mode visuel

nmap p "+ p Avec cela je peux faire clé de direction suivre par p pour coller du presse-papiers en mode normal. 

PD: Sur Ubuntu, j’ai dû installer vim-gtk pour obtenir l’option + du presse-papier.

2
Andrés Hazard

command-C? Cela fonctionne au moins pour le vim lancé depuis Terminal.app pour le texte sélectionné avec la souris.

2
mouviciel

Fakeclip implémente les tampons + et * s'ils ne sont pas supportés de manière native.

2
redacted

Mon problème principal était la version osx par défaut de VIM. L'installation via homebrew a ajouté +clipboard à la construction.

vérifier avec

vim --version

si elle indique -clipboard ou +clipboard

2
frbl

Vous pouvez utiliser MacVim lorsque vous êtes sur un Mac pour accéder facilement au Presse-papiers à l'aide des touches de système d'exploitation standard.

Il est également totalement compatible avec Vim normal, donc je n’ai même pas besoin d’un .vimrc séparé.

2
matpie

Ce qui a fonctionné pour moi dans mon .vimrc

set clipboard=unnamed
if has("unnamedplus") " X11 support
    set clipboard+=unnamedplus
endif
0
maged

Maj cmd c - Définir le mode de copie Glissez la souris, sélectionnez le texte, cmd c pour copier le texte sélectionné Cmd v à coller

0
user518066

sur mac quand quelque chose d’autre semble fonctionner - sélectionnez avec la souris, faites un clic droit et choisissez Copier. uff

0
tom

Pour Mac - Tenir la clé option suivie de ctrl V tout en sélectionnant le texte a fait l'affaire.

0
markroxor

Je suis actuellement sous OS X 10.9 et mes efforts pour compiler vim avec + xterm_clipboard ne m'ont apporté rien. Ma solution actuelle consiste donc à utiliser MacVim en mode terminal avec l'option set clipboard=unnamed dans mon fichier ~/.vimrc. Fonctionne parfaitement pour moi.

0

Je rencontre le même problème, après l'installation macvim ne fonctionne toujours pas, j'ai finalement trouvé un moyen de résoudre:

Essayez de désinstaller tout d'abord vim,

brew uninstall macvim

brew uninstall --force vim

et réinstallez macvim

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

Ensuite, vous pouvez utiliser "*y ou "+y, pas besoin de set clipboard=unnamed

0
Bruce

Pour les utilisateurs Ubuntu, le paquet que vous voulez récupérer pour utiliser le presse-papiers est vim-full. Les autres packages (vim-tiny, vim) n'incluent pas la fonctionnalité presse-papier.

0
plowman