การจัดเรียงหมายเลขหน้าต่างใหม่ใน tmux


128

ฉันมักจะจบลงด้วยหน้าต่างมากกว่าสิบใน tmux ต่อมาฉันปิดบางอันที่เก่ากว่าของฉัน มีวิธีการเปลี่ยนหมายเลขพูดหน้าต่าง 15 ไปที่หน้าต่าง 3 (ซึ่งไม่มีอยู่อีกต่อไป) หรือไม่ หรือpackพวกเขาทั้งหมดขึ้นอีกครั้งเพื่อให้ไม่มีช่องว่างเปล่า? Ctrl+B, 15ฉันต้องการที่จะทำเช่นนี้เพราะมันเป็นเรื่องยากที่จะข้ามไปยังหน้าต่างเลขที่สูงขึ้นเพราะคุณไม่สามารถทำ ฉันต้องใช้Ctrl+B, wเพื่อแสดงรายการหน้าต่างจากนั้นพิมพ์ตัวอักษรที่สอดคล้องกับหน้าต่างที่ฉันต้องการเปิด

ฉันรู้ว่าฉันสามารถสลับหน้าต่างได้ ตัวอย่างเช่นฉันสามารถสร้างหน้าต่างใหม่ ( Ctrl+B, c) ซึ่งจะเปิดในช่องว่าง 3 ฉันสามารถเปิดswapwหน้าต่าง 15 และหน้าต่าง 3 จากนั้นปิดหน้าต่าง 15 เห็นได้ชัดว่านี่เป็นวิธีที่น่าเบื่อ

คุณจัดการ windows จำนวนมากใน tmux ได้อย่างไร?

คำตอบ:


123

ดูเหมือนว่าคุณต้องการสิ่งนี้:

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.

การโทรmovewโดยไม่มีพารามิเตอร์จะย้ายหน้าต่างปัจจุบันไปยังตำแหน่งว่างแรก movew -rจะกำหนดหมายเลขหน้าต่างใหม่ทั้งหมดในครั้งเดียว


5
สำหรับผู้ที่ต้องการคำแนะนำที่ชัดเจนยิ่งขึ้นให้ctrl b :ป้อนmove-window -r(ซึ่งctrl bเป็นรหัสคำนำหน้าเริ่มต้น)
ทำเครื่องหมาย

92

tmux 1.7 มีคุณสมบัติสองอย่างที่สามารถช่วยสร้างและรักษาหมายเลขหน้าต่างแบบไม่มีช่องว่าง / แบบบรรจุ:

  • move-windowคำสั่งได้เรียนรู้ใหม่-rตัวเลือกที่จะจัดลำดับหน้าต่างทั้งหมดที่อยู่ในเซสชั่น (ทั้งเซสชันปัจจุบันหรือหนึ่งที่ระบุไว้กับ-tตัวเลือก)

    หากคุณมีชุดของหน้าต่างเช่น {1: A, 4: B, 15: C} แล้วคุณสามารถเรียกใช้move-window -rในการจัดลำดับให้พวกเขา {1: A, 2: B, 3: C} (พวกเขาจะเริ่มต้นด้วยคุณbase-index; 1 ในตัวอย่างนี้)

  • เมื่อrenumber-windowsเปิดใช้งานตัวเลือกเซสชันtmuxจะกำหนดหมายเลขหน้าต่างของเซสชันใหม่โดยอัตโนมัติ (เหมือนกับmove-window -r) หลังจากปิดหน้าต่างใด ๆ

    หากคุณชอบพฤติกรรมนี้คุณสามารถเปิดใช้งานในค่าโกลบอลเพื่อให้เซสชันทั้งหมดที่ไม่ลบล้างมันจะเปิดใช้งานโดยอัตโนมัติ:

    set-option -g renumber-windows on
    

4
ที่สุด! ฉันค้นหาrenumber-windowsตัวเลือกนี้มานานแล้ว! bugged ฉันเสมอว่ามีหน้าต่างใหม่เปิดอยู่ที่ "ซ้าย" เพราะฉันปิดไปก่อน
Ory Band

15

ฉันมักจะพบว่าตัวเองอยู่ในสถานการณ์ที่ฉันมีช่องว่างระหว่างหมายเลขหน้าต่างเช่นเซสชันที่มี windows:

1 3 4 8 9 13

ฉันเขียนสคริปต์ tmux เพื่อจัดลำดับใหม่โดยไม่เปลี่ยนลำดับที่เกี่ยวข้องหรือเปิดใช้งานตัวเลือก 'การกำหนดหมายเลข - หน้าต่าง' ผลลัพธ์:

1 2 3 4 5 6

วางสิ่งต่อไปนี้ใน. tmux.conf ของคุณ:

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

กดปุ่ม [PREFIX] -R เพื่อเรียงลำดับหน้าต่างใหม่ (หรือเปลี่ยนการโยง)

ฉันกำลังเรียกใช้ tmux 1.9a

ข้างต้นสามารถถูกแทนที่ด้วยง่ายกว่ามาก:

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

1
สิ่งนี้แตกต่างจากการใช้ "move-window -r" หรือไม่?
PonyEars

2
ไม่มันไม่ใช่. ฉันไม่รู้เกี่ยวกับตัวเลือก -r เพื่อย้ายหน้าต่าง :) ไม่เคยสายเกินไปที่จะเรียนรู้ขอบคุณ!
พระวรสารนักบุญ

6

คำตอบก่อนหน้านั้นใช้ได้ทั้งหมด แต่นี่เป็นคำตอบที่กระชับถ้าคุณต้องการที่จะสลับหน้าต่างเล็ก ๆ น้อย ๆ เป็นครั้งคราว

move-window -t <number>

จะย้ายหน้าต่างปัจจุบันไปยังหมายเลขหน้าต่างใหม่ (ซึ่งจะต้องไม่ถูกครอบครอง) ในการสลับสองหน้าต่างคุณย้ายหนึ่งหน้าต่างไปที่หมายเลขใหม่ชั่วคราว เช่นเพื่อสลับ windows 3 และ 5:

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

2

หากคุณต้องการ windows เพื่อกำหนดหมายเลขใหม่ตลอดเวลาเมื่อหน้าต่างถูกฆ่าคุณสามารถใช้ใน.tmux.conf:

set-option -g renumber-windows on
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.