J'utilise urxvt sur Arch Linux. Je peux sélectionner la sortie avec la souris pour copier/coller. Le problème se produit lorsque la sortie contient des tabulations. Toutes les tabulations sont sélectionnées et copiées sous forme d'espaces. Cela rend très difficile la préservation de la structure de certaines sorties lors de leur copie.
Existe-t-il un moyen de corriger ce comportement ?
EDIT :J'utilise zsh si cela a un effet sur le problème.
Réponse acceptée :
Je ne connais aucun terminal qui le fasse, et je dirai simplement pourquoi je pense qu'aucun terminal ne le fait :
tab
est l'un des nombreux caractères qui, une fois affiché, génère plusieurs caractères à l'écran ou déplace le curseur. CR (aller au début de la ligne), LF (bas), retour arrière (gauche) et toutes les séquences d'échappement qui déplacent le curseur ou modifient les attributs des caractères et/ou n'affichent rien…
urxvt n'obtient même pas exactement ce que l'application affiche. Lorsqu'une application envoie un LF (\n) au côté esclave du pseudo-terminal, vous remarquerez que, la plupart du temps, il ne se contente pas de déplacer le curseur vers le bas, comme le fait normalement LF, il le recule également jusqu'au début de la ligne. C'est parce que le pilote pty traduit le "\n" en "\r\n" avant de le rendre disponible pour la lecture depuis le maître côté du terminal par urxvt (vous pouvez utiliser stty pour modifier ce comportement).
Notez également que la sélection ne capturera pas les espaces de fin.
La sélection X sélectionne les caractères qui sont affichés, pas ceux qui ont été envoyés par l'application ou les applications pour générer cet affichage (considérez que tout caractère à une position donnée sur l'écran peut avoir été remplacé plusieurs fois par une ou plusieurs applications (s)).
Certains terminaux permettent cependant de capturer tous les caractères qu'ils reçoivent du côté maître du pseudo-terminal, et s'ils ne le font pas, vous pouvez utiliser "script" ou "écran" pour le faire à la place. Mais pour obtenir la sortie d'une application dans la sélection X, vous pouvez aussi simplement faire :
the-command | xsel