Pendekatan yang saya gunakan menggabungkan sedikit jawaban Ashish dengan piec; Saya memiliki panah alt-kiri dan kanan yang terikat ke callout shell kecil cepat yang memindahkan jendela ke kiri atau kanan, kecuali itu jendela pertama atau terakhir, dengan hormat. Saya melakukan ini karena, ketika Anda mengeluarkan swap +1 di jendela terakhir (atau swap -1 di jendela pertama), itu masih akan swap, alih-alih kembali lagi seperti yang mungkin Anda harapkan:
0:one 1:two 2:three 3:zero*
Menjadi
0:zero* 1:two 2:three 3:one
Dari pada
0:zero* 1:one 2:two 3:three
Jadi, perintah yang saya gunakan berhenti bekerja ketika jendela telah mencapai tepi daftar:
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'
Ini dapat dengan mudah digabungkan dengan indeks-dasar dan nomor-jendela untuk memiliki daftar jendela yang dimulai dari angka acak dan tidak pernah memiliki celah.
Jika Anda menggunakan basis-indeks 1 seperti saya dan Anda tidak berpikir Anda akan pernah pergi di atas 999 windows, Anda dapat menggunakan sedikit trik untuk membuatnya menggulung dengan benar, meskipun perintahnya sedikit menggembung:
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'
Ini berfungsi dengan memindahkan sementara jendela terakhir ke indeks-0 yang tidak digunakan dan kemudian memanggil pindah-jendela -r untuk memberi nomor baru mulai dari 1 lagi. Ini bekerja sama ketika memindahkan jendela pertama ke ujung; dengan memilih sejumlah besar yang tidak akan pernah Anda gunakan, itu memastikan bahwa ketika pindah-jendela -r menyala lagi semuanya akan bernomor seperti yang Anda harapkan. Jika Anda bertanya-tanya tentang refresh-client -S , itu perlu karena kadang-kadang, sementara pemesanan ulang dari jendela-pindah akan berfungsi dengan baik, bilah status tidak akan memperbarui hingga perubahan lebih lanjut dibuat. Dengan memaksa penyegaran hanya bilah status (-S), Anda menghindari ini.
Satu-satunya masalah yang saya dapat temukan dengan pendekatan ini adalah bahwa swap-window secara implisit akan mengubah jendela yang terakhir digunakan ke yang Anda bertukar. Dengan demikian, jika Anda berada di jendela # 1, beralih ke jendela empat dan memindahkannya kembali, Anda akan menemukan bahwa jendela yang terakhir Anda gunakan adalah yang baru # 4 (sebelumnya # 3) alih-alih # 1. Sepertinya tidak ada cara untuk mengatasi ini.
C-b
,.
memungkinkan Anda memberi nomor baru pada jendela.