Verschieben Sie einen TMUX-Bereich in eine andere Sitzung

43

Kurz Dadurch ist es möglich , einen laufenden Befehl in einem Fenster zu einer anderen tmux Sitzung zu bewegen?

HEGX64
quelle

Antworten:

68

Ja, es ist ziemlich einfach, benutze den move-panetmux Befehl. Weitere Infos laufen

man tmux | less -I '+/mOVE-pane'

Der knifflige Teil ist nur zu wissen, wie tmux Sitzungen, Fenster und Fensterbereiche in den Befehlen zum Bearbeiten von Fensterbereichen usw. referenziert.

Schritt eins

Wechseln Sie in den Bereich, in den Sie in die andere Sitzung wechseln möchten

Schritt zwei

Rufen Sie den Namen der Zielsitzung ab, indem Sie ausführen <prefix>s.

Auf meinem System, das erzeugt:

 (0) + 0: 8 windows (attached)  
 (1) + 1: 1 windows 
       ^
       |
    This is the session name. It could be different 
    on your system and it could be a word (not just a number).

Schritt 3 - Befehl ausführen

<prefix>:move-pane -t <session_name>:<window number>
                      ^^^^^^^^^^^^^^ the name from above goes in here

Also auf meinem System bin ich in den Bereich mit dem laufenden Prozess umgezogen, lief

<prefix>:move-pane -t 1:1

und der Bereich mit dem darin enthaltenen Prozess wurde in der Sitzung in das erste Fenster verschoben 1.

Es wird als Split eingefügt. Normalerweise möchten Sie window in der anderen Sitzung als Wegwerffenster ausführen.

Hinweis: Es scheint, dass das Zielfenster vorhanden sein muss, sonst gibt der move-paneBefehl einen Fehler aus.

Weitere Informationen zum Format für die Angabe von Sitzungen, Fenstern und Fenstern in einem tmux-Befehl finden Sie im Abschnitt COMMANDSin man tmux.

the_velour_fog
quelle
12
Es gibt eine einfachere Vorgehensweise: Markieren Sie den Bereich mit <prefix>m, gehen Sie mit zum Zielfenster <prefix>wund verschieben Sie den markierten Bereich mit dorthin join-pane.
Dan Aloni
7

Ich kann keinen Kommentar abgeben, also werde ich ihn hier platzieren: für tmux 2.1-3build1 ~ exact sollte der Befehl lauten:

<prefix>:move-pane -t session_name:window_number

- Sie benötigen einen " -t" vor dem Sitzungsnamen (nicht unbedingt eine Nummer), und das Fenster mit einer bestimmten Nummer muss vorhanden sein.

Der Rest ist wie von the_velour_fog in seiner Antwort beschrieben .

PS Wenn Sie nur ein session_nameohne window_numberwie so eingeben:

<prefix>:move-pane -t session_name:,

Dann wird Ihr Fenster in das aktuelle Fenster der Zielsitzung verschoben (und dieses Fenster wird geteilt).

PPS Wenn Sie nur Ihr Fenster (und nicht nur Ihren Bereich) verschieben möchten, finden Sie eine gute Antwort zum Verschieben von Fenstern zwischen tmux-Clients :

<prefix>:move-window [-d] [-s src-window] [-t dst-window]

(alias: movew)

wo src-windowund dst-windowhaben die form session:window.pane.

DIG mbl
quelle
-1

Ich habe zwei Sitzungen, jede in ihrem eigenen iTerm. Alles, was ich tun musste, um den Bereich von einer Sitzung in eine andere zu verschieben, war

Wähle den Bereich aus

<leader>s <session>

Wo <session>ist eine Zahl in eckigen Klammern

tmux 2.7

Shane Howearth
quelle
Dadurch wird der Bereich nicht von einer Sitzung in eine andere verschoben. Dadurch wird nur die Sitzung geändert, die Sie vom aktuellen Terminal aus anzeigen. Dies entspricht dem Trennen und Herstellen einer Verbindung mit der anderen Sitzung. Ich möchte in der Lage sein, Fenster zwischen Sitzungen zu verschieben, wenn mehrere andere Fenster geöffnet sind.
HEGX64,