Copier-coller sous Linux
Le but de ce billet est d’expliquer comment copier-coller sous GNU/Linux pour les hackers, c.-à-d de favoriser le clavier.
Les trois presse-papiers
Il existe 3 presse-papiers sous X : le primaire, le secondaire et le clipboard.
Le presse-papiers primaire est alimenté par une sélection à la souris et son contenu est collé à la souris avec un clic sur le bouton du milieu ou au clavier avec Shift + Insert.
Le presse-papiers clipboard est alimenté par une sélection à la souris suivi de Ctrl + C et son contenu est collé au clavier avec Ctrl + V.
Le presse-papiers secondaire ne sert à rien.
Vim
Vim utilise une terminologie différente : yank y pour copier et put p pour coller.
De plus, vim n’utilise pas le clipboard mais des registres. 
Un registre peut être précisé avant la commande pour copier ou coller (s’il est omis, le registre unnamed " est utilisé).
- pour copier : "{register}y{motion}
- pour coller : "{register}p
2 registres spéciaux permettent d’interagir avec le presse-papier : + le presse-papier clipboard et * le presse-papier primaire
Pour copier-coller de Vim vers une autre application, j’utilise la configuration suivante :
set clipboard=unnamedplus
Cela permet de synchroniser automatiquement le registre " (unnamed) avec le registre +
(presse-papier clipboard).
Le shell
xsel est un outil en ligne de commande pour interagir avec les presse-papiers.
- xsel -i -pcopie l’entrée standard dans le presse-papier primaire
- xsel -i -bcopie l’entrée standard dans le presse-papier clipboard
- xsel -o -pcolle le presse-papier primaire
- xsel -o -bcolle le presse-papier clipboard
Remarque : xclip est une alternative à xsel.
Le terminal
La plupart des terminaux (par ex. gnome terminal) utilise Ctrl + Shift + C pour copier et Ctrl + Shift + V pour coller. En effet, le raccourci Ctrl + C est déjà utilisé par le shell pour terminer un processus.
Si vous utilisez urxvt, un plugin permet de copier/coller en utilisant le presse-papier clipboard avec Ctrl + C et Ctrl + V.
Les cas d’utilisation
- Firefox vers Vim
    - Primaire : sélection dans Firefox, "*pdans Vim (en mode normal).
- Clipboard : sélection et Ctrl + C dans Firefox, pdans Vim (en mode normal).
 
- Primaire : sélection dans Firefox, 
- Vim vers Firefox
    - Primaire : "*y{motion}dans Vim, clic milieu dans Firefox.
- Clipboard : y{motion}dans Vim, Ctrl + V dans Firefox.
 
- Primaire : 
- Firefox vers un terminal (pour coller une commande trouver sur le Net)
    - Primaire : sélection dans Firefox, Shift + Insert dans le terminal.
- Clipboard : sélection et Ctrl + C dans Firefox, Ctrl + Shift + V dans le terminal.
 
- Terminal vers Firefox (pour montrer un problème sur un forum)
    - Primaire : sélection dans le terminal, clic milieu dans Firefox car Firefox ne supporte pas Shift + Insert.
- Clipboard : sélection et Ctrl + Shift + C dans le terminal, Ctrl + V dans Firefox. (préféré pour éviter double clic sur le touchpad.
 
Un gestionnaire de presse-papiers
Il n’est pas possible nativement de mettre plusieurs choses dans le presse-papiers, à l’instar des registres de Vim. Heureusement, clipit, un fork de Parcellite, est un outil GTK pour faire des copier-coller multiples. On colle avec Ctrl + C et au moment de coller, on fait Ctrl + Alt + H pour choisir dans l’historique puis Ctrl + V.
Conclusion
J’utilise plus souvent le clipboard pour éviter le double clic que je ne trouve pas pratique sur le touchpad.