Comment copier des données entre différentes instances de vim?

34

Si j'utilise le premier vim pour copier une ligne (avec yy ), comment coller sur un vim d'un autre terminal (avec p )? Y at-il une commande ou des paramètres peuvent le faire? Puis-je copier et coller dans le presse-papiers du système global?

Je sais que les manières suivantes sont possibles, mais je veux une plus simple:

  1. Je ne veux pas quitter le premier vim et rouvrir le second vim.

  2. Je ne veux pas utiliser de fenêtre séparée (avec :sp ).

posée sam 06.09.2011 - 06:31
la source

7 réponses

43

Vous devez d’abord installer une version de vim compatible avec le presse-papiers. Pour accommoder les utilisateurs avec des environnements non graphiques (par exemple, les utilisateurs du serveur Ubuntu), vim et vim-tiny n'accèdent pas à cette fonctionnalité. Vous voulez installer GVim , qui peut être lancé graphiquement ou dans votre terminal. GVim remplacera la commande vim .

Vous pouvez insérer le texte dans le "tampon de coupe" du premier vim, puis coller le texte dans le second vim. Pour copier dans le tampon de coupe global, utilisez le registre + . La clé " vous permet de spécifier quel registre utiliser lors d'une opération de récupération ou de collage.

Dans la première vim, saisissez une ligne dans le registre + :

"+yy

alors, pour coller à partir du registre + dans le second vim:

"+p

Pour plus d'informations sur les registres disponibles, consultez :help registers . Vous pouvez également utiliser "+p pour coller du texte copié à partir de toute autre source sur votre système.

    
réponse donnée Jeremy Kerr 06.09.2011 - 07:15
la source
18

La meilleure solution qui a fonctionné pour moi (qui ne nécessite pas de changer mes habitudes de raccourci) est la suivante: lien

il suffit de mettre:

set clipboard=unnamedplus

dans votre .vimrc .

    
réponse donnée bhh1988 18.07.2012 - 05:47
la source
8

J'aime la solution de Bill et j'ai créé un mapping:

vmap <leader>y :w! /tmp/vitmp<CR>                                                                   
nmap <leader>p :r! cat /tmp/vitmp<CR>

le premier en mode visuel copie tout dans / tmp / vitmp et le second copie le contenu de / tmp / vitmp dans le fichier

    
réponse donnée Samir Sadek 06.05.2015 - 22:17
la source
4

Je me déplace entre différentes machines de la famille Unix et j'ai trouvé que la séquence suivante fonctionnait toujours pour moi:

Dans la session source vi:

  1. Utilisez ESC m a pour marquer la première ligne
  2. Utilisez ESC m b pour marquer la dernière ligne
  3. Utilisez :'a,'b w! xfer pour écrire une plage dans un fichier de travail

Session de destination:

  1. Déplacer le curseur sur la ligne d’insertion
  2. Utilisez ESC :r xfer pour lire le texte

Je sais que ce n'est pas joli mais ça marche toujours pour moi!

    
réponse donnée Bill 28.03.2013 - 14:32
la source
2

C'est en fait assez simple: installez une version de vim qui supporte le presse-papiers. Si votre vim ne le fait pas, obtenez l'un des éléments suivants:

sudo apt-get install vim-athena
sudo apt-get install vim-gnome
sudo apt-get install vim-gtk

Une fois installé, exécutez simplement vim . Vous pouvez également vérifier que le Presse-papiers est activé en exécutant:

 vim --version|grep clipboard

vous devriez voir +xterm_clipboard .

    
réponse donnée FuzzyAmi 26.02.2015 - 09:31
la source
1

Il n’utilise pas exactement yy, mais si vous sélectionnez le texte que vous souhaitez copier avec la souris (vous devrez parfois utiliser Shift- [glisser]), basculez vers l’autre fenêtre du terminal et faites un [clic central] ou Maj. - [clic du milieu] là-bas, le texte sera inséré à votre point d'insertion actuel.

Cela fonctionne pour la plupart des programmes de ligne de commande et d’interface graphique, pas seulement pour vim.

    
réponse donnée Sergey 06.09.2011 - 07:00
la source
0

Vous allez probablement tous détester cette réponse. J'ai travaillé dans vi dans les années 80 sur divers ordinateurs Unix et j'ai récemment eu l'occasion de jouer sous Linux.

Ma solution de copier-coller consiste à utiliser Putty sous Windows pour accéder à ma boîte Linux.

Putty vous permet de copier tout txt dans la fenêtre en le mettant simplement en surbrillance. vous pouvez alors aller dans une autre fenêtre / session Putty et cliquer avec le bouton droit pour coller.

ne pourrait pas être plus facile. et maintenant il y a vim. Dommage que ce ne soit pas de retour dans ma journée, cela m'aurait aidé à me défendre de la mafia emacs.

    
réponse donnée srtour2011 05.05.2017 - 18:24
la source

Lire d'autres questions sur les étiquettes