Làm mới cửa sổ trong tmux


128

Tôi thường kết thúc với hơn mười cửa sổ trong tmux. Sau đó, tôi đóng một số người lớn tuổi của tôi. Có cách nào để đánh số lại, giả sử cửa sổ 15, sang cửa sổ 3 (không còn tồn tại nữa)? Hoặc cho packtất cả chúng lên một lần nữa, để không có chỗ trống? Tôi muốn làm điều này bởi vì rất khó để chuyển sang các cửa sổ được đánh số cao hơn, bởi vì bạn không thể làm được Ctrl+B, 15. Tôi phải sử dụng Ctrl+B, wđể liệt kê các cửa sổ và sau đó nhập chữ cái tương ứng với cửa sổ tôi muốn mở.

Tôi biết rằng tôi có thể trao đổi các cửa sổ. Ví dụ: tôi có thể tạo một cửa sổ mới ( Ctrl+B, c) sẽ mở trong khe trống 3. Sau đó tôi có thể swapwcửa sổ 15 và cửa sổ 3 và sau đó đóng cửa sổ 15. Rõ ràng, đây là một cách tiếp cận tẻ nhạt.

Làm thế nào để bạn quản lý nhiều cửa sổ trong tmux?

Câu trả lời:


123

Có vẻ như bạn cần điều này:

move-window [-rdk] [-s src-window] [-t dst-window]
              (alias: movew)
        This is similar to link-window, except the window at src-window
        is moved to dst-window.  With -r, all windows in the session are
        renumbered in sequential order, respecting the base-index option.

Gọi movewmà không có tham số di chuyển cửa sổ hiện tại đến vị trí miễn phí đầu tiên. movew -rsẽ đánh số lại tất cả các cửa sổ cùng một lúc.


5
Đối với những người cần một hướng dẫn rõ ràng hơn: ctrl b :sau đó nhập move-window -r( ctrl bkhóa tiền tố mặc định)
đánh dấu

92

tmux 1.7 có một vài tính năng có thể giúp thiết lập và duy trì số cửa sổ không có khe hở / đóng gói:

  • Các move-windowlệnh đã học được mới -rtùy chọn đó sẽ ghi số lại tất cả các cửa sổ trong một phiên (một trong hai phiên hiện tại, hoặc một chỉ định với -ttùy chọn).

    Nếu bạn có một bộ cửa sổ như {1: A, 4: B, 15: C}, thì bạn có thể chạy move-window -rđể đánh số lại chúng thành {1: A, 2: B, 3: C} (chúng sẽ bắt đầu với của bạn base-index; 1 trong ví dụ này).

  • Khi renumber-windowstùy chọn phiên được bật, tmux sẽ tự động đánh số lại các cửa sổ của phiên (như với move-window -r) sau khi bất kỳ cửa sổ nào được đóng.

    Nếu bạn thích hành vi này, bạn có thể bật nó trong giá trị toàn cầu để tất cả các phiên không ghi đè lên nó sẽ tự động kích hoạt nó:

    set-option -g renumber-windows on
    

4
Cuối cùng! Tôi đã tìm kiếm renumber-windowstùy chọn này từ lâu! Luôn luôn nói với tôi rằng các cửa sổ mới mở ở "bên trái" bởi vì tôi đã đóng một số trước đó.
Ban nhạc Ory

15

Tôi thường thấy mình trong một tình huống mà tôi có những khoảng trống ở giữa các số cửa sổ, ví dụ như một phiên có cửa sổ:

1 3 4 8 9 13

Tôi đã viết một tập lệnh tmux để sắp xếp lại chúng mà không thay đổi thứ tự tương ứng cũng như không kích hoạt tùy chọn 'đánh số lại cửa sổ'. Kết quả:

1 2 3 4 5 6

Đặt nội dung sau vào .tmux.conf của bạn:

bind R                                      \
    set -g renumber-windows on\;            \
    new-window\; kill-window\;              \
    set -g renumber-windows off\;           \
    display-message "Windows reordered..."

Nhấn [PREFIX] -R để sắp xếp lại các cửa sổ (hoặc thay đổi liên kết).

Tôi hiện đang chạy tmux 1.9a.

Ở trên có thể được thay thế bằng đơn giản hơn nhiều:

bind R                                      \
    move-window -r\;                        \
    display-message "Windows reordered..."

1
Điều này có khác với chạy "move-window -r" không?
PonyEars

2
Không có nó không phải là. Tôi chỉ không biết về tùy chọn -r cho cửa sổ di chuyển :) không bao giờ là quá muộn để tìm hiểu, thx!
Tin mừng

6

Các câu trả lời trước đây đều ổn, nhưng đây là một giải pháp ngắn gọn nếu tất cả những gì bạn muốn là trộn một số lượng nhỏ các cửa sổ bây giờ và một lần nữa.

move-window -t <number>

sẽ di chuyển cửa sổ hiện tại sang số cửa sổ mới (chưa được chiếm). Để hoán đổi hai cửa sổ, trước tiên bạn di chuyển một cửa sổ sang một số mới. ví dụ: hoán đổi cửa sổ 3 và 5:

move-window -s 3 -t 99
move-window -s 5 -t 3
move-window -s 99 -t 5

2

Nếu bạn chỉ cần cửa sổ để luôn đánh số lại khi bị giết, bạn có thể sử dụng điều này trong .tmux.conf:

set-option -g renumber-windows on
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.