Pertanyaan Bagaimana cara mengatur ulang tmux windows?


Di screen, Saya cukup mengetik C-a :number 0 untuk memindahkan jendela ke bagian atas daftar jendela dan mendorong semua jendela lain ke bawah. Apa urutan perintah yang setara untuk tmux? Saya melihat halaman manual, tapi saya menemukan ini membingungkan pada titik ini.


358
2018-02-02 19:53


asal


C-b, . memungkinkan Anda memberi nomor kembali jendela. - isomorphismes
Membaca semua banyak jawaban, saya masih melihat tidak ada solusi yang mudah untuk pertanyaan OP: bagaimana memindahkan jendela yang diberikan ke posisi 0 dan menggeser semua sisanya ke kanan. Apakah saya benar-benar harus menggeser masing-masing untuk melakukan ini? Saya hanya ingin membatalkan langkah yang saya lakukan dengan kesalahan (dan saya tidak yakin apa) yang saya pikir memindahkan jendela 0 ke jendela 8 dan menggeser semua yang lain ke kiri. - nealmcb
@nealmcb yang paling mudah yang bisa saya peroleh adalah dengan menetapkan indeks dasar ke 1, memberi nomor baru, lalu pindahkan jendela Anda ke slot 0 kosong: superuser.com/a/1155999/674549 - eMBee
Untuk perbedaan swap-window -s number dan swap-window -t number untuk menukar jendela saat ini, lihat jawabanku di sini. - qeatzy
Lihat jawaban ini untuk fungsi bash untuk menggeser rentang tmux windows, misalnya, [2-5] dari jendela [0-6]. - qeatzy


Jawaban:


Itu swap-window perintah paling dekat dengan yang Anda inginkan.

"Awalan:" (yaitu "Ctrl-B:" secara default) membawa Anda ke perintah tmux-command. Di sana Anda masukkan:

swap-window -s 3 -t 1

untuk membiarkan jendela nomor 3 dan jendela nomor 1 bertukar posisi mereka.

Untuk menukar jendela saat ini dengan jendela atas, lakukan:

swap-window -t 0

Dalam hal tidak memiliki jendela pada indeks 0, lakukan:

move-window -t 0

(jika indeks dasar adalah 0, karena secara default).

Anda dapat mengikat perintah itu ke kunci (T untuk "atas" misalnya) dengan menambahkan yang berikut ke Anda ~/.tmux.conf:

bind-key T swap-window -t 0

398
2018-03-01 09:39



Terima kasih atas suntingan Anda, tapi move-window hanya berfungsi, jika tidak ada jendela lain pada indeks yang diberikan. Jadi dalam banyak kasus, move-window -t 0 tidak akan berfungsi, karena biasanya akan ada jendela lain pada posisi itu. - matlehmann
Itu benar, saya akan memperbaikinya. - zakkak
Anda mungkin ingin melihat movew. - Marcello Romani
Juga, bind-key L swap-window -t -1 untuk membuatnya menjadi jendela terakhir. - w17t
Untuk perbedaan swapw -s number dan swapw -t number untuk menukar jendela saat ini, lihat jawabanku di sini. - qeatzy


Menambah jawaban Gareth, Anda dapat menggunakan binding kunci berikut

bind-key -n C-S-Left swap-window -t -1
bind-key -n C-S-Right swap-window -t +1

Menekan Ctrl + Shift + Kiri (akan memindahkan jendela saat ini ke kiri. Begitu juga. Tidak perlu menggunakan pengubah (C-b).


211
2018-02-15 11:18



Ini -1 dan +1 sintaksis membantu memecahkan masalah indeks yang diduduki. tmux akan menggeser jendela lain untuk Anda dan akan membungkus acara ke akhir / mulai secara otomatis. Ini adalah jawaban terbaik. - brianpeiris
Ini saleh! Terima kasih. - Bruno Buccolo
Ketidakmampuan saya untuk dengan mudah memindahkan tmux windows telah mengganggu saya selama beberapa minggu. Ini membuatnya jauh lebih mudah untuk menangani jendela! Banyak terima kasih dari tmux convert terbaru ini. - calvinf
Petunjuk bagus, lebih suka bind-key S-Left swap-window -t -1, jadi saya bisa melakukan <prefix> shift + arrow, karena saya tidak suka mengacaukan kunci untuk program. - demure
Jika menggunakan huruf, Anda perlu menggunakan huruf besar dan bukan C-S, seperti ini: bind-key -n C-H swap-window -t -1 - Matthew Mitchell


The tmux setara dengan :number 42 aku s :move-window -t 42.


60
2018-04-05 22:12



Ini terikat pada C-b. - vedang
Terima kasih! Ini jauh lebih baik daripada jawaban yang diterima imo. - Ashe
@ArlenCuss Sebenarnya kedua jawaban itu baik dan berguna. Anda lihat, menggunakan layar: nomor Anda dapat menukar jendela, menggunakan tmux's: memindahkan-jendela Anda hanya dapat memindahkan jendela jika indeks target tidak digunakan. Jadi, imo, keduanya: swap-window dan: move-window diperlukan untuk memahami kendali atas lokasi jendela :) - Victor Farazdagi
+1 untuk mendapatkan jawaban dari seorang guru pemrograman (juga untuk menjadi benar). Ini adalah satu-satunya cara saya bisa membuatnya bekerja pada jendela aktif - engineerDave
tmux :move-window aku s tidak setara dengan layar :number. :number swap jika tujuan ada, :move-window gagal dalam kasus itu. Anda harus memilih antara :move-window dan :swap-window - piec


Anda dapat menerapkan yang setara dengan screen's number perintah menggunakan skrip shell eksternal yang memilih antara swap-window dan move-window. Anda dapat mengikatnya dengan kunci seperti itu:

bind < command-prompt -p index "run-shell '~/.tmux.number.sh %%'"

~/.tmux.number.sh:

#!/bin/bash
if [ $# -ne 1 -o -z "$1" ]; then
    exit 1
fi
if tmux list-windows | grep -q "^$1:"; then
    tmux swap-window -t $1
else
    tmux move-window -t $1
fi

12
2018-04-16 15:42



Solusi yang sangat bagus, bekerja dengan baik! Saya baru saja melakukan sedikit suntingan untuk membersihkan dan menghapus -F opsi yang tidak diterima oleh versi tmux saya. - haridsv


Saya menomori ulang jendela seperti ini:

Ctrl+b, ., 222

akan membuat arus tmux window (semua panel) nomor 222.


Terkait: Ketika saya mengocok hal-hal yang cenderung ingin saya lakukan

Ctrl+b  :new-session -d -s "reading"

dan dari sana saya juga bisa menggunakan Ctrl+b, ., reading untuk memindahkan jendela saat ini (semua panel sekaligus) ke sesi membaca. Anda dapat menelusuri di antara sesi dengan Ctrl+b, s cara Anda menelusuri dalam sesi menggunakan Ctrl+b, w.

HTH


10
2017-07-09 22:16





Menggunakan jendela swap untuk pindah ke sembarang id: [paling dekat dengan layar: angka]

# window movement / renumbering like in screen's :number
bind-key m command-prompt -p "move window to:"  "swap-window -t '%%'"

[m untuk pindah -> tekan awalan-m dan masukkan katakan 3. .to jendela penomoran ulang untuk 3]


8
2017-12-12 03:13



Ini sudah bagus, tetapi lebih baik lagi: lakukan swap-window dan jika gagal, jatuh kembali ke jendela-bergerak - nisc


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 ke .tmux.conf.

# swap window to left or right
bind-key -r < swap-window -t -1
bind-key -r > swap-window -t +1

5
2018-03-18 17:08