46 votes

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

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

Je sais que les méthodes suivantes sont possibles, mais je souhaite une méthode plus simple :

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

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

52voto

tags2k Points 11036

Vous devez d'abord installer une version de vim compatible avec le presse-papiers. Pour accommoder les utilisateurs qui n'ont pas d'environnement graphique (par exemple les utilisateurs d'Ubuntu Server), vim y vim-tiny n'ont pas de lien avec cette capacité. Vous devez installer GVim Install GVim qui peut être lancé graphiquement ou dans votre terminal. GVim remplacera l'outil vim commandement.

Vous pouvez extraire le texte du premier vim dans le "tampon de coupe", puis le coller dans le second vim. Pour copier dans le tampon de coupe global, utilisez la commande + registre. Le registre " permet de spécifier le registre à utiliser lors d'une opération d'extraction ou de collage.

Dans le premier vim, ajoutez une ligne dans le fichier + registre :

"+yy

puis, pour coller à partir du + dans le deuxième vim :

"+p

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

23voto

bhh1988 Points 331

La meilleure solution qui a fonctionné pour moi (et qui ne m'oblige pas à changer mes habitudes en matière de raccourcis clavier) est la suivante : https://stackoverflow.com/questions/9166328/how-to-copy-selected-lines-to-clipboard-in-vim

juste pour dire :

set clipboard=unnamedplus

dans votre .vimrc .

16voto

Samir Sadek Points 258

J'aime la solution de Bill, et j'ai créé une cartographie :

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 la seconde copie le contenu de /tmp/vitmp dans le fichier

8voto

Bill Points 81

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

Dans la session source vi :

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

Dans la session de destination :

  1. Déplacer le curseur sur la ligne d'insertion
  2. Utilice ESC :r xfer lire dans le texte

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

4voto

FuzzyAmi Points 141

En fait, c'est assez simple : installez une version de vim qui prend en charge le presse-papiers. vim Si ce n'est pas le cas, obtenez l'une des réponses suivantes :

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

Une fois installé, il suffit de lancer vim . Vous pouvez également vérifier que le presse-papiers est activé en lançant le programme :

 vim --version|grep clipboard

vous devriez voir +xterm_clipboard .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X