web-dev-qa-db-fra.com

Déplacer un volet tmux vers une autre session

A court de faire cela , est-il possible de déplacer une commande en cours d'exécution dans un volet vers une autre session tmux?

36
HEGX64

Oui, c'est assez simple, utilisez la commande move-pane tmux. Pour plus d'informations courir

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

La partie délicate consiste simplement à savoir comment tmux référence les sessions, les fenêtres et les volets dans les commandes pour manipuler les volets, etc.

La première étape

Déplacez-vous dans le volet que vous souhaitez déplacer vers l'autre session

Deuxième étape

Obtenez le nom de la session cible en exécutant <prefix>s.

Sur mon système qui produit:

 (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).

Étape 3 - Exécuter la commande

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

Donc, sur mon système, je suis passé dans le volet avec le processus en cours, a couru

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

et le volet contenant le processus qu'il a déplacé est passé à la première fenêtre de la session 1.

Il est inséré en tant que scission, vous voudrez donc généralement exécuter la fenêtre sur l’autre session en tant que fenêtre jetable.

Remarque: il semble que la fenêtre cible doive exister, sinon la commande move-pane générera une erreur.

Pour plus d'informations sur le format de spécification des sessions, des fenêtres et des volets dans une commande tmux, reportez-vous à la section COMMANDS dans man tmux.

56
the_velour_fog

Je ne peux pas commenter, je vais donc la placer ici: pour tmux 2.1-3build1 ~ précisez la commande devrait être:

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

- vous avez besoin d'un "-t" avant le nom de session (pas nécessairement un numéro) et la fenêtre avec un numéro donné doit exister.

Tout le reste est comme décrit par the_velour_fog dans sa réponse .

P.S. Si vous ne tapez qu'un session_name sans window_number comme ceci:

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

votre volet sera alors déplacé dans la fenêtre actuelle de la session de destination (et cette fenêtre sera scindée).

P.P.S. Si vous souhaitez simplement déplacer votre fenêtre (et pas uniquement votre volet), il existe une bonne réponse sur la manière de déplacer la fenêtre entre les clients tmux :

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

(alias: movew)

src-window et dst-window ont la forme session:window.pane.

6
DIG mbl