ทำไม tmux ตั้งค่าตัวแปร TERM เป็นหน้าจอ


19

อ้างถึงtmuxหน้าคน:

ตัวแปรสภาวะแวดล้อม TERM ต้องถูกตั้งค่าเป็น "หน้าจอ" สำหรับโปรแกรมทั้งหมดที่รันภายใน tmux หน้าต่างใหม่จะมีการเพิ่ม“ TERM = screen” ให้กับสภาพแวดล้อมโดยอัตโนมัติ แต่ต้องระมัดระวังไม่ให้รีเซ็ตไฟล์นี้ในไฟล์เริ่มต้นเชลล์

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

คำตอบ:


13

การทำเช่นนี้เพื่อใช้ประโยชน์จากคำอธิบายเทอร์มินัลที่ติดตั้งไว้ก่อนหน้านี้สำหรับหน้าจอ GNU

ทั้งtmuxและหน้าจอให้แอปพลิเคชั่น (มากหรือน้อย) คำอธิบายเทอร์มินัล "เดียวกัน" เพื่อให้การเชื่อมต่อจากเทอร์มินัลต่างๆง่ายขึ้น โปรแกรม tmux และหน้าจอควรจะจัดการความแตกต่างระหว่างภายใน (หน้าจอ = TERM) และภายนอก (xterm, linux, ฯลฯ ) ดังนั้นscreenคำอธิบายเทอร์มินัลจึงได้รับการติดตั้ง "ทุกที่" (โดยปกติจะเป็น ncurses)

มีความแตกต่างบางประการ:

  • หน้าจอ GNU มีปัญหาที่เก่ามากซึ่งแสดงถึงคุณสมบัติ "ยอดเยี่ยม" (ซึ่งทางเทคนิคไม่ใช่คุณสมบัติเฉพาะของเทอร์มินัล แต่เป็นสิ่งที่เป็นนามธรรม tmux ไม่มีข้อ จำกัด แต่TERM = tmux ที่ได้รับการปรับปรุงไม่จำเป็นต้องเป็น "ทุกที่"
  • หน้าจอ GNU มีคุณสมบัติสำหรับใช้คำอธิบายเทอร์มินัลไฮบริด กำหนด TERM = xterm ภายนอกและการมีอยู่ของ "screen.xterm" มันจะเลือกสำหรับค่า TERM ภายใน (ดูตัวอย่างฐานข้อมูลเทอร์มินัล ) tmux ไม่ทำเช่นนั้น

5

ในฐานะของtmux 2.1คุณสามารถใช้tmux terminfo :

'default-terminal' เป็นตัวเลือกเซสชัน นอกจากนี้หากตั้งค่าเป็น 'screen- *' จากนั้นเลียนแบบหน้าจอที่ทำ หากต้องการตัวเอียงสามารถตั้งค่านี้เป็น 'tmux' แต่นี่ยังใหม่และไม่จำเป็นต้องรองรับในทุกแพลตฟอร์มที่ติดตั้ง ncurses รุ่นเก่ากว่า

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