Comment copier sur presse-papiers dans Vim?

est-il possible de copier sur presse-papiers directement à partir de Vim? yy ne copie que des trucs dans le tampon interne de Vim. Je veux copier sur le bloc-notes du système D'exploitation. Est-il une telle commande dans Vim ou vous ne pouvez copier des trucs dans Vim?

575
demandé sur Mateusz Piotrowski 2010-10-18 21:49:38

26 réponses

le registre * le fera. Dans Windows, + et * sont équivalents. Dans unix il y a une différence subtile entre + et * :

sous Windows, les registres * et + sont équivalentes. 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, j'utilise donc * parce qu'il fonctionne comme prévu pour dans deux environnements.

dans Linux distros, pour une raison quelconque, vous devez d'abord installer vim-gtk pour obtenir des fonctionnalités de presse-papiers.

et pour ceux qui ne savent pas comment utiliser les registres quand on tire ou met, il suffit d'écrire " puis le nom du registre. Pour copier quelque chose dans le presse-papiers, tapez "*y , puis "*p et

."
398
répondu Gabe Moothart 2018-03-01 12:09:33

on Mac OSX

  • copier la partie sélectionnée: sélectionner visuellement le texte (tapez v ou V en normal mode) et le type :w !pbcopy

  • copier le fichier entier :%w !pbcopy

  • coller le presse-papier :r !pbpaste

Sur plus Linux Destros, vous pouvez remplacer:

  • pbcopy ci-dessus avec xclip -i -sel c ou xsel -i -b
  • pbpaste utilisant xclip -o -sel -c ou xsel -o -b

    -- Note: dans le cas où aucun de ces outils ( xsel et xclip ) ne sont préinstallés sur votre distro, vous pouvez probablement les trouver dans les repos
261
répondu Brian 2016-06-10 00:56:45

Dans votre fichier vimrc vous pouvez spécifier pour utiliser automatiquement le presse-papiers pour copier et coller.

sous Windows:

set clipboard=unnamed

sous Linux set (vim 7.3.74+):

set clipboard=unnamedplus

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

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

122
répondu Gary Willoughby 2012-06-11 11:51:17

utilisez le registre "+ pour copier dans le bloc-notes système (i.e. "+y au lieu de y ).

de même, vous pouvez coller à partir de "+ pour obtenir du texte à partir du bloc-notes du système (i.e. "+p au lieu de p ).

113
répondu Amardeep AC9MF 2010-10-18 17:53:17

@Jacob Dalton a mentionné ceci dans un commentaire, mais personne ne semble avoir mentionné dans une réponse que vim doit être compilé avec le soutien de bloc-notes pour l'une des suggestions mentionnées ici à travailler. La mienne n'était pas configurée de cette façon sur Mac OS X par défaut et j'ai dû reconstruire vim. Utilisez cette commande pour savoir si vous avez ou pas vim --version | grep 'clipboard' . +clipboard signifie que vous êtes bon et les suggestions ici travailleront pour vous, tandis que -clipboard signifie que vous devez recompiler et reconstruire vim.

55
répondu gkb0986 2013-07-27 19:48:11

synthèse et de le rendre plus facile pour les débutants,

pour copier la ligne courante, en mode Commande type:

"*yy

pour copier l'ensemble du fichier / tampon, en mode commande, allez d'abord au début via gg , puis tapez

"*yG

comme il a été noté, cela signifie que +clipboard sur vim --version , qui indique la disponibilité d'un support de presse-papiers, -clipboard signifie N ° 151940920.

48
répondu ryenus 2015-09-14 13:01:40

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

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

mais si vous ajoutez cette ligne ensuite, il vous permettra tout simplement Ctrl + c pour obtenir tout ce que vous avez sélectionné dans votre bloc-notes.

vmap <C-c> "+y

discussion originale et plus de détails: Copie texte de vim avec jeu mouse=a activé

19
répondu jcarballo 2017-05-23 12:10:42

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 gui version de vim:

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

redémarrer le terminal pour prendre effet.





ajouter la ligne suivante dans ~/.vimrc

set clipboard=unnamed

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





Mise À Jour De La Méthode :

Je n'ai jamais été satisfait de la méthode du bloc-notes depuis des années. Le le plus gros inconvénient est qu'il va gâcher votre histoire de bloc-notes, même si vous utilisez x pour la suppression. Voici une solution meilleure et plus élégante.

  1. Copiez le texte [range] de vim dans le bloc-notes du système. (CONSEIL: Utilisez v ou V pour sélectionner la portée en premier, puis tapez les deux-points : pour activer la commande Ex):

    :[range]yank +

    par exemple,

    :5,10y * (copier/copier les lignes 5 à 10 pour le presse-papiers du système * register)

  2. coller le contenu du bloc-notes système dans vim sur une nouvelle ligne:

    :put +

17
répondu anonymous 2018-05-30 16:06:08

la solution pour moi était d'installer vim supplémentaire qui a l'option presse-papiers inclus:

sudo apt-get install vim-gnome
16
répondu alex 2014-10-22 17:34:37

si vous utilisez GVim, vous pouvez aussi set guioptions+=a . Cela déclenchera la copie automatique au 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 toute votre histoire de sélection...

14
répondu Benoit 2010-10-18 18:27:42

si votre vim est compilé sans l'option +xterm_clipboard comme C'est le cas par défaut dans Debian et je suppose Ubuntu, vous pouvez choisir un calumet ou un tampon complet vers un programme externe qui gère le presse-papier du bureau. Pour xclip (que vous pourriez avoir besoin d'installer auparavant), la commande sera :w !xclip -sel clip

10
répondu Hnatt 2014-05-22 11:57:00

Pour Ubuntu-Juillet 2018

utilisez le registre " + pour copier dans le bloc-notes système (i.e. "+y au lieu de y ).

de même vous pouvez coller de " + pour obtenir le texte du bloc-notes du système (i.e. "+p au lieu de p ).

vous devez aussi vous assurer tout paquets étrangers de dépendances vim du système)

  • $ sudo apt-get install vim-gnome
  • vérifiez à nouveau avec vim --version | grep .xterm_clipboard -o et vous pouvez confirmer que le presse-papiers est maintenant disponible (c.-à-d. +xterm_clipboard )

    bonne chance.

    6
    répondu arcseldon 2018-07-05 08:43:57

    vous pouvez trouver les réponses ici Arch Wiki

    Pour Linux: Tout d'abord, vous devez activer le Presse-papiers dans votre version vim en installant gvim .


    ensuite, vous devez mettre cette ligne sur votre fichier .vimrc .

    set clipboard=unnamedplus

    5
    répondu HOuadhour 2017-10-17 12:14:24

    peut-être que quelqu'un le trouvera utile. Je voulais rester indépendant de x clipboard, et être toujours capable de copier et coller du texte entre deux vims en cours d'exécution. Ce petit code enregistre le texte sélectionné dans temp.fichier txt pour copie. Placez le code ci-dessous dans votre .vimrc. Utilisez CTRL-c CTRL-v pour faire le travail.

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

    noremap: r !cat ~ / temp.txt

    4
    répondu user4897781 2015-05-13 23:23:08
    1. mettez set clipboard=unnamed dans votre vimrc .
    2. sélectionnez ce que vous voulez copier en mode Visual (appuyez sur v pour entrer).
    3. retour au mode Normal (appuyez sur escape[esc]), appuyez sur y pour copier.
    4. si vous voulez coller quelque chose du presse-papiers D'OS, appuyez sur p/P en mode Vim Normal .
    4
    répondu BigPa 2015-11-09 04:10:09

    si vous avez xclip un moyen facile de copier du texte dans le presse-papiers est le suivant:

    1. Copier le texte que vous souhaitez copier. ( "151900920 de la commande" à la vanille vim)
    2. Type :call system("xclip -selection clipboard", @")

    :call system() exécute une commande de terminal. Il faut deux arguments, le premier la commande, le second quoi Piper à cette commande. Par exemple :echom system("head -1", "Hello\nWorld") retourne Hello (avec un peu de rembourrage). echom renvoie le sortie d'une commande, pas d'appel.

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

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

    4
    répondu John AZ1 2018-08-04 04:42:31

    Dans vim sous ubuntu terminal seulement,

    appuyez sur shift + drag mouse pour sélectionner un texte dans vim puis ctrl + shift + c sur le terminal

    puis ctrl + v sur un autre éditeur

    3
    répondu Supawat Pusavanno 2016-08-27 05:48:46

    je suis un Vim newby, mais, à copier tout le texte presse-papiers du système (e.g si vous voulez le coller dans un traitement de texte ou un autre éditeur de texte comme gedit, tapis de souris etc...), en mode normal:

    ggVGy

    ou, plus simplement:

    : %y

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

    ensemble presse-papiers=unnamedplus

    dans mon .vimrc

    et tout fonctionne bien

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

    enfin, je suggère un programme de bloc-notes 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
    répondu Bertrando Goio 2018-01-12 23:45:01

    j'ai écrit une ligne simple dans mon .vimrc pour obtenir une copie de travail. Espérons que cela aide quelqu'un. Mon vim n'est pas installé avec Support De Presse-papiers, malheureusement, donc aucune de ces suggestions n'a fonctionné pour moi. Fondamentalement, coller 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 sur ce que cela fait, vous pouvez lire à ce sujet sur mon blog

    2
    répondu songz 2014-01-09 21:20:55

    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

    2
    répondu Arthur F 2015-08-23 18:43:53

    dans le cas où vous ne voulez pas utiliser une interface graphique pour vim et vous préférez simplement coller avec 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 oeil à la documentation du terminal que vous utilisez. J'ai été aux prises 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 de presser majuscules et sélectionner n'importe quel texte que vous voulez copier. C'est tout. Assez simple et pas besoin de jouer avec la configuration. (J'utilise urxvt par la voie).

    2
    répondu alagris 2016-01-24 20:51:45

    si vous vous connectez au système unix par putty, suivez les étapes ci-dessous pour copier le contenu d'un fichier

    • texte en surbrillance que vous voulez copier ( vous pourrez copier page par page)
    • appuyez sur ctrl+c (il copiera le texte au bloc-notes
    • coller dans n'importe quel éditeur externe Fait à
    1
    répondu Pratik 2016-02-18 05:28:25

    selecting avec l'aide des mouse et right-click copy travaillé dans mon cas.

    Je ne voulais pas que les numéros de ligne soient inclus donc je :set nonumber avant copying .

    1
    répondu Akash 2017-08-28 07:16:07

    j'ai eu un problème parce que mon vim ne supportait pas bloc-notes :

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

    j'ai installé vim-gnome (qui supporte le presse-papiers) et j'ai vérifié à nouveau:

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

    maintenant je suis capable de copier et Coller en utilisant "+y et " +p respectivement.

    1
    répondu Ashutosh Tripathy 2018-06-09 11:31:44

    rien de ce qui précède n'a fonctionné pour moi sur mon ordinateur portable windows.

    Ctrl + C a été très bien pour la copie.. mais j'avais besoin d' Shift + Insérer à la Pâte !

    (une bonne raison pour obtenir toujours un ordinateur portable où Insert peut toujours être accédé sans appuyer sur une touche secondaire)

    0
    répondu SherylHohman 2017-10-06 04:47:32

    pour OSX, comme le 10342 Réponses ci-dessus précisé, vous devez vous assurer que vim prend en charge la fonction de bloc-notes, dit Celui qui vient pré-expédié avec OSX ne supporte pas le bloc-notes, et que si vous exécutez brew install vim ça marcherait.

    sauf que l'exécution de vi vous fera toujours exécuter la version OSX pré-compilée, pas celle que vous avez installée à partir de brew.

    pour passer au-dessus de cela, j'ai simplement aliasé ma commande vim à la version brew, pas la OSX par défaut:

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

    et maintenant, je suis d'or

    0
    répondu abbood 2017-11-04 19:10:22