Ich verbinde routinemäßig Fenster in tmux und möchte eine Bindung erstellen, die mich zum Beitritt des Fensters auffordert, während ich weiterhin die Fensternummern und -titel sehen kann. Mein erster Ansatz basierte auf einer der Antworten auf diese Frage :
bind-key < command-prompt -p "create pane from #(tmux list-windows|awk -vORS=' ' '/^[0-9]/{print $1 $2}'):" "join-pane -s ':%%'"
Aber tmux führt die Interpolation nicht mit anderen Befehlen wie "display-message" durch, und die Eingabeaufforderung selbst nimmt die Statuszeile ein, sodass ich die Fensternummern und -titel nicht sehen kann.
Mein zweiter Ansatz bestand darin, das Auswahlfenster zu nutzen, das eine interaktive Liste von Fenstern anzeigt:
bind <wähle-Fenster "Join-Bereich -hs %%"
Dies funktioniert meistens, nimmt aber das gesamte aktuelle Fenster ein, während ich wähle. Ich möchte etwas tun, wie es bufexplore in vim tut, wo das Fenster zuerst geteilt wird. Dann wird im neuen Bereich eine Eingabeaufforderung angezeigt, in der ich das Fenster auswähle, in das ich es ziehen möchte. Das Folgende scheint ziemlich nah an dem zu sein, was ich will, aber ich habe nur noch den Bereich, in dem die Eingabeaufforderung angezeigt wurde:
bind < split-window -h \; choose-window 'join-pane -hs %%'
Ich würde stattdessen das Fenster verschieben, aber soweit ich das beurteilen kann, können Sie ein Fenster nicht in ein Fenster verschieben (oder überhaupt ein Fenster verschieben, ohne sich anzuschließen), und Folgendes funktioniert nicht:
bind < split-window -h ; choose-window 'move-window -s %%'
Ich vermute, dass der Ansatz so etwas wie die folgende Abfolge von Operationen beinhaltet:
- Fenster teilen
- Auswahlfenster (Bereich)
- Join-Bereich
- Beenden Sie das vorherige Fenster (das die Eingabeaufforderung für das Auswahlfenster enthielt).
Aber wenn ich versuche, so etwas wie das Folgende zu tun:
split-window -h ; choose-window 'join-pane -hs %%' ; kill-pane -t.-1
Das getötete Fenster ist das, von dem ich angefangen habe, NICHT das, mit dem die Eingabeaufforderung angezeigt wurde. In der Tat scheint es keinen Unterschied zu machen, den Wert für das Kill-Fenster zu ändern oder zuerst ein Auswahlfenster auszugeben.
Vielleicht kann das nicht gemacht werden, vielleicht gibt es eine Möglichkeit, ein Fenster / 0-Fenster in ein neues Fenster zu verschieben, aber ich kann es nicht herausfinden. Vielleicht gibt es eine Kombination aus interaktiven Befehlen und Aufrufen von
run "tmux <command> etc etc %%"
Das wird es beheben, aber ich kann es nicht herausfinden. Ideen?
split-window -h ; choose-window 'join-pane -hs %%' ; break-pane -t.-1
Das aktuelle Fenster wird sofort um eins nach oben verschoben und ein neues Fenster hinter dem aktuellen Fenster erstellt, das das Vollbild-Auswahlfenster enthält Prompt. Bei der Auswahl funktioniert es identisch mit der ersten Methode, die ich oben besprochen habe.