Déplacer un volet tmux vers une autre session


44

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

Réponses:


69

Oui, c'est assez simple, utilisez la move-panecommande tmux. Pour plus d'informations, exécutez

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

Accédez au 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 me suis déplacé dans le volet avec le processus en cours, j'ai couru

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

et le volet contenant le processus a été déplacé vers la fenêtre 1 de la session 1.

Il est inséré sous forme de fractionnement, vous souhaiterez donc généralement exécuter la fenêtre de l'autre session en tant que fenêtre jetable.

Remarque: il semble que la fenêtre cible doive exister, sinon la move-panecommande émettra une erreur.

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


12
Il existe une procédure plus simple: marquez le volet avec <prefix>m, accédez à la fenêtre de destination avec <prefix>wet déplacez-le avec join-pane.
Dan Aloni

7

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

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

- vous avez besoin d'un " -t" avant le nom de la session (pas nécessairement un nombre), 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 .

PS Si vous tapez uniquement un session_namesans window_numbercomme 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 divisée).

PPS Si vous voulez juste déplacer votre fenêtre (et pas seulement votre volet), alors il y a une bonne réponse sur la façon de déplacer la fenêtre entre les clients tmux :

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

(alias: movew)

src-windowet dst-windowavoir le formulaire session:window.pane.


-1

J'ai deux sessions en cours, chacune dans leur propre iTerm. Tout ce que je devais faire pour déplacer le volet d'une session à une autre était

sélectionnez le volet

<leader>s <session>

<session>est un nombre entre crochets

tmux 2.7


Cela ne déplace pas réellement le volet d'une session à une autre. Cela modifie simplement la session que vous visualisez à partir du terminal actuel. Cela revient à se déconnecter et à se connecter à l'autre session. Je veux réellement pouvoir déplacer les volets entre les sessions avec plusieurs autres volets ouverts.
HEGX64
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.