ความแตกต่างระหว่างตัวเลือก tmux และ shell split บน iTerm2?


8

ขณะนี้ฉันเปลี่ยนเป็น iTerm2 + VIM สำหรับสภาพแวดล้อมการพัฒนาของฉัน ฉันสังเกตว่าเวอร์ชั่นล่าสุดของ iTerm2 รองรับtmuxและมีคนใช้tmuxแบ่งหน้าต่างออกเป็นหลายครั้ง ฉันยังสังเกตเห็นว่า iTerm2 มีตัวเลือกนอกกรอบเพื่อแยกหน้าต่างออกเป็นหลายเซสชัน คุณสามารถแบ่งเซสชันได้มากเท่าที่คุณต้องการในแนวตั้งและแนวนอนโดยใช้เพียง CMD + D ดังนั้นสำหรับฉันดูเหมือนว่าคุณสามารถใช้งานฟังก์ชันเดียวกันได้ด้วยตัวเลือกเหล่านั้น ฉันอาจผิดทั้งหมด

คำถามของฉันคือ: มีความแตกต่าง / ประโยชน์โดยใช้tmuxตัวเลือกการแยกบน iTerm2 หรือไม่

คำตอบ:


9

หากคุณปิด iterm2 แล้วเชลล์ที่ติดกับอินสแตนซ์ของ iterm2 นั้นจะถูกทำลาย / ปิดเช่นกัน กระบวนการลำดับชั้นของสถานการณ์นี้:

iterm2
  +---- shell
  +---- shell
  +---- shell

หากคุณปิด iterm2 ซึ่งเก็บtmuxดังนั้นtmuxและเชลล์ภายในอินสแตนซ์tmuxนั้นยังคงรันอยู่ คุณสามารถติดตั้งอินสแตนซ์tmuxนั้นอีกครั้ง (นั่นคือวิธีที่คนทำงานบนเซิร์ฟเวอร์ระยะไกลในกรณีที่การเชื่อมต่อลดลง) และกลับสู่สถานการณ์เหมือนเดิมก่อนที่คุณจะปิด iterm2 ลำดับชั้นกระบวนการของสถานการณ์นี้:

iterm2
  +---- tmux
          +---- shell
          +---- shell
          +---- shell

พูดจากtmuxโดยตรง:

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

โครงการรุ่นเก่าที่มีฟังก์ชั่นการทำงานเหมือนกันคือหน้าจอ


ขอบคุณอากิระ! นั่นเป็นคำถามแรกของฉันใน SU และได้รับคำตอบที่ดีเพียงแค่สิ่งที่ฉันต้องการ!
wonitta

ลำดับชั้นของกระบวนการไม่เหมือนกับ: iterm2 > shell > tmux clientและtmux server > shellใช่ไหม ดังนั้นเมื่อคุณปิด iTerm คุณจะปิดไคลเอนต์ tmux แต่เซิร์ฟเวอร์ยังอยู่
Henrik N

@HenrikN: iTerm2 อาจเรียก tmux-client "โดยตรง" คุณจะได้รับผลกระทบเดียวกันหากคุณเปิด "exec tmux Attach" หรือสิ่งที่คล้ายกัน และใช่ tmux ประกอบด้วย 2 ส่วน แต่ความแตกต่างนั้นไม่ได้ปรับปรุงความเข้าใจว่าทำไมการแยก iterm2 จึงแตกต่างจาก tmux-splitting ใช่ไหม
akira

@akira ฉันแค่ต้องการล้างมันเพราะคุณวาง tmux ไว้ใต้ iTerm ซึ่งอาจทำให้ยากที่จะดูว่า tmux ยังมีชีวิตอยู่เมื่อกระบวนการ iTerm สิ้นสุดลง สำหรับฉันวิธีที่ดีที่สุดในการทำความเข้าใจคือการตระหนักว่าเซิร์ฟเวอร์ tmux นั้นไม่ขึ้นกับ iTerm (แต่ไคลเอนต์ไม่ใช่) แต่แน่นอนความจริงที่ว่า tmux และไม่ใช่ iterm เป็นเจ้าของ shell shells เป็นประเด็นสำคัญ
Henrik N

2

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


1

นอกจากนี้ยังมีเครื่องมือที่เรียกว่าiTermocilซึ่งนำการทำงานของการวางเลย์เอาต์ของหน้าต่างและบานหน้าต่างและเรียกใช้คำสั่งที่กำหนดค่าไว้ล่วงหน้าไปยัง iTerm

คำเตือน: ฉันเป็นผู้เขียนเครื่องมือนี้ (สำหรับฟังก์ชั่นที่แน่นอนที่อธิบายไว้ในคำถาม)

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