Renumérotation des fenêtres dans tmux

128

Je me retrouve souvent avec plus de dix fenêtres dans tmux. Plus tard, je ferme certaines de mes plus anciennes. Existe-t-il un moyen de renuméroter, disons la fenêtre 15, vers la fenêtre 3 (qui n'existe plus)? Ou encore pour packtous, afin qu'il n'y ait pas de fentes vides? J'aimerais faire cela parce qu'il est difficile de sauter à des fenêtres avec un numéro plus élevé, parce que vous ne pouvez pas le faire Ctrl+B, 15. Je dois utiliser Ctrl+B, wpour lister les fenêtres puis taper la lettre correspondant à la fenêtre que je veux 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 pourrai alors ouvrir les swapwfenêtres 15 et 3, puis fermer la fenêtre 15. Évidemment, cette approche est fastidieuse.

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

dogbane
la source

Réponses:

123

On dirait que tu as besoin de ça:

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 movewsans paramètres déplace la fenêtre actuelle vers la première position libre. movew -rrenumérotera toutes les fenêtres à la fois.

Gelraen
la source
5
Pour ceux qui ont besoin d’une instruction plus explicite: ctrl b :saisissez move-window -r(où ctrl best la clé de préfixe par défaut)
notez le
92

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

  • La move-windowcommande a appris une nouvelle -roption qui renumérotera toutes les fenêtres d’une session (la session en cours ou une session spécifiée avec l’ -toption).

    Si vous avez un ensemble de fenêtres du type {1: A, 4: B, 15: C}, vous pouvez move-window -ralors les renuméroter en {1: A, 2: B, 3: C} (elles commenceront par le votre base-index; 1 dans cet exemple).

  • Lorsque l' renumber-windowsoption 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 afin que toutes les sessions qui ne l'ignorent pas l'activent automatiquement:

    set-option -g renumber-windows on
    
Chris Johnsen
la source
4
Finalement! Je cherche cette renumber-windowsoption depuis des lustres! M'a toujours dérangé que de nouvelles fenêtres s'ouvrent à gauche parce que j'en ferme certaines avant.
Ory Band
15

Je me trouve souvent dans une situation où il y a des espaces entre les numéros de fenêtre, par exemple une session avec Windows:

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 'renumérotation des fenêtres'. Le résultat:

1 2 3 4 5 6

Mettez ce qui suit dans votre fichier .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).

Je suis actuellement en cours d'exécution tmux 1.9a.

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

bind R                                      \
    move-window -r\;                        \
    display-message "Windows reordered..."
gospes
la source
1
Est-ce différent de lancer "move-window -r"?
PonyEars
2
Non ce n'est pas. Je ne savais tout simplement pas que l'option -r de move-window :) n'était jamais trop tardive pour apprendre, merci!
Gospes
6

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

move-window -t <number>

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

move-window -s 3 -t 99
move-window -s 5 -t 3
move-window -s 99 -t 5
Pistos
la source
2

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

set-option -g renumber-windows on
jojman
la source