Comment copier dans le presse-papiers dans Vim?


753

Est-il possible de copier dans le presse-papiers directement depuis Vim? yycopie uniquement les éléments dans le tampon interne de Vim. Je veux copier dans le presse-papiers du système d'exploitation. Existe-t-il une telle commande dans Vim ou vous ne pouvez que tirer des trucs dans Vim?


140
Veuillez consulter la réponse sous-votée qui clarifie un fait important: vous devez avoir compilé vim avec la fonction + presse-papiers pour que TOUTES les suggestions ci-dessous fonctionnent en premier lieu! Ce n'est PAS la valeur par défaut sur la plupart des systèmes.
Neil Traft

7
@NeilTraft, certaines réponses suggèrent un canalisation de vim vers des programmes externes, donc l'affirmation selon laquelle TOUTE réponse nécessite + un indicateur de presse-papiers est fausse. Je fais juste remarquer pour sauver les futurs lecteurs de la confusion.
Hnatt

2
Copie possible de Comment faire vim coller (et copier dans) le presse-papiers du système? (Remarque: l'autre question est plus récente, mais a de meilleures réponses à mon humble avis, c'est pourquoi j'ai marqué celle-ci comme dupe)
Martin Tournoij

5
Assurez-vous que vous l'avez fait sudo apt-get install vim-gnome avant d'appliquer ces commandes ci - dessous ou vous obtiendrez une erreur d'enregistrement incorrect!
Harnirvair Singh

7
@Harnirvair Pour de nombreux ensembles de lecteurs ici, vim-gnomeest probablement exagéré ou simplement indisponible dans leur système d'exploitation / distribution, alors que je soupçonne vim-gtket de préférence vim-gtk3est plus susceptible d'exister et de tirer moins de dépendances, tout en offrant une intégration du presse-papiers (au moins pour ceux qui sont encore sur X11; Je ne sais pas comment tout cela interagit avec Wayland).
underscore_d

Réponses:


497

Le *registre fera cela. Sous Windows, +et *sont équivalents. Sous Unix, il y a une différence subtile entre +et *:

Sous Windows, les registres * et + sont équivalents. Pour les systèmes X11, cependant, ils diffèrent. Pour les systèmes X11, * est la sélection et + est le tampon de coupe (comme le presse-papiers). http://vim.wikia.com/wiki/Accessing_the_system_clipboard

*est probablement ce que vous voulez la plupart du temps, donc je l'utilise *car il fonctionne comme je l'attends dans les deux environnements.

Dans les distributions Linux, vous devez d'abord installer vim-gtk(aka gvim) pour obtenir la fonctionnalité du presse-papiers. Cela est dû au fait que les vim non gtk sont généralement compilés sans le support de X11. C'est pour lui permettre de fonctionner sur des machines console uniquement (souvent des serveurs).

Et pour ceux qui ne savent pas comment utiliser les registres en tirant ou en mettant, vous écrivez simplement "le nom du registre. Donc, pour copier quelque chose dans le presse-papier, vous tapez "*yet puis vous mettez votre texte "*p(crédit: Kyle Mathews)


31
Ne fonctionne pas sur mac osx lion. Après avoir appuyé sur "puis *, cela fait le bruit que le mac fait quand vous ne pouvez pas faire quelque chose. Comment puis-je le faire sur mac?
Eddy

62
Vous devez également vous assurer que vim est compilé avec le support du presse-papiers. Le vim par défaut dans Ubuntu ne l'est pas. Essayez vim --version|grep .xterm_clipboard -oet si c'est le cas, -vous n'avez pas de support. Téléchargez une version différente selon ubuntuforums.org/showthread.php?t=1686955
Sparhawk

66
Si vous utilisez Linux, vous devez vous +inscrire. Par exemple, si vous voulez copier trois lignes dans le presse-papiers du système, utilisez des commandes comme v3j"+y, puis vous pouvez les coller dans une autre application plus un autre VIM. L'utilisation de *Register sous Linux peut uniquement copier et coller entre différentes applications VIM.
diabloneo

6
Sous Linux, le registre * ne fonctionne pas pour copier et coller en externe.
weberc2

11
weberc2 et diabloneo, le registre * est pour le presse-papiers de sélection, accessible à partir du clic du milieu, pas la pâte de menu ou ^ V
Jim Keener

354

Sur Mac OSX

  • copier la partie sélectionnée: sélectionner visuellement le texte (taper vou Ven mode normal) et taper:w !pbcopy

  • copier tout le fichier :%w !pbcopy

  • coller depuis le presse-papiers :r !pbpaste

Sur la plupart des Distros Linux , vous pouvez remplacer:

  • pbcopyci-dessus avec xclip -i -sel couxsel -i -b
  • pbpasteen utilisant xclip -o -sel -cou xsel -o -b
    - Remarque: Si aucun de ces outils ( xselet xclip) n'est préinstallé sur votre distribution, vous pouvez probablement les trouver dans le référentiel

1
+1 Fonctionne avec Lion, bien que vim --versionmontre-clipboard
roplacebo

26
compatible avec vim fourni avec mavericks osx. ajouter à votre .vimrc vnoremap <C-c> :w !pbcopy<CR><CR> noremap <C-v> :r !pbpaste<CR><CR>Pour utiliser ce mappage, si vous souhaitez copier, mettez en surbrillance le texte en mode visuel et appuyez sur Ctrl-c pour copier. Pour coller à partir du presse-papiers du système, appuyez sur Ctrl-v.
davidtingsu

7
Sur Linux, cela fonctionne avec: w! Xclip -sel c ou: w! Xsel -b
trve.fa7ad

4
Pour la copie Linux Ctrl + C: dans ~ / .vimrc ajoutez:vnoremap <C-C> :w !xclip -i -sel c<CR><CR>
andy

3
Une réponse beaucoup plus utile que celle acceptée. Je vous remercie!
Bryce Johnson

165

Dans votre fichier vimrc, vous pouvez spécifier d'utiliser automatiquement le presse-papiers du système pour copier et coller.

Sous Windows:

set clipboard=unnamed

Sous Linux (vim 7.3.74+):

set clipboard=unnamedplus

REMARQUE: vous devrez peut-être utiliser une version à jour de Vim pour que cela fonctionne.

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


39
En complément de votre note, vous devrez peut-être également installer des packages supplémentaires pour que cela fonctionne. Si votre vim n'a pas la +xterm_clipboardfonctionnalité (visible lorsque vous exécutez vim --version). Ce fut le cas pour moi (exécutant Kubuntu 12.10). J'ai dû installer le vim-gui-commonpackage pour obtenir les fonctionnalités correctes.
Jacob Dalton

4
set clipboard=unnamedfonctionne sous Mac OS 10.11.6 (El Capitan) avec vim 7.4
Purplejacket

1. Copier sur glisser 2. sélectionner la souris, fonctionne dans Mac Sierra-10.12.6 et vim-version: 8.0.1800 en spécifiant les commandes suivantes dans le fichier ~ / .vimrc set mouse=vetset clipboard=unnamed
dkb

set clipboard=unnamedfonctionne sur MacOS Catalina
Diego Somar

Vous souhaiterez peut-être mettre à jour votre réponse. Il ne fonctionne pas sur Ubuntu 18.04 avec vim 8.0.
Luís de Sousa

124

Utilisez le registre "+pour copier dans le presse-papiers du système (c'est- "+yà- dire au lieu de y).

De même, vous pouvez coller depuis "+pour obtenir le texte du presse-papiers du système (c'est- "+pà- dire au lieu de p).


J'utilise "*, mais il semble qu'il n'y ait qu'une différence dans X.
dash-tom-bang

3
@ dash-tom-bang: la différence +/ *est SELECTIONvs les PRIMARYtampons de copie (ne me souviens pas quel est quel atm)
Daenyth

2
Ouais, l'étoile est la sélection, plus le presse-papiers.
dash-tom-bang

6
Le caractère guillemet double sert de sélecteur de registre dans vi et vim.
Amardeep AC9MF

1
Deux ensembles de raccourcis à retenir: "+yy(copier la ligne dans le presse-papiers) et "+yy(copier la ligne dans la sélection); "+p(coller depuis le presse-papiers) et "*p(coller depuis la sélection). "est de sélectionner le registre qui est le propre registre interne de vim par défaut (la manière yyet pfonctionnerait sans référencer aucun type de registre). PS: je me demande s'il y a un personnage pour le propre registre interne de Vim, quelque chose comme "&yyqui se tourne yypar défaut.

72

@Jacob Dalton l'a mentionné dans un commentaire, mais personne ne semble avoir mentionné dans une réponse que vim doit être compilé avec le support du presse-papiers pour que l'une des suggestions mentionnées ici fonctionne. Le mien n'était pas configuré de cette façon sur Mac OS X par défaut et j'ai dû reconstruire vim. Utilisez cette commande pour savoir si vous l'avez ou non vim --version | grep 'clipboard'. +clipboardsignifie que vous êtes bon et que les suggestions ici fonctionneront pour vous, alors -clipboardque vous devez recompiler et reconstruire vim.


15
Ou, au lieu de vous compiler, vous pouvez installer un package vim qui a déjà été construit avec le support du presse-papiers. Sur OS X, Homebrew a ceci: brew install vim. Sur Ubuntu, vous pouvez utiliser sudo apt-get install vim-gnome. Sur d'autres distributions Linux (non GNOME), vous pouvez plutôt installer vim-gtkou vim-athena.
Neil Traft

3
Merci, dans Arch Linux, j'ai dû supprimer vimet installer gvim wiki.archlinux.org/index.php/Vim#Installation
michalzuber

Vos réponses expliquent pourquoi le coup sec ne fonctionne pas avec le presse-papiers, avec vos informations seules, je pourrais faire une meilleure recherche Google et le faire fonctionner facilement. Et maintenant ça marche. Il serait préférable d'inclure également le commentaire @NeilTraft dans votre réponse afin que les utilisateurs n'aient pas besoin de faire de recherche Google.
Yana Agun Siswanto

Sur Mac, juste après brew install vimavoir ajouté set clipboard=unnamedà .vimrc. Exécuter source ~/.vimrcen ligne de commande. Dans .bash_profile, j'ai ajouté alias vim="/usr/local/bin/vim"puis exécuté source ~/.bash_profile. Maintenant dans vim il suffit d'utiliser yet pde copier / coller
Dmitry

59

Résumer et le rendre plus facile pour les débutants,

Pour copier la ligne actuelle, en mode commande, tapez:

"*yy

Pour copier tout le fichier / tampon, en mode commande, allez d'abord au début via gg, puis tapez

"*yG

Comme indiqué, cela nécessite +clipboard de vim --version, ce qui indique la disponibilité du support presse-papiers, -clipboardsignifie non.


1
"*5yydit 5 lines yankedmais rien dans le presse-papiers? os / x.
javadba

2
Oui, j'avais vérifié + presse
javadba

nnoremap <leader>c "* en .vimrcfonctionne très bien comme une "copie" en quelque sorte, suivie d'un mouvement pour saisir l'objet texte que vous souhaitez copier dans le presse-papiers de votre système d'exploitation.
cpk

Merci, vous l'avez expliqué exactement comme j'en avais besoin.
Symen Timmermans

3
J'ai installé vim-gtkpour -clipboarddevenir +clipboard, que "+yyfonctionne.
Lai32290

30

Si vous utilisez vim dans MAC OSX, malheureusement, il est livré avec une version plus ancienne et non conforme aux options du presse-papiers. Heureusement, les homebrews peuvent facilement résoudre ce problème.

installez vim:

brew install vim

installez gui verion de vim:

brew install macvim

redémarrez le terminal pour prendre effet.


ajoutez la ligne suivante à ~ / .vimrc
set clipboard=unnamed

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



Méthode mise à jour :

Je n'ai jamais été satisfait de la méthode de sélection du presse-papiers pendant des années. Le plus gros inconvénient est qu'il gâchera votre historique du presse-papiers, même lorsque vous l'utiliserez xpour la suppression. Voici une solution meilleure et plus élégante.

  1. Copiez le texte [plage] de vim dans le presse-papiers du système. (Astuce: utilisez vou Vpour sélectionner la plage en premier, puis tapez les deux points :pour activer la commande Ex):
    :[line-range]yank +
    par exemple,
    :5,10y * (copiez / tirez les lignes 5-10 dans le *registre du presse-papiers du système )

  2. Collez le contenu du presse-papiers du système dans vim sur une nouvelle ligne:
    :put +

Remarque:

  1. Si vous sélectionnez une plage de mots, ce qui précède ne fonctionnera pas. utilisez "* y ou " + y pour enregistrer ce bloc visuel dans le presse-papiers. Cependant, c'est difficile à taper, je pense toujours à des alternatives.
  2. : aide "* ou : aide * + pour plus d'informations
  3. brew info vimpourra voir d'autres options pour installer vim. Actuellement, il n'a pas d'autres options.

--with-override-system-vimdevrait être--with-override-system-vi
maffo

Je voudrais essayer ceci pour éviter d'installer beaucoup de choses Xorg sur des systèmes minimaux, mais il me manque quelque chose. J'obtiens "Pas une commande d'éditeur [plage] yank +" après avoir sélectionné en mode v puis appuyé sur ":".
jeremyjjbrown

29

Pour Ubuntu - juillet 2018

Utilisez le registre "+ pour copier dans le presse-papiers du système (c'est-à-dire " + y au lieu de y ).

De même, vous pouvez coller à partir de "+ pour obtenir le texte du presse-papiers du système (c'est-à-dire " + p au lieu de p ).

Vous devez également vous assurer que vim est compilé avec le support du presse-papiers. Essayer:

vim --version | grep .xterm_clipboard -o 

et si c'est -xterm_clipboard (un préfixe moins), alors vous ne le faites pas support.

Voici quelques instructions pour échanger avec une version de travail de vim qui prend en charge le presse-papiers.

  • $ sudo apt-get purge vim
  • $ sudo apt-get autoremove (supprime tous les paquets de dépendance vim superflus du système)
  • $ sudo apt-get install vim-gnome

Vérifiez à nouveau avec vim --version | grep .xterm_clipboard -oet vous pouvez confirmer que le presse-papiers est désormais disponible (par exemple + xterm_clipboard )

Bonne chance.


3
Tu as fait ma journée, ou peut-être mon mois. Après avoir travaillé avec vim sans presse-papiers sur Ubuntu pendant des années, c'est un sentiment incroyable. arcseldon, merci !!
evanrmurphy

Outre ce qui a été décrit ci-dessus, j'ai dû mettre set clipboard=unnamedplusmon .vimrcdossier pour que le coup sec fonctionne. J'utilise Ubuntu 18.04.
Elijah

23

Je n'ai pas pu copier sur le système de mon presse-papiers car j'avais ceci dans mon fichier ~ / .vimrc:

 if has('mouse')
   set mouse=a
 endif

Mais si vous ajoutez cette ligne ensuite, cela vous permettra simplement Ctrl+c d'obtenir tout ce que vous avez sélectionné dans votre presse-papiers.

vmap <C-c> "+y

Discussion originale et plus de détails: Copiez le texte de vim avec set mouse = a enabled


3
Je n'ai pas ajouté la ligne à mon .vimrc, mais le lien que vous avez fourni était très utile. Si vous maintenez la touche MAJ enfoncée tout en sélectionnant du texte dans vim, vous pouvez copier du texte sans passer en mode visuel. Alors merci et +1.
Stefan van den Akker

L'astuce de décalage était ce dont j'avais besoin. Fonctionne aussi bien avec des éditeurs comme terminator qui utilisent Ctrl + Shift + c pour copier dans l'invite, ce que j'ai essayé au début. J'ai fait installer -xterm_clipboard avec vim.
Anders Elmgren

18

la solution pour moi était d'installer un vim supplémentaire avec l'option presse-papiers incluse: 

sudo apt-get install vim-gnome

3
C'est ce que je devais faire pour Ubuntu 16.04. J'ai essayé les autres suggestions sans succès. C'était le plus simple et j'ai fait ce que j'attendais avec "+ y".
Steven Eckhoff

Cela fonctionne comme un charme sans aucun changement de vimrc! toujours valide dans Ubuntu 16.04
makerj

La "+ysuggestion n'a fonctionné qu'avec vim-gnome. Utilisation de Linux Mint 18.2.
Samaursa

14

Si vous utilisez GVim, vous pouvez également set guioptions+=a. Cela déclenchera une copie automatique dans le presse-papiers du texte que vous mettez en surbrillance en mode visuel.
Inconvénient: Notez que les gestionnaires de presse-papiers avancés (avec historique) obtiendront dans ce cas tout votre historique de sélection…


13

Vous pouvez trouver les réponses ici Arch Wiki

Pour Linux: Tout d'abord, vous devez activer Clipboard dans votre version vim en installant gvim.


Ensuite, vous devez mettre cette ligne dans votre .vimrcfichier.

set clipboard=unnamedplus


+1, a été surpris que cette étape soit désormais requise. Dans toutes mes installations précédentes d'Arch, je n'avais pas à le faire.
Konstantinos

travaillé pour Ubuntu 18.04 aussi et fonctionnant dans tmux. Merci!
James Klein

10

Si votre vim se trouve être compilé sans +xterm_clipboardoption comme c'est le cas par défaut dans Debian et je suppose Ubuntu, vous pouvez diriger la sélection ou tout le tampon vers un programme externe qui gère le presse-papiers du bureau. Pour xclip(que vous devrez peut-être installer précédemment), la commande sera:w !xclip -sel clip


1
Merci pour cela - cela n'a pas fonctionné pour moi sur Ubuntu (donc confirmer votre supposition Ubuntu est correct) depuis des lustres et je ne savais pas pourquoi. Maintenant je peux voir -xterm_clipboarddans les drapeaux montrés quand je vim --version.
jamesc

Cela m'a aidé à trouver une bonne source de support pour le presse-papiers: vimcasts.org/blog/2013/11/getting-vim-with-clipboard-support
jamesc

9

Dans vim sous le terminal ubuntu uniquement,

appuyez shift + drag mousepour sélectionner un texte dans vim puis ctrl + shift + csur le terminal

puis ctrl + vsur un autre éditeur


3
Cela fonctionne pour sélectionner uniquement ce qui est visuel dans vim, et si vous voulez sélectionner le fichier entier?
Gerep

@Gerep cette méthode ne fonctionne pas pour toute la sélection de fichiers. il est bon de sélectionner une section de texte sur le terminal vim uniquement et où le texte affiché sur l'écran du terminal.
Supawat Pusavanno

1
Cela copie les numéros de ligne, les bordures de tampon des séparations et tout ce qui est visible, au lieu du seul texte / code.
Zelphir Kaltstahl

9

Si vous avez xclip, un moyen simple de copier du texte dans le presse-papiers est le suivant:

  1. Copiez le texte que vous souhaitez copier. ( ycommande dans vanilla vim)
  2. Tapez :call system("xclip -selection clipboard", @")

:call system()exécute une commande de terminal. Il prend deux arguments, le premier la commande, le second quoi diriger vers cette commande. Par exemple, :echom system("head -1", "Hello\nWorld")renvoie Hello (avec un peu de remplissage). echom renvoie la sortie d'une commande, l'appel ne le fait pas.

xclip -selection clipboard copie simplement le texte dans le presse-papiers du système par opposition au presse-papiers X par défaut, (accessible par le bouton central de la moue).

@"renvoie le dernier texte retiré. "est le registre par défaut, mais vous pouvez utiliser n'importe quel registre. Pour voir le contenu de tous les registres, tapez :registers.


2
C'est plus robuste, cela fonctionne même lorsque vim n'est pas compatible avec le support du presse-papiers et sur n'importe quel OS. Par exemple, sur Mac, exécutez :call system("pbcopy",@"). On peut lier cette commande à une clé.
ilija139

cela fonctionne bien, mais puis-je le mettre dans mon vimrc, cela fonctionnera-t-il. Ça ne marche pas pour moi.
thenakulchawla

5

Cette réponse est spécifique aux utilisateurs MAC.

Le VIM par défaut disponible avec MAC ne vient pas avec l'option presse-papiers activée. Vous avez besoin de cette option pour accéder au presse-papiers du système.

Pour vérifier si votre vim a cette option activée, utilisez la commande ci-dessous

vim --version

En fin de compte, vous auriez dû +clipboard. Si c'est le cas -clipboard, votre VIM n'a PAS la possibilité d'accéder au presse-papiers du système.

Vous devez FAIRE et installer votre VIM avec l'option dont vous avez besoin. Voici les commandes.

# Create the directories you need
$ sudo mkdir -p /opt/local/bin
# Download, compile, and install the latest Vim
$ cd ~
$ git clone https://github.com/vim/vim.git
$ cd vim
$ ./configure --prefix=/opt/local
$ make
$ sudo make install
# Add the binary to your path, ahead of /usr/bin
$ echo 'PATH=/opt/local/bin:$PATH' >> ~/.bash_profile
# Reload bash_profile so the changes take effect in this window
$ source ~/.bash_profile"

Ce qui précède installera le dernier VIM avec l'option +clipboardactivée.

Vous devez maintenant définir le presse-papiers du système. Ajoutez la ligne suivante à~/.vimrc

set clipboard=unnamed

Vous pouvez maintenant tirer du texte dans le presse-papiers du système. Les étapes ci-dessous expliquent comment tirer.

  1. En mode de commande vim press v, cela vous fera passer en mode VISUAL.
  2. Déplacez le curseur pour sélectionner le texte ou les lignes à copier.
  3. Press y, cela copiera le texte sélectionné dans le presse-papiers.
  4. Accédez à n'importe quelle application externe et CMD + vcollez.

J'utilise MACBook Pro avec macOS Mojave et les éléments ci-dessus y sont intégrés.


4

Peut-être que quelqu'un le trouvera utile. Je voulais rester indépendant du presse-papiers X et pouvoir toujours copier et coller du texte entre deux vims en cours d'exécution. Ce petit code enregistre le texte sélectionné dans le fichier temp.txt pour la copie. Mettez le code ci-dessous dans votre .vimrc. Utilisez CTRL-c CTRL-v pour effectuer le travail.

vnoremap: w! cp / dev / null ~ / temp.txt && cat> ~ / temp.txt

noremap: r! cat ~ / temp.txt


4
  1. Mettez set clipboard=unnamedvotre vimrc.
  2. Sélectionnez ce que vous souhaitez copier en Visualmode (appuyez sur v pour entrer).
  3. Retour au Normalmode (Appuyez sur échap [esc]), appuyez sur y pour copier.
  4. Si vous souhaitez coller quelque chose du presse-papiers du système d'exploitation, appuyez sur p / P en Normalmode Vim .

4

Je suis un Vim newby mais, pour copier tout le texte dans le presse-papiers du système (par exemple si vous voulez le coller dans un traitement de texte ou un autre éditeur de texte comme gedit, mousepad etc ...), en mode normal:

ggVGy

ou, plus simplement:

:% y

Comme suggéré, j'ai également installé vim-gtk et mis

définir le presse-papiers = unlamedplus

dans mon .vimrc

et tout fonctionne bien

Si vous ne souhaitez copier qu'une partie du texte, utilisez le mode visuel (v) , sélectionnez le texte que vous souhaitez copier et appuyez sur y .

Enfin, je suggère un programme de presse-papiers comme Clipman (mon préféré), Clipit, Parcellite ou similaire.

(J'utilise vim 8.0 dans Debian Stretch Xfce)

Pardonnez-moi pour mon anglais! :-)


3

J'ai eu un problème car mon vim ne supportait pas le presse - papiers :

vim --version | grep clip
-clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      -mouseshape      +startuptime     -xterm_clipboard

J'ai installé vim-gnome (qui prend en charge le presse-papiers), puis vérifié à nouveau:

vim --version | grep clipboard
+clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      +mouseshape      +startuptime     +xterm_clipboard

Maintenant, je peux copier et coller en utilisant respectivement "+ y et" + p.


3

Cela fait des mois que je me bats avec MacOsX en utilisant des raccourcis clavier. Je sais que la question n'est pas d'utiliser des shorts de clavier. Mais cela pourrait aider quelqu'un avec le même souci.

J'ai trouvé que si vous décochez:

Affichage -> Autoriser les rapports de souris

depuis le menu Terminal, vous pourrez copier dans le presse-papiers en utilisant

command + c

encore.


2

J'ai écrit une ligne simple dans mon .vimrc pour faire fonctionner la copie. J'espère que cela aide quelqu'un. Mon vim n'est pas installé avec le support Clipboard, malheureusement, donc aucune de ces suggestions n'a fonctionné pour moi. En gros, collez cette ligne dans votre .vimrc:

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

Si vous souhaitez lire les détails de ce que cela fait, vous pouvez en lire plus sur mon blog


1
Méfiez-vous de l'acheteur. Sur mac, cela a des effets étranges.
azatar

cela ne semble rien copier dans le presse-papiers lors de l'utilisation comme indiqué (sous linux ubuntu 16.04, pas de prise en charge du presse-papiers), et si plusieurs fichiers sont ouverts dans une session vim, fermera l'onglet où les actions ont été prises (sélection visuelle et Cc ).
calocedrus

2

Pour certains claviers internationaux, vous devrez peut-être appuyer sur "+ Spacepour obtenir un" .

Donc, dans ce cas, vous devrez appuyer sur "Space+you"Space*y


2

Dans le cas où vous ne souhaitez pas utiliser d'interface graphique pour vim et que vous préférez simplement vous en tenir à l'émulateur de terminal, il peut y avoir une approche beaucoup plus simple à ce problème. Au lieu d'utiliser yank ou quelque chose comme ça, jetez d'abord un œil à la documentation du terminal que vous utilisez. J'ai eu du mal avec le même problème (essayer d'utiliser + presse-papiers et xclip et ainsi de suite) et à la fin, il s'est avéré que dans mon émulateur de terminal, il suffit d'appuyer sur Maj et de sélectionner le texte que vous souhaitez copier. C'est ça. Assez simple et pas besoin de jouer avec la configuration. (J'utilise urxvt d'ailleurs).


1

pour OSX, comme les réponses 10342 ci-dessus l'ont clairement indiqué, vous devez vous assurer que vim prend en charge la fonction de presse-papiers, a déclaré que celui qui est livré avec OSX ne prend pas en charge le presse-papiers, et que si vous l'exécutez, brew install vimcela fonctionnerait.

Sauf que l'exécution de vi vous fera toujours exécuter la version OSX pré-expédiée, pas celle que vous avez installée à partir de l'infusion.

pour surmonter cela, j'ai simplement aliasé ma commande vim en version brew, pas celle par défaut d'OSX:

alias vim="/usr/local/Cellar/vim/8.0.1100_1/bin/vim"

et maintenant je suis en or


1

Ma solution consistait à mettre la ligne suivante en .vimrc:

map <C-y> :w !xclip -sel c <CR><CR>

Le script copie la ligne sélectionnée (en mode visuel) ou le contenu du fichier (si aucun n'est sélectionné) dans le presse-papiers à l'aide de Ctrl + y. J'utilise Manjaro Linux si cela importe.


1

Je suis sur mac osx (10.15.3) et nouveau sur vim. J'ai trouvé cela tellement frustrant et toutes les réponses ici trop compliquées et / ou ne s'appliquent pas à ma situation. J'ai fini par faire fonctionner cela de 2 façons:

  1. mappage de clés qui utilise pbcopy : fonctionne sur l'ancienne version de vim fournie avec mac.

    Ajouter vmap '' :w !pbcopy<CR><CR>à votre ~ / .vimrc
    Vous pouvez maintenant sélectionner visuellement et frapper ''(deux apostrophes) pour copier dans le presse-papiers

  2. Installez une version plus récente de vim pour pouvoir accéder à la solution la plus recommandée dans les autres réponses:

    brew install vim
    alias vim=/usr/local/bin/vim(devrait l'ajouter à votre ~ / .bashrc ou équivalent)
    Vous pouvez maintenant sélectionner visuellement et cliquer "+yypour copier dans le presse-papiers


très belle solution!
ABD

0

selectingavec l'aide de la mouseet a right-click copytravaillé dans mon cas.

Je ne voulais pas que les numéros de ligne soient inclus, donc :set nonumberavant copying.


comment pouvez-vous faire cela dans nerdTree
ji-ruh

Cela n'a rien à voir avec vim et est exclusivement une copie basée sur un terminal dans le presse-papiers (X).
Carlo Wood

Je ne suis pas sûr @ ji-ruh
Akash

0

Rien ci-dessus n'a fonctionné pour moi sur mon ordinateur portable Windows.

Ctrl+ Cétait bien pour copier .. mais j'avais besoin Shift+ Insertde coller!

(Une bonne raison d'avoir toujours un ordinateur portable où l' Inserton peut toujours accéder sans appuyer sur une touche secondaire)


0

Shift+ Ctrl+ C si vous êtes en mode graphique de Linux, mais vous devez d'abord sélectionner ce que vous devez copier.

entrez la description de l'image ici

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.