Kullandığım yaklaşım biraz Ashish'ın cevabını piec'lerle birleştiriyor; Pencereyi sola veya sağa hareket ettiren hızlı bir küçük kabuk belirtme çizgisine bağlı alt-sol ve sağ ok, sırasıyla, ilk veya son pencere değilse. Bunu yaptım çünkü, son pencerede bir takas + 1 çıkardığınızda (ya da ilk pencerede -1 takas), tekrar beklediğiniz gibi tekrar tekrar dolaşmak yerine yine takas yapacaktır:
0:one 1:two 2:three 3:zero*
Oluyor
0:zero* 1:two 2:three 3:one
Onun yerine
0:zero* 1:one 2:two 3:three
Böylece, pencere listenin kenarına ulaştığında kullandığım komutlar çalışmayı durduruyor:
bind-key -n M-Left run-shell 'tmux list-windows | head -n 1 | grep -q active || tmux swap-window -t -1'
bind-key -n M-Right run-shell 'tmux list-windows | tail -n 1 | grep -q active || tmux swap-window -t +1'
Bu, rasgele bir sayıyla başlayan ve hiçbir zaman boşluk bırakmayan bir pencere listesine sahip olmak için kolayca temel dizin ve yeniden numaralandırma pencereleriyle birleştirilebilir .
Benim gibi base index 1 kullanıyorsanız ve 999 pencerenin üstüne çıkacağınızı düşünmüyorsanız, komutlar birazcık şişse de, düzgün bir şekilde yuvarlanmak için küçük bir numara kullanabilirsiniz:
set -g base-index 1
set -g renumber-windows on
bind-key -n M-Left run-shell 'if tmux list-windows | head -n 1 | grep -q active ; then tmux move-window -t 999 \; move-window -r \; refresh-client -S ; else tmux swap-window -t -1 ; fi'
bind-key -n M-Right run-shell 'if tmux list-windows | tail -n 1 | grep -q active ; then tmux move-window -t 0 \; move-window -r \; refresh-client -S ; else tmux swap-window -t +1 ; fi'
Bu işlem, son pencereyi geçici olarak kullanılmayan indeks-0'a hareket ettirmek ve ardından 1'den başlayarak yeniden numaralandırmak için move-window -r'yi çağırmakla işe yarar. İlk pencereyi sonuna kadar taşırken benzer şekilde çalışır; Asla kullanmayacağınız çok büyük bir sayı seçerek, " window -r" penceresinin tekrar hareket etmesi durumunda her şeyin beklediğiniz gibi numaralandırılmasını sağlar. Yenileme istemcisi -S'yi merak ediyorsanız , bu gereklidir, çünkü bazen hareket penceresinden yeniden sıralama düzgün bir şekilde çalışsa da, değişiklik yapılıncaya kadar durum çubuğu güncellenmez. Sadece durum çubuğunun (-S) yenilenmesini zorlayarak, bundan kaçınırsınız.
Bu yaklaşımla bulabildiğim tek sorun, takas penceresinin en son kullanılan pencereyi takas ettiğiniz pencereye dolaylı olarak değiştirmesidir. Böylece, # 1 penceresindeyseniz, dördüncü pencereye geçin ve onu geri taşıyın, son kullandığınız pencerenin # 1 yerine yeni # 4 (eskiden # 3) olduğunu görürsünüz. Bunun bir yolu yok gibi görünüyor.
C-b
,.
bir pencereyi yeniden numaralandırmanıza izin verir.