Dalam screen
, saya bisa mengetik C-a :number 0
untuk memindahkan jendela ke bagian atas daftar jendela dan mendorong semua jendela lainnya ke bawah. Untuk apa urutan perintah yang setara tmux
? Saya melihat halaman manual, tetapi saya merasa bingung tentang hal ini.
413
C-b
,.
memungkinkan Anda memberi nomor baru pada jendela.swap-window -s number
danswap-window -t number
untuk menukar jendela saat ini, lihat jawaban saya di sini .Jawaban:
The
swap-window
perintah paling dekat dengan apa yang Anda inginkan."Awalan:" (yaitu Ctrl+ B, :secara default) membawa Anda ke prompt tmux-command. Di sana Anda masuk:
untuk membiarkan jendela nomor 3 dan nomor jendela 1 menukar posisi mereka.
Untuk menukar jendela saat ini dengan jendela atas, lakukan:
Jika tidak memiliki jendela di indeks 0, lakukan:
(jika indeks-dasar adalah 0, sebagaimana standarnya).
Anda dapat mengikat perintah itu ke kunci (T untuk "atas" misalnya) dengan menambahkan berikut ini ke Anda
~/.tmux.conf
:sumber
move-window
hanya berfungsi, jika tidak ada jendela lain di indeks yang diberikan. Jadi dalam kebanyakan kasus,move-window -t 0
tidak akan berfungsi, karena biasanya sudah ada jendela lain di posisi itu.movew
.bind-key L swap-window -t -1
untuk menjadikannya jendela terakhir.swapw -s number
danswapw -t number
untuk menukar jendela saat ini, lihat jawaban saya di sini .Menambahkan ke jawaban Gareth, Anda dapat menggunakan binding kunci berikut
Menekan Ctrl + Shift + Kiri (akan memindahkan jendela saat ini ke kiri. Demikian pula ke kanan. Tidak perlu menggunakan pengubah (Cb).
sumber
-1
dan+1
sintaks membantu memecahkan masalah indeks yang diduduki. tmux akan menggeser jendela lain untuk Anda dan akan membungkus acara sampai akhir / mulai secara otomatis. Ini jawaban terbaik.bind-key S-Left swap-window -t -1
, jadi saya bisa melakukan <prefix> shift + panah, karena saya tidak suka mengacaukan ikatan kunci untuk program.bind-key -n C-H swap-window -t -1
bind-key -n C-S-Left swap-window -t -1
namun ia bekerja ok ketika menggunakan awalan seperti yang disarankan oleh @MatthewMitchellThe tmux setara dengan
:number 42
adalah:move-window -t 42
.sumber
:move-window
adalah tidak setara dengan layar ini:number
.:number
swap jika tujuan ada,:move-window
gagal dalam kasus itu. Anda harus memilih antara:move-window
dan:swap-window
Saya menomori ulang windows seperti ini:
Ctrl+ b,
.
,222
akan membuat
tmux
jendela saat ini (semua panel) nomor 222.Terkait: Ketika saya mengacak-acak hal-hal di sekitar saya cenderung ingin melakukan
Ctrl+b
:new-session -d -s "reading"
dan dari sana saya juga bisa menggunakan Ctrl+ b,
.
,reading
untuk memindahkan jendela saat (semua panel sekaligus) ke sesi membaca. Anda dapat menelusuri di antara sesi dengan Ctrl+ b,s
cara Anda akan isi dalam sesi menggunakan Ctrl+ b,w
.HTH
sumber
Anda dapat menerapkan setara dengan
screen
'snumber
perintah menggunakan shell script eksternal yang memilih antaraswap-window
danmove-window
. Anda dapat mengikatnya dengan kunci seperti itu:~/.tmux.number.sh
:sumber
-F
opsi yang tidak diterima oleh versi tmux saya.Menggunakan jendela swap untuk berpindah ke id apa pun: [paling dekat dengan layar: nomor]
[m untuk pindah -> tekan awalan-m dan masukkan say 3. .untuk memberi nomor baru jendela ke 3]
sumber
Karena jawaban Ashish Ariga tidak berfungsi pada versi 1.9a dan di bawah. Saya menggunakan
<
dan>
untuk menukar jendela ke kiri dan kanan, masing-masing, dengan menambahkan baris di bawah ini ke.tmux.conf
.sumber
Solusi paling sederhana dari
man
, adalah dengan menggunakan binding standar:sumber
Bagi Anda yang menggunakan
byobu
sebagai pembungkus untuk tmux, Anda dapat menukar jendela saat ini dengan jendela sebelumnya atau berikutnya dengan:Pengikatan kunci yang ditentukan oleh
byobu
untuk kunci-kunci ini mungkin menarik:sumber
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:
Menjadi
Dari pada
Jadi, perintah yang saya gunakan berhenti bekerja ketika jendela telah mencapai tepi daftar:
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:
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.
sumber
Anda dapat menggunakan
base-index
untuk mengubah nomor awal untuk windows Anda. jika Anda mengaturbase-index
ke1
, makamove-window -r
akan menomori ulang semua jendela mulai1
, sehingga membebaskan0
untuk memindahkan jendela ke dalam slotnya:setelah selesai, Anda dapat mengatur ulang
base-index
ke0
jika Anda ingin menggunakanmove-window -r
nanti tanpa memindahkan jendela Anda di0
sumber
tmux-pain-control menyediakan
ctrl-b >
danctrl-b <
memindahkan jendela fokus ke kanan dan kiri, membungkus.sumber
Keduanya
swap-window -s 5
danswap-window -t 5
menukar jendela saat ini dengan jendela 5, tetapi dengan semantik yang berbeda.swap-window -s 5
swap-window -t 5
yang
number
diswap-window -s number
dan-t number
bisa menjadi keduanya mutlak , misalnya, 5, dan relatif , misalnya, -1, 2.PS di bawah ini adalah kutipan dari tmux statusline yang menggambarkan efek dari
swap-window -s 5
baru:
[0] 0:vim- 1:mpl 2:py2* 3:numpy 4:plot 5:mc
sekarang, setelah
last-window
:[0] 0:vim* 1:mpl 2:py2- 3:numpy 4:plot 5:mc
setelah
swapw -s 5
:[0] 0:mc* 1:mpl 2:py2- 3:numpy 4:plot 5:vim
lain
swapw -s 5
:[0] 0:vim* 1:mpl 2:py2- 3:numpy 4:plot 5:mc
lain
last-window
:[0] 0:vim- 1:mpl 2:py2* 3:numpy 4:plot 5:mc
sumber
Dari jendela tmux, coba yang berikut ini untuk menukar jendela 0 dengan 1:
$ tmux swap-window -d -s 0 -t 1
sumber
Saya pikir Anda ingin mengikat kombinasi tombol baru ke perintah 'pilih-jendela'.
Saya tahu Anda mengatakan Anda sudah membaca halaman manual, tetapi Anda harus merujuk kembali ke halaman itu. Anda perlu memodifikasi file ~ / .tmux.conf Anda untuk menambahkan perintah bind-key.
Secara khusus, lihat halaman 4 berikut ini.
halaman manual tmux
sumber
choose-window
sepertinya tidak memindahkan jendela saat ini ke posisi baru.choose-window
sudah terikatC-B w
.Ini adalah metode yang saya gunakan. Anda masih tidak dapat memindahkan jendela ke indeks yang diduduki, tetapi Anda dapat memindahkan satu ke yang lebih tinggi (indeks yang tidak digunakan) dan mengatur ulang di celah di mana indeks sebelumnya.
Katakanlah Anda memiliki 3 jendela dan ingin menambahkan keempat tetapi di tempat 3 sebelumnya.
Sebelum Anda menambahkan jendela baru: Awalan Tmux lalu. akan membuka perintah pindah. Ketik 4 dan indeks 3 sekarang akan menjadi 4, maka cukup tambahkan jendela lain dan itu akan berada di indeks 3 dan jendela lama Anda masih akan di indeks 4.
sumber
Pertama, buka perintah tmux, tekan dan lepaskan:
Dan untuk mengubah jendela aktual ke jendela kanan (dalam urutan melingkar), lakukan saja:
Untuk mengubah jendela aktual ke kiri:
SHIFT
saat menekan}
atau{
.sumber
Untuk apa nilainya:
Saya meretas skrip ini bersama-sama untuk dapat memesan semua jendela dalam "TUI". Ini mencantumkan semua jendela Anda dalam file sementara, membukanya dengan editor default Anda (mengasumsikan bahwa Anda telah menetapkan $ EDITOR). Setelah ini, Anda dapat menyusun ulang baris dan setelah Anda menyimpan dan menutup file, jendela disusun ulang sesuai. (Ini mirip dengan pemesanan yang dilakukan saat melakukan
git rebase -i
)Ini mungkin dapat ditingkatkan banyak, khususnya:
CATATAN : Anda mungkin dipindahkan ke jendela lain setelah menjalankan perintah.
Gif dalam aksi (github)
sumber
Tidak ada jawaban di sini yang memuaskan saya, jadi saya menulis sebuah skrip yang (semacam) meniru
screen
perilaku menggerakkan jendelatmux
.Ini mendeteksi apakah nomor jendela tujuan lebih kecil dari jumlah jendela terkecil atau lebih besar dari nomor jendela terbesar, dan jika demikian, mendorong semua jendela lain ke kanan atau ke kiri (masing-masing) dan menomori ulang nomor tersebut dari 1-N secara bertahap . Ini dilakukan dengan
move-window
perintah.Jika nomor jendela di antara angka terkecil / terbesar (yaitu, mungkin, cocok dengan nomor jendela yang ada), itu hanya menukar mereka dengan
swap-window
perintah.Ini skripnya:
Kemudian, tambahkan saja pengikat kunci sederhana ini ke
.tmux.conf
:Catatan : Untuk sepenuhnya menirukan
screen
perilaku bertukar jendela, saya percaya ketika Anda memindahkan jendela ke nomor jendela yang ada , itu harus mengambil tempat jendela itu dan semua jendela lainnya didorong ke kanan . Akan cukup sederhana untuk memodifikasi skrip ini untuk melakukannya.sumber
Tidak perlu untuk commandline (yaitu Ctrl+ bdan kemudian :)
Cukup gerakkan jendela Anda
Ctrl+ b+:
kemudian masukkan nomor jendela baru (gratis) dan tekan Enter
Jika sekarang ada nomor jendela gratis, gunakan Ctrl+ b+ .untuk memberi nomor baru pada jendela.
(Kiat: beri nama windows Anda dengan Ctrl+ b+ ,jika Anda kehilangan jalur yang mana)
sumber