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 -p copie l’entrée standard dans le presse-papier primaire
  • xsel -i -b copie l’entrée standard dans le presse-papier clipboard
  • xsel -o -p colle le presse-papier primaire
  • xsel -o -b colle 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, "*p dans Vim (en mode normal).
    • Clipboard : sélection et Ctrl + C dans Firefox, p dans Vim (en mode normal).
  • Vim vers Firefox
    • Primaire : "*y{motion} dans Vim, clic milieu dans Firefox.
    • Clipboard : y{motion} dans Vim, Ctrl + V dans Firefox.
  • 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.

Liens