ฉันมีวิธีแก้ปัญหาโดยไม่ต้องใช้สคริปต์ภายนอก วางสิ่งต่อไปนี้ใน. tmux.conf ของคุณ:
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;"'
กด [PREFIX] -i และระบุตำแหน่งที่ต้องการแทรก คำสั่ง select-window 2 อันสุดท้ายทำให้แน่ใจว่าหน้าต่าง 'ก่อนหน้า' ถูกตั้งค่าตามที่คาดไว้และคุณไปที่หน้าต่างแทรก
แก้ไข:ตกลงฉันพูดเร็วเกินไป ฉันต้องเปลี่ยน#I
เป็น#{window_id}
เพราะดัชนีหน้าต่างมีการเปลี่ยนแปลงสำหรับบางหน้าต่างในการแทรก ฟังก์ชั่นใหม่ (พร้อมเพิ่มบรรทัดใหม่เพื่อให้สามารถอ่านได้):
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; \
"'
ฉันเริ่มใช้เวอร์ชันที่เรียบง่ายผ่านคำสั่ง 2 ต่อไปนี้ใน. 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'
คำนำหน้า - ฉันแทรกหน้าต่างใหม่ที่ตำแหน่งxเมื่อมีหน้าต่างxและย้ายหน้าต่างไปไว้เหนือหน้าต่างนั้น คำนำหน้าฉันสร้างหน้าต่างใหม่ที่ตำแหน่งxเมื่อหน้าต่างxไม่อยู่