Câu hỏi Làm cách nào để sắp xếp lại các cửa sổ tmux?


Trong screen, Tôi có thể chỉ cần gõ C-a :number 0 để di chuyển cửa sổ lên đầu danh sách cửa sổ và đẩy tất cả các cửa sổ khác xuống một cửa sổ. Trình tự lệnh tương đương cho tmux? Tôi nhìn vào trang người đàn ông, nhưng tôi thấy nó khó hiểu vào thời điểm này.


358
2018-02-02 19:53


gốc


C-b, . cho phép bạn đổi lại một cửa sổ. - isomorphismes
Đọc tất cả các câu trả lời, tôi vẫn thấy không có giải pháp dễ dàng cho câu hỏi của OP: làm thế nào để di chuyển một cửa sổ đã cho vị trí 0 và chuyển tất cả phần còn lại sang bên phải. Tôi có thực sự phải tự thay đổi từng cái để làm điều này không? Tôi chỉ muốn hoàn tác một động thái mà tôi đã làm do nhầm lẫn (và tôi không chắc chắn những gì) mà tôi nghĩ rằng di chuyển cửa sổ 0 đến cửa sổ 8 và chuyển tất cả những người khác sang bên trái. - nealmcb
@nealmcb dễ dàng nhất tôi có thể nghĩ ra là đặt chỉ số cơ sở thành 1, đổi tên, sau đó di chuyển cửa sổ của bạn vào vị trí trống 0: superuser.com/a/1155999/674549 - eMBee
Cho sự khác biệt của swap-window -s number và swap-window -t number để hoán đổi cửa sổ hiện tại, xem câu trả lời của tôi ở đây. - qeatzy
Xem câu trả lời này cho một hàm bash để thay đổi phạm vi của cửa sổ tmux, ví dụ, [2-5] của cửa sổ [0-6]. - qeatzy


Các câu trả lời:


Các swap-window lệnh gần nhất với những gì bạn muốn.

"Tiền tố:" (đó là "Ctrl-B:" theo mặc định) sẽ đưa bạn đến dấu nhắc lệnh tmux. Ở đó bạn nhập:

swap-window -s 3 -t 1

để cửa sổ số 3 và số cửa sổ 1 hoán đổi vị trí của chúng.

Để hoán đổi cửa sổ hiện tại với cửa sổ trên cùng, hãy làm:

swap-window -t 0

Trong trường hợp không có cửa sổ không có chỉ số 0, hãy làm:

move-window -t 0

(nếu chỉ số cơ bản là 0, vì nó là theo mặc định).

Bạn có thể liên kết lệnh đó với một khóa (T cho "top" chẳng hạn) bằng cách thêm các thông tin sau vào ~/.tmux.conf:

bind-key T swap-window -t 0

398
2018-03-01 09:39



Cảm ơn bạn đã chỉnh sửa nhưng move-window chỉ hoạt động, nếu không có cửa sổ khác tại chỉ mục đã cho. Vì vậy, trong hầu hết các trường hợp, move-window -t 0 sẽ không hoạt động, vì thường thì sẽ có một cửa sổ khác ở vị trí đó. - matlehmann
Đúng vậy, tôi sẽ cải thiện nó. - zakkak
Bạn có thể muốn xem movew. - Marcello Romani
Cũng thế, bind-key L swap-window -t -1 để biến nó thành cửa sổ cuối cùng. - w17t
Cho sự khác biệt của swapw -s number và swapw -t number để hoán đổi cửa sổ hiện tại, xem câu trả lời của tôi ở đây. - qeatzy


Thêm vào câu trả lời của Gareth, bạn có thể sử dụng các ràng buộc khóa sau

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

Nhấn Ctrl + Shift + Left (sẽ di chuyển cửa sổ hiện tại sang bên trái. Tương tự, không cần sử dụng công cụ sửa đổi (C-b).


211
2018-02-15 11:18



Điều này -1 và +1 cú pháp giúp giải quyết vấn đề của các chỉ mục bị chiếm đóng. tmux sẽ thay đổi các cửa sổ khác cho bạn và sự kiện sẽ quấn quanh đầu / cuối tự động. Đây là câu trả lời hay nhất. - brianpeiris
Đây là thượng đế! Cảm ơn. - Bruno Buccolo
Tôi không có khả năng dễ dàng di chuyển các cửa sổ tmux đã làm tôi thất vọng trong một vài tuần. Điều này làm cho nó dễ dàng hơn nhiều để đối phó với các cửa sổ! Rất cám ơn từ lần chuyển đổi tmux gần đây này. - calvinf
Gợi ý tuyệt vời, thích bind-key S-Left swap-window -t -1, vì vậy tôi có thể làm <tiền tố> shift + mũi tên, vì tôi không thích rối tung lên các khóa liên kết cho các chương trình. - demure
Nếu sử dụng các chữ cái bạn cần sử dụng một chữ cái viết hoa chứ không phải chữ C, như sau: bind-key -n C-H swap-window -t -1 - Matthew Mitchell


Tmux tương đương với :number 42 Là :move-window -t 42.


60
2018-04-05 22:12



Điều này bị ràng buộc với C-b. - vedang
Cảm ơn! Điều này là tốt hơn nhiều so với imo câu trả lời được chấp nhận. - Ashe
@ArlenCuss Trên thực tế cả hai câu trả lời đều tốt và hữu ích. Bạn thấy, sử dụng màn hình: số bạn có thể hoán đổi các cửa sổ, sử dụng tmux's: move-window bạn chỉ có thể di chuyển cửa sổ nếu chỉ mục đích không được sử dụng. Vì vậy, imo, cả hai: swap-window và: move-window là cần thiết để nắm quyền kiểm soát các vị trí cửa sổ :) - Victor Farazdagi
1 để nhận được câu trả lời từ một chuyên gia lập trình (cũng chính xác). Đây là cách duy nhất tôi có thể làm cho nó hoạt động trên một cửa sổ đang hoạt động - engineerDave
tmux's :move-window Là không phải tương đương với màn hình :number. :number hoán đổi nếu đích đến tồn tại, :move-window thất bại trong trường hợp đó. Bạn phải lựa chọn giữa :move-window và :swap-window - piec


Bạn có thể thực hiện tương đương với screen'S number lệnh bằng cách sử dụng tập lệnh shell bên ngoài chọn giữa swap-window và move-window. Bạn có thể liên kết nó với một khóa theo cách đó:

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



Giải pháp rất đẹp, làm việc tuyệt vời! Tôi vừa thực hiện các chỉnh sửa nhỏ để dọn dẹp và xóa -F tùy chọn không được phiên bản tmux của tôi chấp nhận. - haridsv


Tôi đổi lại các cửa sổ như thế này:

Ctrl+b, ., 222

sẽ làm cho dòng điện tmux cửa sổ (tất cả các ô) số 222.


Liên quan: Khi tôi xáo trộn mọi thứ xung quanh tôi có xu hướng muốn làm

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

và từ đó tôi cũng có thể sử dụng Ctrl+b, ., reading để di chuyển cửa sổ hiện tại (tất cả các ô cùng một lúc) sang phiên đọc. Bạn có thể duyệt qua các phiên với Ctrl+b, s cách bạn sẽ duyệt trong phiên sử dụng Ctrl+b, w.

HTH


10
2017-07-09 22:16





Sử dụng cửa sổ hoán đổi để chuyển sang bất kỳ id nào: [gần nhất với màn hình: số]

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

[m để di chuyển -> nhấn tiền tố-m và nhập nói 3. .để đổi lại cửa sổ thành 3]


8
2017-12-12 03:13



Điều này đã được tốt đẹp, nhưng thậm chí tốt hơn sẽ là: làm hoán đổi cửa sổ và nếu nó không thành công, rơi trở lại di chuyển-cửa sổ - nisc


Vì câu trả lời của Ashish Ariga không hoạt động trên phiên bản 1.9a trở xuống. tôi sử dụng < và > để hoán đổi cửa sổ sang trái và phải, tương ứng, bằng cách thêm dòng bên dưới vào .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