Vim: copie la sélection dans le presse-papiers OS X

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

(Indice: le presse-papiers OS X peut être écrit via pipe dans /usr/bin/pbcopy )

Selon la version de vim que j’utilise, je peux utiliser le registre + pour accéder au presse-papier.

http://vim.wikia.com/wiki/Mac_OS_X_clipboard_sharing peut avoir des idées qui vous conviennent également.

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 maintenant avec le presse-papier. Pas besoin de les préfixer avec "* ou "+ .

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 si elle est activée, oa vim –version et recherchez +clipboard+clipboard ou le -clipboard . Par exemple, il n’est pas activé par défaut sur ma boîte 10.5.6:

  % vim
 / usr / bin / vim
 % vim --version
 VIM - Vi IMproved 7.2 (9 août 2008, compilé le 11 novembre 2008 17:20:43)
 Patchs inclus: 1-22
 Compilé par _www@b77.apple.com
 Version normale sans interface graphique.  Caractéristiques incluses (+) ou non (-):
 ...
 -clientserver -clipboard + cmdline_compl + cmdline_hist + cmdline_info + commentaires
 ...

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

J’ai téléchargé la source 7.2 et l’ai compilée (facile comme tar xjf vim-7.2.tar.bz && cd vim72 && ./configure && make && sudo make install ), et le presse-papiers était 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)
 Compilé par rampion@Myrrhy.local
 Version normale avec interface graphique GTK2.  Caractéristiques incluses (+) ou non (-):
 ...
 + clienterver + presse-papiers + cmdline_compl + cmdline_hist + cmdline_info + commentaires
 ...

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.

Vous pouvez sélectionner visuellement le texte et taper :w !pbcopy

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

 vmap  :!pbcopy vmap  :w !pbcopy 

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

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

Sur macos 10.8, vim est compilé avec -clipboard pour utiliser "*y vous aurez besoin de recomstackr. Heureusement, brew install vim comstackra facilement une nouvelle version et ce sera +clipboard .

Sélectionnez visuellement le texte et tapez:

 ggVG !tee >(pbcopy) 

Ce que je trouve plus agréable que:

 ggVG :w !pbcopy 

Comme il ne clignote pas une invite: “Appuyez sur ENTRÉE ou tapez la commande pour continuer”

Si vous utilisez MacPorts, vous pouvez mettre à niveau votre VIM pour inclure le support de presse-papiers via:

port install vim + x + x11

Maintenant, vous utilisez le “+ enregistrer pour bricoler votre texte directement sur votre presse-papiers Mac. Fonctionne comme un charme.

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 de faire :%y , pour que tout le contenu soit copié dans votre presse-papiers.

Dans mon cas, je devais juste faire:

 :set mouse=v 

s’il vous plaît visitez la solution d’origine sur superuser.com

Si votre vim n’est pas compilé avec des presse-papiers, vous souhaitez copier le texte sélectionné au lieu de lignes entières, vous ne voulez pas installer macvim ou une autre interface graphique, la solution la plus simple consiste à append cette ligne à votre .vimrc:

 map  y:e ~/clipsongzboardP:w !pbcopy:bdelete! 

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

Je viens d’essayer le

 map  :!pbcopy vmap  :w !pbcopy 

Cela a très bien fonctionné.

Utilisez le vim de Homebrew : brew install vim

Mac (à partir de 10.10.3 Yosemite) est livré pré-installé avec un vim système pour lequel le drapeau clipboardclipboard n’est pas activé.

Vous pouvez soit comstackr vim pour vous-même et activer cet indicateur, ou simplement utiliser vim de Homebrew qui est configuré correctement.

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

Vous verrez quelque chose comme:

 $ /usr/bin/vim --version VIM - Vi IMproved 7.3 (2010 Aug 15, comstackd Nov 5 2014 21:00:28) Comstackd by root@apple.com Normal version without GUI. Features included (+) or not (-): ... -clientserver -clipboard +cmdline_compl ... 

Notez le -clipboard

Avec homebrew’s vim vous obtenez à la place

 $ /usr/local/bin/vim --version VIM - Vi IMproved 7.4 (2013 Aug 10, comstackd May 10 2015 14:04:42) MacOS X (unix) version Included patches: 1-712 Comstackd by Homebrew Huge version without GUI. Features included (+) or not (-): ... +clipboard ... 

Notez le +clipboard

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

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

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

Fakeclip implémente les tampons + et * s’ils ne sont pas pris en charge en mode natif.

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

vérifier avec

 vim --version 

si on dit -clipboard ou +clipboard

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 le faire “+ y Cela va sélectionner la sélection dans le tampon + qui est le presse-papiers.

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

vmap y “+ y Avec ceci je peux faire suivre la touche leader par y pour copier dans le presse-papier en mode visuel

nmap p “+ p Avec cela, je peux faire suivre la touche leader par p pour coller depuis le presse-papier en mode normal.

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

Pour les utilisateurs d’Ubuntu, le package que vous souhaitez récupérer pour utiliser le Presse-papiers est vim-full. Les autres packages (vim-tiny, vim) n’incluent pas la fonction presse-papiers.

sur mac quand tout le rest semble fonctionner – sélectionnez avec la souris, faites un clic droit choisir la copie. uff

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

Je rencontre le même problème, après l’installation de macvim ne fonctionne toujours pas, enfin j’ai 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 , vous n’avez pas à set clipboard=unnamed

Qu’est-ce qui a fonctionné pour moi dans mon .vimrc

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

La copie dans le presse-papiers à l’aide du registre ‘+’ ou ‘*’ ne fonctionne pas?

Raison: Votre version particulière de vim a été compilée sans le support du presse-papier. Type vim –verion sur la console et vous verrez -xterm_clipboard . L’installation de vim avec des packages gui résout ce problème. Sur Ubuntu, vous pouvez le faire en tapant sur le shell:

sudo apt-get install vim-gui-common

Maintenant, à nouveau, vim –version sur la console. Très probablement, vous verriez + xterm_clipboard maintenant !!

Donc, maintenant vous pouvez copier n’importe quoi dans le presse-papiers en utilisant register + (comme “+ yy pour copier la ligne courante dans le presse-papiers)

Command-c fonctionne pour moi dans MacVim et dans le terminal.