ทำมิเรอร์บานหน้าต่างระหว่างสองหน้าต่าง


14

เป็นไปได้หรือไม่ที่จะมีบานหน้าต่างเดียวกันปรากฏในสองหน้าต่างที่แตกต่างกันของเซสชัน tmux เดียว?

ฉันมักจะมีการแบ่งแนวนอนเดียวในหน้าต่างหลักของฉันด้วยเป็นกลุ่มในบานหน้าต่างด้านบน (ประมาณ 80-90% ของความสูงของสถานี) และบรรทัดคำสั่งในบานหน้าต่างด้านล่างที่ฉันเรียกใช้โปรแกรมที่ฉันกำลังทำงานอยู่ เนื่องจากหน้าต่างด้านล่างมีขนาดเล็กมากฉันมักจะไม่เห็นข้อผิดพลาดในการแสดงผลและการใช้แป้นพิมพ์ลัดของ tmux เพื่อเลื่อนกลับมาน่าเบื่อ ฉันต้องการให้หน้าต่างที่สองของฉันแนบกับบานหน้าต่างเดียวกันเพื่อที่ว่าถ้าฉันต้องการดูผลลัพธ์ข้อผิดพลาดมากขึ้นฉันสามารถสลับไปที่หน้าต่างที่สองได้อย่างรวดเร็วโดยไม่จำเป็นต้องจัดการกับ scrollback เป็นไปได้ไหม

(ฉันเดาว่าทางเลือกหนึ่งจะใช้สิ่งที่ต้องการทีออฟเพื่อเขียน stdout ไปยังล็อกไฟล์และท้ายว่าในหน้าต่างที่สองของฉันฉันหวังว่ามันไม่จำเป็นเลย)

คำตอบ:


7

โดยค่าเริ่มต้นคุณสามารถสลับ "สถานะการซูม" ของบานหน้าต่างได้โดยกดPrefixและz(คำนำหน้าเริ่มต้นคือCtrl+B)

สิ่งนี้จะทำให้บานหน้าต่างปัจจุบัน (ตัวอย่างเช่นบานหน้าต่างบรรทัดคำสั่งของคุณ) ใช้ทั้งหน้าต่าง กดPrefixและzอีกครั้งเพื่อ "unzoom" บานหน้าต่าง


10

ฉันเกรงว่านี่เป็นหนึ่งในสิ่งที่คุณไม่สามารถทำได้tmux(ฉันคาดว่าปัญหาเกี่ยวกับบานหน้าต่างเดียวจะปรากฏในช่องว่างหลายขนาดที่แตกต่างกันเป็นเหตุผลหลัก) อย่างไรก็ตามมีหลายวิธีที่คุณสามารถแก้ไขได้ - ทั้งหมดขึ้นอยู่กับการผูกการกระทำบางอย่างกับชุดค่าผสมที่สำคัญบางอย่าง ตั้งแต่มากขึ้นอยู่กับรูปแบบที่คุณกำลังใช้มีเพียงรูปแบบที่เรียบง่ายด้วยสองบานหน้าต่างที่คุณกำลังกล่าวขวัญคือการทำให้ชีวิตของคุณมากง่ายขึ้น

  1. rotate-window - มันจะสลับบานหน้าต่างเพื่อให้คุณ 80% -90% สำหรับเอาต์พุตคำสั่ง (และหน้าต่างเล็ก ๆ สำหรับ ViM)

  2. break-pane เมื่อเทียบกับ join-pane -v -p <preview_percentage> -t !

  3. pipe-paneด้วยcommandการเปลี่ยนทิศทาง unbuffered ไปป์ที่มีชื่อ (เช่นโหนดระบบไฟล์ที่สร้างขึ้นด้วยmkfifo) - จากนั้นใช้tail -fท่อที่มีชื่อในบานหน้าต่างอื่น

  4. ไพพ์เอาต์พุตไปlessยังซึ่งมีโหมดติดตามที่tailมี (อย่างน้อย GNU หนึ่ง)

  5. resize-pane -Zบนแผงขนาดเล็กจะซูมเข้าที่เทอร์มินัลแบบเต็ม การยกเลิกการซูมครั้งต่อไปจะทำให้มันใช้งานได้ดังนั้นจึงจำเป็นต้องใช้เล่ห์เหลี่ยมเล็กน้อยเพื่อให้ทำงานได้อย่างสะดวกสบาย


2
BTW - "ฉันคาดหวังว่าปัญหาที่เกิดขึ้นกับหนึ่งบานหน้าต่างจะถูกแสดงในหลาย ๆ พื้นที่ที่มีขนาดแตกต่างกันเป็นเหตุผลหลัก" นั่นอาจเป็นปัจจัยในความซับซ้อนของการใช้มัน แต่ tmux สนับสนุนสิ่งเดียวกันที่ระดับหน้าต่าง การประชุมunix.stackexchange.com/questions/24274/... มันเพิ่มการเติมด้านล่างลงในหน้าต่างเล็ก ๆ การทำมิร์เรอร์บานหน้าต่างตามทฤษฎีสามารถทำได้ในลักษณะเดียวกัน
mahemoff

หืม ... คุณพูดถูกนั่นอาจเป็นหนทางที่จะไปเกี่ยวกับเรื่องนี้
เตอร์

1

คุณสามารถใช้สคริปต์เพื่อเอาท์พุทหลอกของคุณเซสชั่นไปยังไฟล์แล้วtailไฟล์นั้นในหน้าต่างที่สอง

ในบานหน้าต่างการทำงานของคุณ

script -f tailme.out

และในบานหน้าต่างการดูของคุณ

tail -f tailme.out

1

ฉันเห็นด้วยกับคนอื่น ๆ ว่าสำหรับกรณีของคุณPrefix+ zจะเป็นทางออกที่ตรงที่สุด แต่สำหรับคำถามทั่วไปของการทำมิเรอร์บานหน้าต่างมีแฮ็คที่สามารถใช้งานได้ - ซ้อนเซสชันหน้าจอใน tmux

ติดตั้งหน้าจอ gnu จากนั้นเริ่มต้นขึ้นสำหรับบานหน้าต่างที่คุณต้องการสะท้อน จากนั้นนำscreen -xไปแนบกับบานหน้าต่างอื่น ๆ

คุณยังสามารถซ้อนเซสชัน tmux อื่นในบานหน้าต่างได้หากคุณต้องการ แต่เซสชัน tmux ควรซ้อนอยู่ด้วยความระมัดระวัง

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