tmux - Chèn một cửa sổ ở một vị trí xác định


13

tmux có lệnh "move-window" mà bạn có thể di chuyển một cửa sổ đến một chỉ mục trống được chỉ định như vậy:

move-window -t 3

Tuy nhiên, nếu chỉ số 3 đã được sử dụng, bạn sẽ không thể di chuyển cửa sổ hiện tại của mình sang vị trí 3.

Tôi đang tìm kiếm một tùy chọn cho phép tôi di chuyển (chèn) cửa sổ của mình ở vị trí 3 ngay cả khi nó đã được sử dụng và sau đó tăng số cửa sổ cho các cửa sổ tiếp theo khác (ví dụ: cửa sổ ban đầu lúc 3 giờ sẽ là 4, sau đây sẽ là 5, v.v.)

tmux 

Câu trả lời:


2

Kịch bản dưới đây sẽ cho phép bạn làm những gì bạn muốn. Bạn có thể chạy nó từ dấu nhắc shell hoặc bạn có thể làm:

:run "ins-move 2 5"

Ví dụ đó di chuyển cửa sổ hai đến vị trí trước cửa sổ năm.

#!/bin/bash
for ((i=$1; i<$2-1; i++))
do
    tmux swap-window -s :$i -t :$((i+1))
done

Cảm ơn! Hoạt động tuyệt vời - mặc dù tôi sẽ phải điều chỉnh nó để hoạt động ngay cả đối với các trường hợp như "5 2". Ít nhất bây giờ tôi biết làm thế nào nó được thực hiện.

@Andrei: Tôi rất vui vì tôi đã có thể giúp bạn bắt đầu. Xin đừng quên đánh dấu các câu trả lời được chấp nhận và để nâng cao khi bạn cảm thấy nó phù hợp.
Tạm dừng cho đến khi có thông báo mới.

Tôi nêu lên câu trả lời của bạn ngay bây giờ. Không thể làm điều đó trước đây vì bây giờ tôi đã có đủ điểm danh tiếng.

25

Thử: new-window -a

sử dụng tùy chọn -a khi tạo cửa sổ mới có thể chèn cửa sổ mới vào chỉ mục tiếp theo, trong khi tất cả các chỉ mục của các cửa sổ tiếp theo khác sẽ tự động tăng.


Có vẻ như một giải pháp tốt hơn @DennisWilliamson, xin lỗi Dennis :-) Tôi đang chạy tmux 1.9a, có thể tính năng này không có sẵn trong các phiên bản trước.
Sonia Hamilton

Tuyệt vời. Không chắc làm thế nào tôi bỏ lỡ điều đó. Bạn đã cứu tôi từ 4 năm trước, người du hành thời gian! Cảm ơn!
Rld.

Không hoạt động nếu bạn muốn có một cửa sổ mới ở chỉ số 0.
nccc

1

Tôi đã có một giải pháp mà không cần kịch bản bên ngoài. Đặt nội dung sau vào .tmux.conf của bạn:

bind i command-prompt -p 'Insert window at:' 'run-shell "if tmux select-window -t %1; then tmux new-window -a; tmux swap-window -s %1 -t \$((%1+1)); else tmux new-window; tmux move-window -t %1; fi; tmux select-window -t #I; tmux select-window -t %1;"'

Nhấn [PREFIX] -i và cung cấp vị trí chèn mong muốn. 2 lệnh cửa sổ chọn cuối cùng đảm bảo cửa sổ 'trước' được đặt như mong đợi và bạn đi đến cửa sổ được chèn.

EDIT: ok, tôi đã nói quá sớm. Tôi đã phải thay đổi #Iđể #{window_id}vì chỉ số cửa sổ thay đổi cho một số cửa sổ trên chèn. Chức năng mới (có thêm dòng mới để dễ đọc):

bind i command-prompt -p 'Insert window at:' '      \
    run-shell "                                     \
        if tmux select-window -t %1; then           \
            tmux new-window -a;                     \
            tmux swap-window -s %1 -t \$((%1+1));   \
        else                                        \
            tmux new-window;                        \
            tmux move-window -t %1;                 \
        fi;                                         \
        tmux select-window -t #{window_id};         \
        tmux select-window -t %1;                   \
    "'                                               

Tôi bắt đầu sử dụng một phiên bản đơn giản hóa, thông qua 2 lệnh sau trong .tmux.conf:

 bind i command-prompt -p 'Insert window at:' 'new-window -a -t %1; swap-window -t -1'
 bind I command-prompt -p 'New window at:'    'new-window -t %1'

Tiền tố-i chèn một cửa sổ mới ở vị trí x khi cửa sổ x tồn tại và di chuyển các cửa sổ lên trên cửa sổ đó. Tiền tố-Tôi tạo một cửa sổ mới ở vị trí x khi cửa sổ x không tồn tại.

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.