มีวิธีใช้mosh
โดยไม่ยอมแพ้ scrollback ท้องถิ่นหรือไม่
โดยทั่วไปแล้วในบางกรณีการใช้ IP โรมมิ่งมีประโยชน์และจำเป็นจริงๆ แต่การจำลองเทอร์มินัลพิเศษและการคาดการณ์คีย์ดูเหมือนว่าจะกำจัดเฉพาะบรรทัดบัฟเฟอร์ scrollback โลคัลและประวัติเซสชันเท่านั้น
มีวิธีใช้mosh
โดยไม่ยอมแพ้ scrollback ท้องถิ่นหรือไม่
โดยทั่วไปแล้วในบางกรณีการใช้ IP โรมมิ่งมีประโยชน์และจำเป็นจริงๆ แต่การจำลองเทอร์มินัลพิเศษและการคาดการณ์คีย์ดูเหมือนว่าจะกำจัดเฉพาะบรรทัดบัฟเฟอร์ scrollback โลคัลและประวัติเซสชันเท่านั้น
คำตอบ:
ฟีลิปโป Valsorda มีวิธีการแก้ปัญหาสำหรับ OS X ที่ประกอบด้วย iTerm 2 tmux และร็อก
โซลูชันของเขาใช้หน้าต่าง / แท็บเดียวเพื่อเชื่อมต่อกับเชลล์ระยะไกล เชลล์ยังคงมีการยกเลิกการเชื่อมต่อ (เช่นความล้มเหลวในการเชื่อมต่อการเปลี่ยนแปลง IP รีบูตเครื่องแล็ปท็อป) และรองรับการเลื่อนกลับด้วยทัชแพดคัดลอกและสี
Caveats คือคุณต้องสร้าง mosh จากแหล่งที่มาการเลื่อนนั้นลื่นไหลน้อยกว่า native และการคลิกลากถูกถ่ายทอดดังนั้นคุณต้องกด Option เพื่อเลือก
ในการตั้งค่าโปรไฟล์สถานีเปิดใช้การรายงานเมาส์ xtermและกำหนดประเภทรายงาน Terminal เพื่อxterm-256color
ตั้งค่า~/.tmux.conf
บนเซิร์ฟเวอร์ต่อไปนี้ ด้วยการตั้งค่าเหล่านี้หากคุณพยายามแนบและไม่มีเซสชันการสร้างใหม่จะถูกสร้างขึ้น การตั้งค่ายังเปิดใช้งานการโต้ตอบของเมาส์ (และการเลื่อนทัชแพด)
new-session
set-window-option -g mode-mouse on
set -g history-limit 30000
หมายเหตุ: ใน tmux ล่าสุด (เช่น> 2.1) ตามที่รายงานโดยtmux -V
ตัวเลือกเมาส์ต่างๆ (mouse-resize-pane, mouse-mode, etc. ) ได้ถูกเขียนใหม่เป็นตัวเลือกเดียวmouse
ดังนั้นคุณต้องเปลี่ยนบรรทัดที่สอง ด้านบนเพื่อ set-window-option -g
เมาส์on
แทน
เลื่อนเมาส์นี้จะทำงานเมื่อคุณอยู่ในโหมดเลื่อนแป้นพิมพ์ (เช่นCtrl- bแล้ว[) อธิบายไว้ในบทความวิธีการเลื่อนใน tmux
โครงสร้างที่มั่นคงของ mosh เก่าและไม่สนับสนุนการรายงานเมาส์ (และการเลื่อนทัชแพด) หากต้องการติดตั้งเวอร์ชันล่าสุดให้ทำดังต่อไปนี้:
OS X (ลูกค้าของคุณ)
brew install --HEAD mobile-shell
Linux / UNIX (เซิร์ฟเวอร์)
git clone https://github.com/keithw/mosh.git
cd mosh/
sudo apt-get build-dep mosh
./autogen.sh && ./configure && make
sudo make install
ตอนนี้เพื่อเชื่อมต่อเพียงพิมพ์ต่อไปนี้:
mosh HOST -- tmux a
เทอร์มินัลอีมูเลชั่นถูกอบลึกเข้าไปในการออกแบบของmoshดังนั้นไม่ Mosh ทำงานโดยให้ทั้งลูกค้าและเซิร์ฟเวอร์รักษาความคิดในพื้นที่ว่าหน้าจอ "ดูเหมือน" ในปัจจุบันและต้องการให้เซิร์ฟเวอร์ทำการจำลองเทอร์มินัล นี่คือวิธีที่ไคลเอ็นต์สามารถรีเฟรชเนื้อหาของหน้าจอหลังจากที่มันหายไปครู่หนึ่งและสูญเสียข้อมูลบางส่วน
ฉันคิดว่าแอปพลิเคชันที่มีคุณสมบัติการโรมมิ่ง IP ของ mosh แต่ไม่มีเทอร์มินัลอีมูเลชั่นจะกลายเป็นแอปพลิเคชั่นที่แตกต่างกัน (แต่ง่ายกว่า) สำหรับแอปพลิเคชันดังกล่าวการสูญหายของข้อมูล (รวมถึงเมื่อลูกค้าไม่ได้ใช้งานเน็ตสักระยะหนึ่ง) จะส่งผลให้เนื้อหาหน้าจอสูญหายหรือเสียหาย นี่เป็นข้อ จำกัด ที่ยอมรับได้หากผู้ใช้กำลังใช้งานแอปพลิเคชันที่ไม่สำคัญมาก (เช่นเชลล์) หรือแอปพลิเคชันที่มีคุณสมบัติการทาสี (เช่นvi
ใช้ Control-L)
ผู้พัฒนาระบบของ Mosh กำลังวางแผนสนับสนุนการเลื่อนกลับในแอปพลิเคชันเพื่อชดเชยข้อเท็จจริงที่ว่าเครื่องปลายทางของคุณไม่สามารถทำได้อีกต่อไป ฉันเดาว่ามันจะต้องทำงานเหมือนscreen
buffer scrollback เล็กน้อย: ควบคุมโดยการกดแป้นพิมพ์ไม่ใช่แถบเลื่อนและเมาส์
Eternal Terminal ( https://mistertea.github.io/EternalTerminal/ ) เป็นอีกทางเลือกหนึ่งสำหรับ Mosh ที่รองรับการเลื่อนแบบดั้งเดิมและยังอนุญาตการโรมมิ่ง IP ET ไม่ได้ทำการคาดคะเนการพิมพ์ดังนั้นมันอาจไม่เหมาะสมหากคุณมีการเชื่อมต่อที่มีความหน่วงสูง (ถ้าคุณกำลังส่งเสียงหึ่งๆหรือจากโทรศัพท์มือถือ) แต่ส่วนตัว ET ทำทุกอย่างที่ฉันต้องการและรองรับ scrollback
การยกเลิกการเลือก "เลื่อนหน้าจอทางเลือก" ใน Terminal-> Preferences-> Profiles-> Keyboard แก้ไขให้ฉัน