592 votes

Comment réorganiser les fenêtres tmux?

Dans screen, je peux simplement taper C-a :number 0 pour déplacer une fenêtre en haut de la liste des fenêtres et pousser toutes les autres fenêtres vers le bas. Quelle est la séquence de commandes équivalente pour tmux? J'ai regardé la page de manuel, mais je trouve cela confus sur ce point.

149 votes

C-b, . vous permet de renuméroter une fenêtre.

9 votes

En lisant toutes les nombreuses réponses, je ne vois toujours pas de solution facile à la question de l'OP: comment déplacer une fenêtre donnée à la position 0 et décaler toutes les autres vers la droite. Dois-je vraiment déplacer manuellement chacune d'entre elles pour faire cela? Je veux juste annuler un déplacement que j'ai fait par erreur (et je ne suis pas sûr de quoi exactement) qui je pense a déplacé la fenêtre 0 vers la fenêtre 8 et déplacé toutes les autres vers la gauche.

1 votes

@nealmcb la solution la plus simple que j'ai pu trouver est de régler l'index de base à 1, renuméroter, puis déplacer votre fenêtre dans l'emplacement vide 0 : superuser.com/a/1155999/674549

2voto

rubo77 Points 3964

Pas besoin de la ligne de commande (qui est Ctrl + b puis :)

Déplacez simplement vos fenêtres avec

Ctrl + b + :

puis saisissez le nouveau numéro de fenêtre libre et appuyez sur Entrée

S'il n'y a pas de numéro de fenêtre libre, utilisez Ctrl + b + . pour renuméroter une fenêtre.

(Astuce : nommez vos fenêtres avec Ctrl + b + , si vous avez du mal à distinguer lesquelles sont lesquelles)

1voto

Je pense que vous voulez lier une nouvelle combinaison de touches à la commande 'choose-window'.

Je sais que vous avez dit que vous avez déjà lu la page de manuel, mais vous devriez vous y référer à nouveau. vous devez modifier votre fichier ~/.tmux.conf pour ajouter une commande bind-key.

Plus précisément, regardez la page 4 du lien suivant.

page de manuel tmux

0 votes

Le code choose-window ne semble pas déplacer la fenêtre actuelle vers une nouvelle position.

0 votes

Aussi, choose-window est déjà lié à C-B w.

1voto

mattLummus Points 111

C'est la méthode que j'utilise. Vous ne pouvez toujours pas déplacer une fenêtre vers un index occupé, mais vous pouvez en déplacer une vers un index supérieur (non utilisé) et la réorganiser dans l'espace où se trouvait l'index précédent.

Disons que vous avez 3 fenêtres et que vous voulez en ajouter une quatrième mais à la place de celle qui était précédemment à la position 3.

Avant d'ajouter une nouvelle fenêtre : Tmux préfixe puis . ouvrira la commande de déplacement. Tapez 4 et l'index de 3 deviendra alors 4, ajoutez ensuite simplement une autre fenêtre et elle sera à l'index 3 tandis que votre ancienne fenêtre restera à l'index 4.

0 votes

Bien qu'il s'agisse d'un conseil utile, cela ne répond pas à la question.

1voto

Jonatas Eduardo Points 111

Tout d'abord, ouvrez la commande tmux en appuyant sur:

Ctrl + b 

Et pour changer la fenêtre actuelle vers la droite (dans l'ordre circulaire), il suffit de faire:

}

Pour changer la fenêtre actuelle vers la gauche:

{
  • N'oubliez pas d'utiliser SHIFT lorsque vous appuyez sur } ou {.

2 votes

Certainement utile dans certains scénarios, mais cela réarrange les volets au sein d'une fenêtre (plutôt que de réorganiser les fenêtres).

1voto

steinar Points 111

Pour ce que ça vaut:

J'ai bidouillé ce script pour pouvoir ordonner toutes les fenêtres dans une "TUI". Il répertorie toutes vos fenêtres dans un fichier temporaire, l'ouvre avec votre éditeur par défaut (suppose que vous avez défini $EDITOR). Ensuite, vous pouvez réorganiser les lignes et après avoir enregistré et fermé le fichier, les fenêtres sont réordonnées en conséquence. (Cela est similaire à l'ordonnancement des commits lors de l'exécution de git rebase -i)

#!/bin/bash

# Utilisation: tmux-mv    
#   Déplacez vos fenêtres tmux dans un éditeur

tmpfile=$(mktemp)
tmux list-windows > $tmpfile
$EDITOR $tmpfile

# Déplacez toutes les fenêtres vers 50..x dans l'ordre que vous venez de spécifier
# Suppose que vous n'avez pas déjà 50 fenêtres(!)
cat $tmpfile | awk -F ":" '{ print " -s " $1 " -t 5" NR-1 }' |\
  xargs -I {} sh -c 'tmux move-window -d {}'

# Les déplacer vers le bas en conservant l'ordre
tmux move-window -d -r
rm $tmpfile

Il pourrait probablement être beaucoup amélioré, en particulier:

REMARQUE: Vous pourriez être déplacé vers une autre fenêtre après l'exécution de la commande.

Un gif en action (github)

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