ฉันจะย้ายบานหน้าต่างที่มีอยู่ไปยังหน้าต่างอื่นในtmux ได้อย่างไรเมื่อฉันมีหลายหน้าต่างและในทางกลับกัน
ฉันมาจากหน้าจอที่ฉันสามารถสลับไปที่บานหน้าต่างแล้วสลับหน้าต่างจนกว่าฉันจะไปที่ที่ฉันต้องการ; tmuxดูเหมือนจะไม่อนุญาตสิ่งนี้
ฉันจะย้ายบานหน้าต่างที่มีอยู่ไปยังหน้าต่างอื่นในtmux ได้อย่างไรเมื่อฉันมีหลายหน้าต่างและในทางกลับกัน
ฉันมาจากหน้าจอที่ฉันสามารถสลับไปที่บานหน้าต่างแล้วสลับหน้าต่างจนกว่าฉันจะไปที่ที่ฉันต้องการ; tmuxดูเหมือนจะไม่อนุญาตสิ่งนี้
คำตอบ:
คำสั่งในการทำเช่นนี้อยู่join-pane
ใน tmux 1.4
join-pane [-dhv] [-l size | -p percentage] [-s src-pane] [-t dst-pane] (alias: joinp) Like split-window, but instead of splitting dst-pane and creating a new pane, split it and move src-pane into the space. This can be used to reverse break-pane.
เพื่อลดความซับซ้อนนี้ฉันมีการผูกเหล่านี้ในของฉัน.tmux.conf
สำหรับที่:
# pane movement
bind-key j command-prompt -p "join pane from:" "join-pane -s '%%'"
bind-key s command-prompt -p "send pane to:" "join-pane -t '%%'"
ครั้งแรกคว้าบานหน้าต่างจากหน้าต่างเป้าหมายและเข้าร่วมกับปัจจุบันที่สองจะย้อนกลับ
จากนั้นคุณสามารถรีโหลดเซสชัน tmux ของคุณโดยรันสิ่งต่อไปนี้จากภายในเซสชัน:
$ tmux source-file ~/.tmux.conf
Prefix+s
และป้อนชื่อหน้าต่างที่พรอมต์เพื่อส่งบานหน้าต่างไปที่หน้าต่างนั้น ...
เข้าร่วมบานหน้าต่างคือคำตอบ ฉันก็มีปัญหากับความพยายามของฉันที่จะใช้มันตามเอกสารประกอบ tmux ฉันค้นพบว่าสวิตช์ -t และ -s ดูเหมือนจะยอมรับหน้าต่าง [เซสชัน]: ไม่ใช่หน้าต่าง [เซสชัน:] กล่าวคือการระบุเซสชันเป็นทางเลือก แต่รวมถึง: เป็นข้อบังคับ (ฉันใช้ tmux 1.5)
ดังนั้นเพื่อที่จะเพิ่มบานหน้าต่างไปที่หน้าต่างปัจจุบันและวางหน้าต่างที่ 1 ลงในบานหน้าต่างคำสั่งจะเป็น (Ctrl-B หรือสิ่งที่คุณผูกกุญแจคือตามด้วย) ...
:join-pane -s :1
จากนั้นคุณสามารถแยกพวกเขาด้วย appart-break ซึ่งโดยค่าเริ่มต้นคือ: Ctrl-B! หากคุณต้องการผูกมันไว้กับทางลัดฉันไม่แนะนำให้ใช้การแทนที่ค่าเริ่มต้นเช่น s เพราะคุณจะมองหาคำตอบที่เกี่ยวข้องกับการเลือกเซสชันและอินเทอร์เน็ตจะไม่ทำงานบนระบบของคุณ ขอให้สังเกตว่าการทำลายบานหน้าต่างถูกผูกไว้กับ! และ @ อยู่ติดกับมันและไม่ผูกติดกับสิ่งใดโดยปริยาย ด้วยเหตุนี้ฉันขอแนะนำการผูกนี้ ...
bind-key @ command-prompt -p "create pane from:" "join-pane -s ':%%'"
อีกวิธีหนึ่งคือมีตัวเลือกเชิงโต้ตอบ ...
bind-key @ choose-window 'join-pane -h -s "%%"'
อีกทางหนึ่งเพื่อเข้าร่วมหน้าต่างที่เข้าชมล่าสุดเสมอ ...
bind-key @ join-pane -h -s !
หมายเหตุ: -h
สาเหตุที่ทำให้กองซ้อนบานหน้าต่างในแนวนอน (แยกเป็นแนวตั้ง) ซึ่งตรงข้ามกับลักษณะการทำงานเริ่มต้นซึ่งเป็นสิ่งที่ตรงกันข้าม
สิ่งที่สำคัญที่สุดคือการเรียนรู้ของคุณสิ่งที่คุณเลือกที่จะทางลัด เพราะถ้าคุณเพิ่งตั้งค่าและลืมมันคุณจะได้รับการ gimped เมื่อคุณพบว่าตัวเองอยู่บนเซิร์ฟเวอร์ต่างประเทศ สิ่งที่สำคัญที่สุดที่เทอร์มินัลมัลติเพล็กเซอร์ให้คุณคือเซสชันที่เชื่อถือได้บนเซิร์ฟเวอร์ระยะไกล
สิ่งนี้เสร็จสิ้นการแปลงของฉันจากหน้าจอ GNU เป็น Tmux ฉันจะไม่หันหลังกลับ
สนุก!
window.pane
ยกตัวอย่างเช่นjoin-pane -s 1.0
ย้ายบานหน้าต่าง 0 ในหน้าต่าง 1 ลงในหน้าต่างปัจจุบัน รายละเอียดเพิ่มเติมที่maciej.lasyk.info/2014/Nov/19/tmux-join-pane
:
เห็นได้ชัดไม่จำเป็นอีกต่อไป (เช่นทำ:join-pane -s 1
) อาจเป็นข้อผิดพลาดในรุ่นก่อนหน้า
ฉันคิดว่าฉันชอบสิ่งที่ฉันใช้ในการย้ายบานหน้าต่างไปที่หน้าต่างของตัวเองดีขึ้น ฉันใช้
break-pane -t :
ฉันคิดออกมาจากการทดลอง แต่ดูเหมือนว่าจะทำงานได้ดีมาก คุณสามารถผูกหรือนามแฝงได้อย่างง่ายดายโดยไม่ต้องใช้สคริปต์
join-pane
ฉันมักจะใช้นี้มากบ่อยกว่า
หากคุณไม่ต้องการพิมพ์ตัวระบุบานหน้าต่างลงในพรอมต์คุณสามารถใช้
bind-key j "join-pane -s !"
ซึ่งจะเข้าร่วมบานหน้าต่าง / หน้าต่างที่ใช้งานล่าสุดกับหน้าต่างปัจจุบัน
unknown command: join-pane -s !
1.6
bind-key j join-pane -s !
หลังจากดูคำตอบอื่น ๆ และอ่านหน้า man ของ tmux ฉันได้ตัดสินการเชื่อมโยงต่อไปนี้:
bind-key S choose-window 'join-pane -v -s "%%"'
bind-key V choose-window 'join-pane -h -s "%%"'
สิ่งนี้จะช่วยให้คุณเลือกหน้าต่างที่จะเข้าร่วมและสะท้อนตัวพิมพ์เล็กของฉันs
/ v
การโยงเพื่อสร้างการแยกแนวตั้ง / แนวนอนใหม่ หากใครรู้วิธีเลือกบานหน้าต่างแยกแต่ละบานแทนหน้าต่างแจ้งให้เราทราบ
-v
และ-h
อย่าสร้าง "แยก" ในแนวตั้งและแนวนอนตามลำดับ พวกเขาสร้าง " บานหน้าต่างซ้อน " แนวตั้งและแนวนอนตามลำดับ (กล่าวคือบานหน้าต่างที่เรียงซ้อนในแนวตั้งมีการแบ่งในแนวนอน) ดังนั้นคุณต้องฝึกสมองของคุณด้วยวิธีนี้ นอกจากนี้ยัง-v
เป็นค่าเริ่มต้นดังนั้นฉันจะปล่อยมันไว้และใส่เข้าไปเท่านั้น-h
เพื่อให้~/.tmux.conf
การกระทำของคุณเป็นแผ่นโกงให้คุณดู
โดยค่าเริ่มต้นCtrl+ b, !จะทำลายบานหน้าต่างที่ใช้งานอยู่ในหน้าต่างใหม่และสลับไปที่
ไหนCtrl+ bเป็นค่าเริ่มต้นคำนำหน้าสำหรับtmux
tmux
คำสั่งนี้ดำเนินการที่สำคัญคือbreak-pane
(นามแฝง: breakp
) ในขณะที่การดำเนินการในcmd-break-pane.c
และผูกพันเป็นค่าเริ่มต้นในคีย์ bindings.cเท่าที่เห็นในlist-keys
(นามแฝง: lsk
) ออกคำสั่ง:
bind-key -T prefix ! break-pane
คุณไม่จำเป็นต้องเปลี่ยนการเชื่อมโยงที่สำคัญของคุณ
ขณะที่บานหน้าต่างที่คุณต้องการที่จะย้ายมีโฟกัสชนิดคำนำหน้าแล้ว:join-pane -t :1
ซึ่ง1
เป็นสิ่งที่จำนวนหน้าต่างปลายทางที่อยู่ในเซสชั่นเดียวกัน คุณสามารถย้ายไปอีกวาระหนึ่งโดย prepending project:3
ชื่อเหมือน สำหรับผมแท็บเติมข้อความอัตโนมัติจากjoin-pane
j
เพิ่ม-h
หรือ-v
เปลี่ยนเป็นคำสั่งเพื่อกำหนดทิศทางของการแยกใหม่ที่สร้างขึ้นในปลายทางหรือเพียงแค่ไปที่มันและPrefix + spaceเพื่อจัดเรียงใหม่