Tmux: Comment puis-je lier une fenêtre en tant que fenêtre fractionnée?

33

Comment puis-je récupérer une fenêtre de session tmux totalement différente et l'attacher en tant que division horizontale / verticale à la fenêtre actuelle?

Pielgrzym
la source

Réponses:

45

On dirait que vous cherchez une fenêtre jointe. Techniquement, pour la deuxième partie de votre question, vous souhaitez associer un volet à la fenêtre actuelle, et non la fenêtre complète de l'autre session, car cela pourrait inclure plusieurs volets.

Voici un exemple. Supposons que vous souhaitiez ouvrir le volet 1 de la fenêtre 3 dans la session 0, la fenêtre 4 et la session 2, à l'invite de tmux ( ctrl+b :par défaut).

join-pane -s 2:3.1

Cela déplacera le volet 1 de la fenêtre 3, session 2 (-s est la fenêtre source et prend le format de session session: window.pane) vers votre session actuelle (session 0).

Vous trouverez ci-dessous la documentation complète de join-pane, que vous pouvez obtenir à partir de la page de manuel de tmux. La partie la plus déroutante pour moi de lire la documentation a été de déterminer le format attendu pour src-pane en spécifiant les numéros de session, de fenêtre et de volet ( session:window.paneselon l'exemple ci-dessus). Vous pouvez également nommer vos sessions et vos fenêtres et utiliser ces noms au lieu des numéros d'index.

 join-pane [-dhv] [-l size | -p percentage] [-s src-pane] [-t dst-pane]
   (alias: joinp)
   Like split-window, but instead of splitting dst-pane and 
   creating a new pane, split it and move src-pane into the 
   space.  This can be used to reverse break-pane.
mmrobins
la source
9
Puis-je copier un volet au lieu de le déplacer?
pielgrzym
@pielgrzym J'aimerais connaître la réponse à cette question aussi. Merci de l'afficher ici si vous le trouvez.
Bruno Bronosky
Je pense qu'OP cherchait quelque chose de plus semblable à un volet de liens, qui n'existe malheureusement pas. Apparemment, le comportement demandé peut être imité à l'aide d'une socket imbriquée tmux, comme expliqué ici: superuser.com/a/323658
elig
16

Si vous essayez de joindre des volets à partir de la même session, vous voudrez instinctivement omettre le "session:" de la commande. Cela va échouer. Il semble que les commutateurs -s et -t de join-pane acceptent l’argument sous la forme: [session]: window [.pane] au lieu de [session:] window [.pane].

C'est-à-dire que la session est optionnelle et que le: est obligatoire. C'est maladroit. Ce serait l'équivalent des navigateurs ayant besoin de http://google.com:/ comme version raccourcie de http://google.com:80/ et donnant une erreur à http://google.com/o_O .

Depuis ctrl-b! divise le volet actuel dans une fenêtre séparée (ce qui est opposé à ce que nous voulons faire), et ctrl-b @ (qui est juste à côté!) est non lié par défaut (ce qui signifie que vous n'écrasez rien). Je suggère de créer ce raccourci. ...

bind-key @ command-prompt -p "create pane from:"  "join-pane -s ':%%'"
Bruno Bronosky
la source
Belle liaison là-bas.
Nishant