62 votes

Déplacer un volet tmux vers une autre session

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

93voto

the_velour_fog Points 3314

Oui, c'est assez facile, utilisez le move-pane commande tmux. Pour plus d'informations, exécutez

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

La partie la plus délicate est de savoir comment tmux fait référence aux sessions, aux fenêtres et aux volets dans les commandes pour manipuler les volets, etc.

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, cela 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 exécuté

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

et le volet contenant le processus s'est déplacé vers la fenêtre 1 de la session. 1 .

Elle est insérée en tant que fractionnement, de sorte qu'il est généralement préférable d'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 fonction move-pane émettra une erreur.

Pour plus d'informations sur le format pour spécifier les sessions, les fenêtres et les volets dans une commande tmux, voir la section COMMANDS sur man tmux .

10voto

DIG mbl Points 285

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

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

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

Tout le reste est tel que décrit par le_brouillard_de_velours sur sa réponse .

P.S. Si vous tapez seulement un session_name sans window_number comme ça :

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

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

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

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

(alias: movew)

donde src-window y dst-window ont la forme session:window.pane .

5voto

MacMartin Points 690

Pour la version tmux 3.1b - Je viens de découvrir le raccourci : <prefix>. (un point)

<prefix>. alors l'entrée 6<enter> - déplacer la fenêtre actuelle à la position 6 (dans la session actuelle) <prefix>. alors l'entrée 2:6<enter> - déplacer la fenêtre actuelle à la position 6 dans la session 2 (voir aussi les noms/numéros de session avec <prefix>s o <prefix>: - ls<enter>

(également nouveau pour moi : <prefix>! pour déplacer un volet (d'une division) vers une nouvelle fenêtre)

-1voto

vitakot Points 1931

J'ai deux sessions en cours, chacune dans son propre iTerm. Pour déplacer le volet d'une session à l'autre, il me suffisait d'effectuer les opérations suivantes

sélectionnez le volet

<leader>s <session>

donde <session> est un nombre entre crochets

tmux 2.7

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X