Memberi nomor kembali windows di tmux

128

Saya sering berakhir dengan lebih dari sepuluh jendela di tmux. Kemudian, saya menutup beberapa yang lebih tua. Apakah ada cara untuk memberi nomor baru, misalnya jendela 15, ke jendela 3 (yang sudah tidak ada lagi)? Atau untuk packmereka semua lagi, sehingga tidak ada slot kosong? Saya ingin melakukan ini karena sulit untuk melompat ke jendela nomor yang lebih tinggi, karena Anda tidak dapat melakukannya Ctrl+B, 15. Saya harus menggunakan Ctrl+B, wdaftar windows dan kemudian ketik huruf yang sesuai dengan jendela yang ingin saya buka.

Saya tahu saya bisa menukar windows. Sebagai contoh, saya dapat membuat jendela baru ( Ctrl+B, c) yang akan terbuka di slot kosong 3. Saya kemudian dapat swapwjendela 15 dan jendela 3 dan kemudian tutup jendela 15. Jelas, ini adalah pendekatan yang membosankan.

Bagaimana Anda mengelola banyak jendela di tmux?

dogbane
sumber

Jawaban:

123

Sepertinya Anda membutuhkan ini:

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.

Panggilan movewtanpa parameter akan memindahkan jendela saat ini ke posisi bebas pertama. movew -rakan memberi nomor baru semua jendela sekaligus.

gelraen
sumber
5
Bagi mereka yang membutuhkan instruksi yang lebih eksplisit: ctrl b :lalu masukkan move-window -r(di mana ctrl bkunci awalan default)
tandai
92

tmux 1.7 memiliki beberapa fitur yang dapat membantu membangun dan mempertahankan nomor jendela tanpa celah / padat:

  • The move-windowperintah belajar baru -rpilihan yang akan memberi nomor semua jendela di sesi (baik sesi saat ini, atau salah satu ditentukan dengan -topsi).

    Jika Anda memiliki seperangkat jendela seperti {1: A, 4: B, 15: C}, maka Anda dapat menjalankan move-window -runtuk memberi nomor baru pada {1: A, 2: B, 3: C} (mereka akan mulai dengan Anda base-index; 1 dalam contoh ini).

  • Ketika renumber-windowsopsi sesi diaktifkan, tmux akan secara otomatis memberi nomor baru pada jendela sesi (seperti dengan move-window -r) setelah jendela apa pun ditutup.

    Jika Anda menyukai perilaku ini, Anda dapat mengaktifkannya di nilai global sehingga semua sesi yang tidak menimpanya akan secara otomatis diaktifkan:

    set-option -g renumber-windows on
    
Chris Johnsen
sumber
4
Akhirnya! Saya telah mencari renumber-windowsopsi ini sejak lama! Selalu menyadap saya bahwa windows baru terbuka di "kiri" karena saya menutup beberapa sebelumnya.
Ory Band
15

Saya sering menemukan diri saya dalam situasi di mana ada celah di antara nomor jendela, misalnya sesi dengan jendela:

1 3 4 8 9 13

Saya menulis skrip tmux untuk menyusun ulang mereka tanpa mengubah urutannya masing-masing atau mengaktifkan opsi 'renumbering-windows'. Hasil:

1 2 3 4 5 6

Masukkan yang berikut ini di .tmux.conf Anda:

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

Tekan [PREFIX] -R untuk menyusun ulang windows (atau ubah binding).

Saya sedang menjalankan tmux 1.9a.

Di atas dapat diganti dengan yang lebih sederhana:

bind R                                      \
    move-window -r\;                        \
    display-message "Windows reordered..."
Injil
sumber
1
Apakah ini berbeda dari menjalankan "move-window -r"?
PonyEars
2
Tidak, bukan. Saya hanya tidak tahu tentang opsi -r untuk pindah-jendela :) tidak pernah terlambat untuk belajar, thx!
gospes
6

Jawaban sebelumnya semuanya baik-baik saja, tetapi inilah solusi singkat jika semua yang Anda inginkan adalah mengocok sejumlah kecil jendela sekarang dan lagi.

move-window -t <number>

akan memindahkan jendela saat ini ke nomor jendela baru (yang belum harus ditempati). Untuk menukar dua jendela, Anda memindahkan sementara satu jendela ke nomor baru terlebih dahulu. misalnya untuk menukar windows 3 dan 5:

move-window -s 3 -t 99
move-window -s 5 -t 3
move-window -s 99 -t 5
Pistos
sumber
2

Jika Anda hanya perlu windows untuk selalu memberi nomor baru ketika seseorang terbunuh, Anda dapat menggunakan ini di .tmux.conf:

set-option -g renumber-windows on
jojman
sumber