Tmux: Wie kann ich ein Fenster als Split-Fenster verlinken?

33

Wie kann ich ein Fenster aus einer völlig anderen tmux-Sitzung aufnehmen und es als horizontale / vertikale Aufteilung an das aktuelle Fenster anhängen?

pielgrzym
quelle

Antworten:

45

Klingt so, als würden Sie nach einem Join-Fenster suchen. Technisch gesehen möchten Sie für den zweiten Teil Ihrer Frage einen Bereich zum aktuellen Fenster hinzufügen, nicht zum vollständigen Fenster der anderen Sitzung, da dies mehrere Bereiche umfassen kann.

Hier ist ein Beispiel. Angenommen, Sie befinden sich in Sitzung 0, Fenster 4 und in Sitzung 2, in der Sie den Bereich 1 von Fenster 3 wünschen. In der tmux-Eingabeaufforderung ( ctrl+b :standardmäßig)

join-pane -s 2:3.1

Dies verschiebt Fenster 1 von Fenster 3, Sitzung 2 (-s ist das Quellfenster und nimmt das Format Sitzung: Fenster.Panel) in Ihre aktuelle Sitzung (Sitzung 0).

Unten finden Sie die vollständigen Dokumente für den Join-Bereich, die Sie auf der tmux-Manpage finden. Der verwirrendste Teil für mich beim Lesen der Dokumente war, das Format herauszufinden, das für die Angabe von Sitzungs-, Fenster- und Fensternummern im Quellbereich erwartet wurde (siehe session:window.paneobiges Beispiel). Sie können Ihre Sitzungen und Fenster auch benennen und diese Namen anstelle der Indexnummern verwenden.

 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
quelle
9
Kann ich einen Bereich kopieren, anstatt ihn zu verschieben?
Pielgrzym
@spielgrzym Ich würde gerne auch die Antwort darauf wissen. Bitte posten Sie es hier, wenn Sie es finden.
Bruno Bronosky
Ich denke, OP suchte eher nach einem Link-Fenster, das es leider nicht gibt. Offenbar kann das angeforderte Verhalten mit verschachteltem tmux Buchse nachgeahmt wird, wie es hier erklärt: superuser.com/a/323658
elig
16

Wenn Sie versuchen, Bereiche innerhalb derselben Sitzung zu verbinden, möchten Sie instinktiv "session:" aus dem Befehl auslassen. Dies wird fehlschlagen. Es scheint, dass die Schalter -s und -t für den Join-Bereich das Argument in Form von [session]: window [.pane] anstelle von [session:] window [.pane] akzeptieren.

Das heißt, die Sitzung ist optional und das: ist obligatorisch. Das ist doof. Dies entspricht Browsern, die http://google.com:/ als Verknüpfungsversion von http://google.com:80/ benötigen und http://google.com/ o_O einen Fehler melden

Da Strg-B! Teilt den aktuellen Bereich in ein separates Fenster auf (das Gegenteil von dem, was wir tun möchten), und Strg-B @ (das direkt daneben steht!) ist standardmäßig nicht gebunden (das heißt, Sie überschreiben nichts). Ich schlage vor, diese Verknüpfung zu erstellen ...

bind-key @ command-prompt -p "create pane from:"  "join-pane -s ':%%'"
Bruno Bronosky
quelle
Schöne Bindung da.
Nishant