Comment cachez-vous un volet tmux?


60

J'ai 3 volets dans ma fenêtre tmux:

--------------------------
|             |      2   |
|             |          |
|        1    |----------|
|             |      3   |
|             |          |
--------------------------

Les volets 1 et 2 ont vim. Le volet 3 gère une cli que je développe. Parfois, je veux comparer les volets 1 et 2, alors je veux masquer le volet 3:

--------------------------
|             |          |
|             |          |
|        1    |       2  |
|             |          |
|             |          |
--------------------------

puis ramenez le volet 3 à nouveau. Je ne veux pas tuer le volet 3, car j'ai installé certaines choses là-bas et je ne veux pas les réinstaller.

  • Y at-il quelque chose de similaire à PREFIX + zce qui peut zoomer sur la sous-fenêtre 2 mais sans toucher à la sous-fenêtre 1? Ou
  • Existe-t-il un moyen de masquer rapidement le volet 3 et de le ramener en cas de besoin?

Réponses:


71

Utilisez les commandes break-paneet join-pane. Reportez-vous à man tmuxpour plus de détails, les options et l'utilisation.


Masquer le volet 3:

Sélectionnez volet 3et entrez Prefix- :break-pane -dP.

tmuxenverra le volet 3dans une fenêtre en arrière-plan (le -ddrapeau) et imprimera des informations à ce sujet dans le volet 2 (le -Pdrapeau). Par défaut, vous verrez quelque chose comme 1:2.0(signification:) session:window.pane. Hit qpour continuer à travailler. 1

1 Avec un peu de pratique, vous pourrez laisser tomber l' -Pindicateur puisque vous pouvez prédire le session:window.panetriplet: par sessiondéfaut, la session en cours et par panedéfaut, 0while windowsera le prochain identificateur de fenêtre libre.

Récupérer le volet 3:

Pour obtenir volet 3et l'arrière de mise en page, sélectionnez volet 2et problème Prefix- :join-pane -vs 1:2.0dire tmuxau volet divisé 2verticalement ( -v) et rejoindre le volet ((source) -savec identifiant) 1:2.0. Vous pouvez éventuellement supprimer sessionl' paneidentifiant ou l' identifiant. Notez également que tmux stocke un historique en ligne de commande, facilement accessible avec Prefix- :- Up.

Vous aurez probablement besoin d'un peu de temps pour comprendre, mais une fois que vous le ferez, vous pourrez sûrement créer des raccourcis clavier personnalisés qui vous conviennent.


Cette question contient des informations utiles et des astuces qui pourraient améliorer votre flux de travail.


Des instructions claires! Cela fonctionne bien pour moi, bien mieux que ma réponse!
Bernhard

Par défaut, le volet 3 sera cassé dans la dernière fenêtre. Si vous avez déjà 3 fenêtres dans la session en cours, le volet devient Fenêtre 3 (supposons que la fenêtre commence à 0), de sorte que le 3 dans "Fenêtre 3" dépend de la les fenêtres ouvertes, comment puis-je faire ce travail dans les raccourcis clavier personnalisés?
CodyChan

5

Une idée: lancer tmux dans tmux.

Configuration originale:

Volet 1 et volet 2; cote à cote. Exécutez vim dans le volet 1 normalement.

Dans le volet 2, exécutez à nouveau tmux et créez deux panneaux (l'un au-dessus de l'autre cette fois). Ensuite, lancez vim dans le volet 2.1 et votre CLI dans le volet 2.2. Cela devrait vous permettre de passer au volet 2.1 plein écran avec votre deuxième instance de Vim, ce qui entraîne le comportement souhaité.


c'est ce que j'appelle penser sortir de la boîte!
user881300

Merci user881300. Il a quelques défauts (être capable d'envoyer des commandes a quelques bizarreries par exemple). J'espère pouvoir mettre à jour cette information en une réponse plus complète une fois que je l'aurai testée. J'ai besoin de fonctionnalités similaires.
BinaryBen

2
@ user881300 Techniquement, c'est une boîte dans la boîte à penser.
Mateen Ulhaq

3

Au lieu de masquer le volet 3, vous pouvez également tricher un peu et le rendre très petit, ce qui fonctionnera probablement également pour votre cas.

Lorsque le volet 2 est le volet actif, vous pouvez

PREFIX : resize-pane -D 40

Ensuite, pour le déplacer à nouveau, vous pouvez soit

PREFIX : resize-pane -D 28

où vous devrez remplacer 28 par un nombre décent, ou, au lieu de cela, vous pouvez essayer PREFIXEsc4, ce qui fait le redimensionnement automatique.


Je redimensionnais le volet set -g mouse-resize-pane onmais, à part le redimensionnement, avons-nous une autre option?
user881300

@ user881300 Je ne suis en aucun cas un tmuxexpert, mais je serais curieux de savoir si cela est possible.
Bernhard

1
CTRL+B, ALT+<arrow direction to resize>, que CTRL+B, ESC, 4(merci @ Bernard) pour le restaurer.
FelikZ

1

Je pose maintenant cette question depuis presque 5 ans, mais je viens de la trouver parce que je voulais faire quelque chose de similaire et je suis parvenue à créer les combinaisons de touches suivantes grâce à la réponse de user78291 :

bind-key ! break-pane -d -n _hidden_pane
bind-key @ join-pane -s $.1

De cette façon, je peux utiliser Prefix!pour masquer le volet actuel et Prefix@le ramener. La partie intéressante est que je peux masquer plusieurs volets de cette façon.

C’est loin d’être parfait, mais cela permet de cacher et de bien ramener les vitres.


0

Je sais que cela ne cache pas le volet sur lequel vous travaillez, mais j’essayais de le faire pour empêcher tmux d’envoyer des commandes communes à certaines fenêtres et d’arriver à une solution beaucoup plus simple.

Si vous ne voulez pas masquer visuellement le volet mais souhaitez simplement empêcher toute entrée dans le volet. Un scénario peut consister à envoyer une commande à 5 volets ouverts sans l'envoyer à 2 d'entre eux.

Dans ce cas d'utilisation, vous pouvez ctrl + scréer des volets sur lesquels vous ne souhaitez pas que les commandes ctrl + ssoient envoyées ( verrouille toutes les entrées dans le volet).

Une fois que vous avez terminé, appuyez sur ctrl + cpour revenir.

Remarque : N'appuyez pas ctrl + qaprès les commandes car toutes les commandes seront exécutées sur cet écran. ctrl + cne le fera pas (essayé ceci sur Ubuntu).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.