copier (dans le presse-papiers X) le raccourci dans .tmux.conf

22

Pour copier du texte dans le presse-papiers X dans tmux, ce que je fais actuellement est:

  • passer en mode sélection avec prefix[
  • commencer la sélection avec space(en utilisant mode-keys vibtw)
  • sélectionnez le texte et appuyez sur enter
  • copier le tampon tmux dans le presse-papiers X en utilisant prefixctrl+c

(J'ai un mappage comme bind C-c run "tmux show-buffer | xclip -selection clipboard -i"

J'essaie d'éliminer certaines de ces étapes en faisant un mappage pour le mode de sélection. J'ai essayé:

bind-key -t vi-copy C-c run "tmux show-buffer | xclip -selection clipboard -i"

ce qui me donne et erreur:

.. usage: bind-key [-cnr] [-t key-table] key command [arguments]

(Je n'ai pas pu copier l'erreur)

Comment puis-je réparer cela?

EDIT: J'ai réalisé que je peux sélectionner et copier dans le tampon tmux (3 premières étapes) en utilisant la souris comme une sélection régulière (bien que la mise en évidence ne dure pas, il sélectionne toujours le texte), puis utiliser la liaison suivante pour copier dans le presse-papiers x :

bind-key -n C-c run "tmux show-buffer | xclip -selection clipboard -i"

(J'ai utilisé cette méthode pour copier ce texte et c'était facile;)

notez que -ndénote "pas de préfixe" donc aucun échappement n'est nécessaire. si vous n'êtes pas dérouté par la surbrillance de disparition, cela est analogue à la copie régulière (interface utilisateur commune).

c'est le meilleur que j'ai trouvé jusqu'à présent ..

EDIT2: s'est avéré des ctrl+cchevauchements avec une chose d'interruption de processus, j'ai donc changé ctrl+alt+cpour maintenant. (n'a pas vraiment aimé)

EDIT3: tmux 1.8 ou plus de support supplémentaire pour ajouter des raccourcis clavier en mode copie alors maintenant ma première intention d'origine est possible en utilisant quelque chose comme:

bind-key -tvi-copy y copy-pipe "xclip -selection clipboard -i"
bind-key -tvi-copy enter copy-pipe "xclip -selection clipboard -i"

Ces deux reliures permettent de copier du texte dans le presse-papiers lorsque j'ai utilisé enterou yde terminer la copie.

Je garde toujours cette ligne au cas où je ferais la copie avec la souris et déciderais de récupérer le contenu du tampon tmux dans le presse-papiers plus tard:

bind-key y run "tmux show-buffer | xclip -selection clipboard -i"
aucun
la source
1
Vous pouvez changer l'interruption de ctrl-c en quelque chose d'autre en utilisant stty. Par exemple, utiliser Ctrl-Z: stty intr=^Z. Soyez prudent avec cette commande, il est possible de définir un caractère régulier comme caractère d'interruption (si vous le faites, utilisez ctrl-v pour le saisir jusqu'à la fixation du paramètre). Et ne vous trompez pas sur la clé utilisée (par exemple, ctrl-z est normalement la clé de suspension).
ash
@ash a noté, merci .. mais je pense que je garderai ^cla touche d'interruption car je l'utilise plus souvent que la copie. J'ai également mis à jour la réponse pour refléter ma solution actuelle à ce problème.
aucun
ça m'a l'air bien. Notez également que de nombreuses exécutions de xmodmap peuvent mettre les choses dans un état drôle qui est difficile à corriger, donc je recommande de recommencer avec une nouvelle session X si l'effet des commandes semble incorrect.
ash
courir en bind-key -t vi-copy C-c run "tmux show-buffer | xclip -selection clipboard -i"direct donne:Unknown command: run
Alexej Magura
1
Cependant, la course bind-key C-c run "tmux show-buffer | xclip -selection clipboard -i"fonctionne très bien.
Alexej Magura

Réponses:

13

Cette réponse ne répond pas directement à votre question sur la création d'un raccourci. Mais voici ce que je fais.

Vous pouvez suspendre temporairement la transmission de vos événements clés / souris à tmux en maintenant la touche shift. Vous pouvez donc appuyer et maintenir les raccourcis Shift et utilisateur du terminal / X pour faire la copie. Dans mon cas avec Terminator, j'appuie sur shift, surligne avec la souris ce que je veux, copie avecCtrl+Shift+C

Et si vous avez des volets divisés, vous pouvez zoomer sur le volet actuel avec la touche de bascule de zoom Prefix + zet effectuer l'opération de copie. (testé sur tmux v1.8)

Muneeb
la source
Je n'ai pas pu l'utiliser à cause des divisions horizontales, mais l'astuce de zoom sonne bien, merci pour la pointe.
aucun
Cela fonctionne dans gnome-terminal, c'est sûr; mais s'applique-t-il à tous les émulateurs de terminaux? Probablement pas
jpaugh
Dans wsl-terminal, cela fonctionne. Save my day!
Qinsi