web-dev-qa-db-fra.com

Renuméroter les fenêtres dans tmux

Je me retrouve souvent avec plus de dix fenêtres dans tmux. Plus tard, je ferme certains de mes anciens. Existe-t-il un moyen de renuméroter, disons la fenêtre 15, la fenêtre 3 (qui n'existe plus)? Ou pour pack tous à nouveau, afin qu'il n'y ait pas d'emplacements vides? Je voudrais le faire car il est difficile de passer à des fenêtres plus numérotées, car vous ne pouvez pas faire Ctrl+B, 15. Je dois utiliser Ctrl+B, w pour lister les fenêtres puis taper la lettre correspondant à la fenêtre que je souhaite ouvrir.

Je sais que je peux échanger des fenêtres. Par exemple, je pourrais créer une nouvelle fenêtre (Ctrl+B, c) qui s'ouvrirait dans l'emplacement vide 3. Je peux alors swapw fenêtre 15 et fenêtre 3 puis fermer la fenêtre 15. Évidemment, c'est une approche fastidieuse.

Comment gérez-vous de nombreuses fenêtres dans tmux?

138
dogbane

On dirait que vous en avez besoin:

move-window [-rdk] [-s src-window] [-t dst-window]
              (alias: movew)
        This is similar to link-window, except the window at src-window
        is moved to dst-window.  With -r, all windows in the session are
        renumbered in sequential order, respecting the base-index option.

L'appel de movew sans paramètres déplace la fenêtre actuelle vers la première position libre. movew -r renumérotera toutes les fenêtres à la fois.

136
gelraen

tmux 1.7 a quelques fonctionnalités qui peuvent aider à établir et à maintenir des numéros de fenêtre sans espace/compressés:

  • Le move-window la commande a appris une nouvelle -r option qui renumérotera toutes les fenêtres d'une session (soit la session en cours, soit celle spécifiée avec le -t option).

    Si vous avez un ensemble de fenêtres comme {1: A, 4: B, 15: C}, vous pouvez exécuter move-window -r pour les renuméroter en {1: A, 2: B, 3: C} (ils commenceront par votre base-index; 1 dans cet exemple).

  • Quand le renumber-windows l'option de session est activée, tmux renumérotera automatiquement les fenêtres d'une session (comme avec move-window -r) après la fermeture d'une fenêtre.

    Si vous aimez ce comportement, vous pouvez l'activer dans la valeur globale pour que toutes les sessions qui ne le remplacent pas l'auront automatiquement activé:

    set-option -g renumber-windows on
    
101
Chris Johnsen

Je me retrouve souvent dans une situation où j'ai des écarts entre les numéros de fenêtres, par exemple une session avec des fenêtres:

1 3 4 8 9 13

J'ai écrit un script tmux pour les réorganiser sans changer leur ordre respectif ni activer l'option 'renumbering-windows'. Le résultat:

1 2 3 4 5 6

Mettez ce qui suit dans votre .tmux.conf:

bind R                                      \
    set -g renumber-windows on\;            \
    new-window\; kill-window\;              \
    set -g renumber-windows off\;           \
    display-message "Windows reordered..."

Appuyez sur [PREFIX] -R pour réorganiser les fenêtres (ou modifier la liaison).

J'utilise actuellement tmux 1.9a.

Ce qui précède peut être remplacé par le plus simple:

bind R                                      \
    move-window -r\;                        \
    display-message "Windows reordered..."
16
gospes

Les réponses précédentes sont toutes bonnes, mais voici une solution concise si tout ce que vous voulez est de mélanger un petit nombre de fenêtres de temps en temps.

move-window -t <number>

déplace la fenêtre en cours vers un nouveau numéro de fenêtre (qui ne doit pas déjà être occupé). Pour échanger deux fenêtres, vous devez d'abord déplacer temporairement une fenêtre vers un nouveau numéro. par exemple. pour permuter les fenêtres 3 et 5:

move-window -s 3 -t 99
move-window -s 5 -t 3
move-window -s 99 -t 5
6
Pistos

Si vous avez juste besoin que Windows renumérote toujours quand un est tué, vous pouvez l'utiliser dans .tmux.conf:

set-option -g renumber-windows on
4
jojman