Sur les configurations mu Ubuntu 12.04, mes commandes de copie et de collage du presse-papiers tmux sont configurées comme suit:
set -g prefix M-a
unbind C-b
bind C-c run "tmux save-buffer - | xclip -i -sel clipboard"
bind C-v run "tmux set-buffer \"$(xclip -o -sel clipboard)\"; tmux paste-buffer"
Cela a très bien fonctionné pendant la plus longue période jusqu'à il y a environ un mois, lorsque je soupçonne qu'un changement de configuration ou un changement de package a été fait qui a cassé ce qui précède. Dans le terminal GNOME, le collage fonctionne toujours correctement avec prefix+ ctrl-vet ctrl-shift-v.
Cependant, la xclip
commande de copie ne fonctionne plus, peu importe ce que je fais, et j'ai essayé de supprimer la liaison de préfixe personnalisé ci-dessus, en utilisant -select
au lieu de -sel
, pas en utilisant clipboard
etc. t même avoir la solution de contournement du terminal GNOME ctrl-shift-cavec tmux prenant en charge le shell. Je passe en mode copie, sélectionne le texte avec space+ movement, et quand j'exécute prefix+ ctrl-cabsolument rien ne se passe. Avant cette rupture, tmux afficherait un message de confirmation dans la section de notification en bas.
Quelqu'un at-il des suggestions quant à la façon de déboguer cela? C'est un très gros coup de productivité. Je peux probablement utiliser l' astuce de contournement des fichiers temporaires pour l'instant , mais ce serait génial de savoir exactement ce qui est arrivé xclip
.
type xclip
?xsel -b
?xsel -i -b
semble faire l'affaire!xsel -b
etxclip -selection clipboard
ferais la même chose!Réponses:
L'
xsel
utilitaire est similaire àxclip
, mais implémenté un peu différemment. Normalement, je m'attendrais à ce qu'ils se comportent de la même manière, mais ils ne font pas exactement le même appel à la bibliothèque X, il est donc possible que dans certains cas,xsel
cela fonctionne mais pasxclip
, ou vice versa. Essayer:la source
L'ajout
-b
de la commanderun-shell
(ourun
) a résolu le problème. Avec-b
la commande shell est exécutée en arrière-plan.bind C-c run-shell -b "tmux save-buffer - | xclip -i -sel clipboard"
la source
Bien que je ne puisse plus le reproduire, voici la réponse technique de ce qui aurait pu arriver dans votre cas.
Tout d'abord, vous devez comprendre le fonctionnement du presse-papiers X11. Vous pouvez lire l'essai de jwz à ce sujet: http://www.jwz.org/doc/x-cut-and-paste.html
En bref, l'application qui contient le contenu du presse-papiers doit s'exécuter jusqu'à ce qu'une autre application en revendique la propriété. Ainsi, lorsque vous exécutez,
xclip -i <<< test
vous pouvez voir xclip s'exécuter en arrière-plan jusqu'à ce que vous fassiez une autre sélection:Maintenant, tout va bien, mais lorsque vous quittez ce shell, tous les processus appartenant à cette session sont tués par défaut en leur envoyant un signal HUP. Cela signifie que xclip sera tué et que vous ne pourrez plus accéder au contenu de votre presse-papiers.
Donc, la solution de contournement suggérée (au cas où vous n'avez pas xsel) est d'ignorer le signal HUP en utilisant la liaison suivante:
xsel
n'est pas affecté par ce problème car la première chose qu'il fait après le fork () est de se dissocier du terminal de contrôle afin qu'il ne reçoive pas le signal HUP lorsque son shell se termine (vous ne le verrez même pas dans le ps ci-dessus) sortie mais uniquement lorsque vous faites aps -e | grep xsel
).la source
Je rencontre un problème similaire et le fichier temporaire n'aidera pas dans ce cas particulier, je le crains. En effet, il
xclip
semble se comporter différemment lorsqu'il est généré par tmux que lorsqu'il est exécuté "interactivement" et attend qu'une autre application s'approprie la zone du presse-papiers. Essayez d'utiliserxclip -l 1
pour le faire quitter immédiatement (voir la page de manuel pour plus de détails).la source
bind C-y run-shell "tmux save-buffer - | xclip -l 1 -i"
.xclip
se passe lorsque vous essayez de copier le tampon. S'il reste accroché là en attendant quelque chose, est-ce que le tuer aide En outre, vous devez quitter le mode de sélection en appuyant sur Entrée (et donc en le stockant dans le tampon) avant d'essayer de copier le tampon dans le presse-papiers X.C'est une vieille question, mais je pense avoir la solution, tirée de la page Tmux du wiki Arch :
Votre commande devrait donc devenir:
la source
Ceci est une configuration de travail que j'utilise:
la source