Réponses:
La commande pour faire cela est join-pane
dans tmux 1.4.
join-pane [-dhv] [-l size | -p percentage] [-s src-pane] [-t dst-pane] (alias: joinp) Like split-window, but instead of splitting dst-pane and creating a new pane, split it and move src-pane into the space. This can be used to reverse break-pane.
Pour simplifier cela, j'ai ces liens dans mon .tmux.conf
pour cela:
# pane movement
bind-key j command-prompt -p "join pane from:" "join-pane -s '%%'"
bind-key s command-prompt -p "send pane to:" "join-pane -t '%%'"
Le premier saisit le volet de la fenêtre cible et le joint au courant, le second fait l'inverse.
Vous pouvez ensuite recharger votre session tmux en lançant ce qui suit dans la session:
$ tmux source-file ~/.tmux.conf
Prefix+s
et entrez le nom de la fenêtre à l'invite d'envoyer le volet de cette fenêtre ...
rejoindre-volet est la réponse. Moi aussi, j'avais des problèmes avec mes tentatives d'utilisation sur la base de la documentation de tmux. J'ai découvert que les options -t et -s semblent accepter [session]: fenêtre et non [session:]. Autrement dit, la spécification de la session est facultative, mais l'inclusion de: est obligatoire. (J'utilise tmux 1.5)
Par conséquent, afin d'ajouter un volet à la fenêtre actuelle et de placer la fenêtre 1 dans le volet, la commande serait (Ctrl-B ou quelle que soit la clé de votre lien, suivie de) ...
:join-pane -s :1
Vous pouvez ensuite les séparer avec le panneau de séparation qui est par défaut: Ctrl-B! Si vous souhaitez le lier à un raccourci, je vous suggère de NE PAS écraser une liaison par défaut telle que s, car à l'avenir, vous rechercherez sur Internet une réponse impliquant choice-session qui ne fonctionnera pas sur votre système. Notez que le volet est lié à! et @ est juste à côté et n’est lié à rien par défaut. Pour cette raison, je suggère cette liaison ...
bind-key @ command-prompt -p "create pane from:" "join-pane -s ':%%'"
Alternativement, pour avoir un sélecteur interactif ...
bind-key @ choose-window 'join-pane -h -s "%%"'
Alternativement, pour toujours rejoindre la fenêtre la plus récemment visitée ...
bind-key @ join-pane -h -s !
REMARQUE: -h
Cela entraîne l'empilement des volets horizontalement (avec une division verticale) par opposition au comportement par défaut qui est l'inverse.
La chose la plus importante est que votre savoir ce que vous choisissez de raccourcir. Parce que si vous le définissez et que vous l'oubliez, vous serez pris au dépourvu lorsque vous vous retrouverez sur un serveur étranger. Et, avouons-le, le multiplexeur de terminaux vous donne essentiellement des sessions fiables sur des serveurs distants.
Ceci termine ma conversion de GNU Screen à Tmux. Je ne regarderai jamais en arrière.
Prendre plaisir!
window.pane
par exemple, join-pane -s 1.0
à déplacer le volet 0 de la fenêtre 1 dans la fenêtre actuelle. Plus de détails sur maciej.lasyk.info/2014/Nov/19/tmux-join-pane
:
apparemment ce n’est plus nécessaire (par exemple, il suffit de le faire :join-pane -s 1
). C’était peut-être un bogue des versions précédentes
Je pense que j'aime mieux ce que j'ai utilisé pour déplacer les vitres vers leur propre fenêtre. j'utilise
break-pane -t :
Je l'ai compris par expérimentation, mais cela semble très bien fonctionner. Vous pouvez y associer une touche ou alias facilement, aucun script n'est requis.
join-pane
.
Si vous ne voulez pas taper l'identifiant de volet dans une invite, vous pouvez également utiliser
bind-key j "join-pane -s !"
qui joindra le dernier volet / fenêtre actif à la fenêtre actuelle.
unknown command: join-pane -s !
avec 1.6.
bind-key j join-pane -s !
Après avoir parcouru les autres réponses et parcouru la page de manuel de tmux, je me suis concentré sur les liaisons suivantes:
bind-key S choose-window 'join-pane -v -s "%%"'
bind-key V choose-window 'join-pane -h -s "%%"'
Cela vous permettra de sélectionner de manière interactive la fenêtre à rejoindre et de refléter mes minuscules s
/ v
liaisons pour créer de nouvelles divisions verticales / horizontales. Si quelqu'un sait comment sélectionner des volets individuels au lieu de fenêtres, faites-le-moi savoir.
-v
et -h
ne créent pas de "divisions" verticales et horizontales. Ils créent respectivement des " panneaux empilés " verticaux et horizontaux . (C'est-à-dire que les panneaux empilés verticalement sont divisés horizontalement.) Vous devez donc entraîner votre cerveau de cette façon. Il -v
s’agit également de la valeur par défaut. Par conséquent, je l’oublierais et ne la -h
placerais que pour que vous ~/.tmux.conf
agissiez comme aide-mémoire.
Par défaut, Ctrl+ b, !serait briser le volet actif dans une nouvelle fenêtre et basculer vers elle.
Où Ctrl+ best le préfixe par défaut pour tmux .
La tmux
commande exécutée par cette clé est break-pane
(alias:) breakp
telle qu’elle est implémentée cmd-break-pane.c
et liée par défaut dans key-bindings.c, comme indiqué dans le résultat de la commande list-keys
(alias lsk
:):
bind-key -T prefix ! break-pane
Vous n'êtes pas obligé de changer vos raccourcis clavier.
Alors que le volet que vous souhaitez déplacer a le focus, tapez Prefix puis :join-pane -t :1
où se 1
trouve quel que soit le numéro de la fenêtre de destination se trouvant dans la même session. Vous pouvez le déplacer vers une autre session en ajoutant son nom, par exemple, comme suit project:3
. Pour moi, join-pane
tab-auto complète de j
.
Ajoutez un élément -h
ou un -v
commutateur à la commande pour définir l’orientation du nouveau fractionnement créé dans la destination, ou cliquez simplement sur le lien et préfixe + spacepour le réorganiser.