Avec tmux sur OSX, comment puis-je clarifier plus gracieusement la commande + k?

20

Lorsque j'utilise le terminal dans OSX, j'utilise fréquemment + Kpour effacer l'écran et le tampon de défilement. C'est profondément dans la mémoire musculaire.

J'ai commencé à bricoler avec tmux, et un reproche est que + Kefface tout l'écran, les volets et tout. Ce que j'aimerais, c'est que cela n'affecte que le volet ciblé.

Puis-je en quelque sorte configurer ce comportement?

Nathan Long
la source

Réponses:

21

Configurer iTerm2 pour envoyer une commande claire

Préférences -> Clés -> + (ajouter un nouveau raccourci global)

  • Raccourci clavier: ⌘ + k
  • Action: envoyer du texte
  • valeur:

effacer \ n

Configurez également iTerm2 pour mapper efficacement ⌘ + k à ctrl + l

  • Raccourci clavier: ⌘ + k
  • Action: envoyer le code hexadécimal
  • valeur:

0x0c

De cette façon, vous ne verrez pas le texte clignoter et la commande clear ne polluera pas votre historique.

George Yacoub
la source
2
Solution simple et élégante. Merci mon ami.
Rafael
Belle solution! Vous avez rendu mon expérience tmux beaucoup plus agréable. Merci :)
Matt Darby
Juste un avertissement, cela fera clignoter le texte sur le terminal
Jay
1
C'est génial, mais cela repose sur la clearcommande et ne fonctionnera donc pas à l'intérieur de la console irb ou rails.
Robert
17

Vous pouvez utiliser prefix+ r, après le + K, pour redessiner la fenêtre tmux.

Si vous pouvez briser cette habitude, un ctrl+ normal lfonctionne normalement par volet.

sage
la source
3
ctrl + l n'est pas la même chose que cmd + k car vous pouvez toujours faire défiler vers le haut et voir l'ancien historique avec ctrl + l. Si vous suivez un journal par exemple, qui remplit rapidement votre défilement arrière cmd + k est inestimable car vous savez exactement quand vous vous êtes arrêté pour la dernière fois. ctrl + l ne le fera pas pour vous.
Bjorn
@BjornTipling ⌘ + K est une fonctionnalité de l'émulateur de terminal, et ne fonctionnera pas à l'intérieur de tmux ... cette liaison est conçue pour effacer la sortie statique, ce qui n'est pas le cas de tmux, et d'autres programmes comme vim / emacs / weechat / mutt, sont affichés.
sage
1
+1 pour avoir rompu avec l'habitude, je ne peux pas m'arrêter de le faire avant aujourd'hui. La meilleure chose est de taper à la clearplace, je suppose
zanona
3

Vous pouvez ajouter les lignes suivantes dans votre .tmux.conf:

# clear the current pane
bind -n C-k send-keys C-l \; clear-history

Rechargez ensuite votre configuration tmux. Vous pouvez maintenant utiliser votre clé de liaison +k(par exemple: Ctrl+ b, k) pour effacer le volet actuel.

Je ne connais pas la syntaxe pour OSX mais je suppose que vous pouvez facilement adapter la ligne.

xaa
la source
Je vois que cela C-lefface l'écran et clear-historyefface le tampon de défilement. Que fait la \;pièce?
Nathan Long
il fonctionne à la fois @NathanLong
Jay
3

bind -n C-k send-keys -R \; send-keys C-l \; clear-history

J'ai ça d' ici

Les accessoires pour lui. Cela fonctionne pour moi, tout comme Cmd+kpour l'émulateur de terminal, et fonctionne pour moi sur macOS 10.12.5 avec iTerm2.

Enrico Borba
la source
Fonctionne comme un charme, même lorsqu'une commande comme tail -f ...ou un serveur est en cours d'exécution!
Derek