Tmux: ฉันจะเชื่อมโยงหน้าต่างเป็นหน้าต่างแบบแยกได้อย่างไร


33

ฉันจะคว้าหน้าต่างจากเซสชัน tmux ที่แตกต่างกันโดยสิ้นเชิงและแนบเป็นตัวแยกแนวนอน / แนวตั้งกับหน้าต่างปัจจุบันได้อย่างไร

คำตอบ:


45

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

นี่คือตัวอย่าง สมมติว่าคุณอยู่ในเซสชั่น 0, หน้าต่าง 4 และในเซสชั่น 2 ที่คุณต้องการบานหน้าต่างของ 3 หน้าต่าง 1 ในพร้อมท์ tmux ( ctrl+b :โดยค่าเริ่มต้น)

join-pane -s 2:3.1

สิ่งนี้จะย้ายบานหน้าต่าง 1 จากหน้าต่าง 3, เซสชัน 2 (-s เป็นหน้าต่างต้นฉบับและใช้รูปแบบเซสชัน: window.pane) ไปยังเซสชันปัจจุบันของคุณ (เซสชัน 0)

ด้านล่างนี้เป็นเอกสารฉบับเต็มสำหรับเข้าร่วมบานหน้าต่างซึ่งคุณสามารถรับได้จากหน้า man ของ tmux ส่วนที่สับสนที่สุดสำหรับฉันที่อ่านเอกสารนั้นคือการหารูปแบบที่คาดไว้สำหรับ src-pane ที่ระบุเซสชันหมายเลขหน้าต่างและบานหน้าต่าง ( session:window.paneตามตัวอย่างด้านบน) คุณยังสามารถตั้งชื่อเซสชันและหน้าต่างของคุณและใช้ชื่อเหล่านั้นแทนหมายเลขดัชนี

 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.

9
ฉันสามารถคัดลอกบานหน้าต่างแทนที่จะย้ายได้หรือไม่
pielgrzym

@pielgrzym ฉันชอบที่จะรู้คำตอบเช่นกัน โปรดโพสต์ไว้ที่นี่หากคุณพบ
Bruno Bronosky

ฉันคิดว่า OP กำลังมองหาบางอย่างที่มากกว่าลิงก์ลิงก์ซึ่งน่าเสียดายที่ไม่มีอยู่จริง เห็นได้ชัดว่าพฤติกรรมที่ร้องขอสามารถเลียนแบบได้โดยใช้ซ็อกเก็ต tmux ที่ซ้อนกันตามที่อธิบายไว้ที่นี่: superuser.com/a/323658
elig

16

หากคุณพยายามที่จะเข้าร่วมบานหน้าต่างจากภายในเซสชั่นเดียวกันคุณจะต้องละเว้น "เซสชั่น:" จากคำสั่ง สิ่งนี้จะล้มเหลว ดูเหมือนว่าสวิตช์ -s และ -t เพื่อเข้าร่วมบานหน้าต่างยอมรับอาร์กิวเมนต์ในรูปแบบของ [เซสชัน]: window [.pane] แทน [เซสชัน:] หน้าต่าง [.pane]

กล่าวคือเซสชันเป็นทางเลือกและ: เป็นสิ่งจำเป็น นี่มันโง่ มันจะเท่ากับเบราว์เซอร์ที่ต้องการhttp://google.com:/เป็นรุ่นทางลัดของhttp://google.com:80/และให้ข้อผิดพลาดกับhttp://google.com/ o_O

ตั้งแต่ ctrl-b! แบ่งบานหน้าต่างปัจจุบันออกเป็นหน้าต่างแยกต่างหาก (ซึ่งตรงข้ามกับสิ่งที่เราต้องการทำ) และ ctrl-b @ (ซึ่งอยู่ด้านข้าง!) ถูกยกเลิกการตั้งค่าตามค่าเริ่มต้น (หมายความว่าคุณไม่ได้เขียนทับอะไร) ฉันแนะนำให้สร้างทางลัดนี้ ...

bind-key @ command-prompt -p "create pane from:"  "join-pane -s ':%%'"

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