ใช้ Mosh โดยไม่ยอมแพ้ scrollback / ประวัติ


62

มีวิธีใช้moshโดยไม่ยอมแพ้ scrollback ท้องถิ่นหรือไม่

โดยทั่วไปแล้วในบางกรณีการใช้ IP โรมมิ่งมีประโยชน์และจำเป็นจริงๆ แต่การจำลองเทอร์มินัลพิเศษและการคาดการณ์คีย์ดูเหมือนว่าจะกำจัดเฉพาะบรรทัดบัฟเฟอร์ scrollback โลคัลและประวัติเซสชันเท่านั้น


2
ซ้ำเป็นไปได้ของร็อก: เก็บ backscroll เกินกว่าความสูงของหน้าต่าง
ทิโมธีมาร์ติน

คำตอบ:


42

ฟีลิปโป Valsorda มีวิธีการแก้ปัญหาสำหรับ OS X ที่ประกอบด้วย iTerm 2 tmux และร็อก

โซลูชันของเขาใช้หน้าต่าง / แท็บเดียวเพื่อเชื่อมต่อกับเชลล์ระยะไกล เชลล์ยังคงมีการยกเลิกการเชื่อมต่อ (เช่นความล้มเหลวในการเชื่อมต่อการเปลี่ยนแปลง IP รีบูตเครื่องแล็ปท็อป) และรองรับการเลื่อนกลับด้วยทัชแพดคัดลอกและสี

Caveats คือคุณต้องสร้าง mosh จากแหล่งที่มาการเลื่อนนั้นลื่นไหลน้อยกว่า native และการคลิกลากถูกถ่ายทอดดังนั้นคุณต้องกด Option เพื่อเลือก

  • iTerm

    ในการตั้งค่าโปรไฟล์สถานีเปิดใช้การรายงานเมาส์ xtermและกำหนดประเภทรายงาน Terminal เพื่อxterm-256color

  • tmux

    ตั้งค่า~/.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

5
ถือว่าเป็นรูปแบบที่ดีในการวางข้อมูลสำคัญจากลิงค์ในบรรทัด
HalosGhost

2
แม้ว่าคำตอบนี้ถูกลดลงเนื่องจากเหตุผลทางเทคนิค แต่อาจเป็นวิธีที่ดีที่สุด (เท่านั้น?) ในการรับ scrollback ที่ดีสำหรับลูกค้าในพื้นที่โดยใช้ Mosh
jayhendren

@jayhendren: หรือคุณสามารถใช้Eternal Terminalได้
Dan Dascalescu

ไม่จำเป็นต้องวางตัว ความคิดเห็นของฉันมาจากปี 2014 การเปิดตัวครั้งแรกของ Eternal Terminal คือในปี 2017
jayhendren

15

เทอร์มินัลอีมูเลชั่นถูกอบลึกเข้าไปในการออกแบบของmoshดังนั้นไม่ Mosh ทำงานโดยให้ทั้งลูกค้าและเซิร์ฟเวอร์รักษาความคิดในพื้นที่ว่าหน้าจอ "ดูเหมือน" ในปัจจุบันและต้องการให้เซิร์ฟเวอร์ทำการจำลองเทอร์มินัล นี่คือวิธีที่ไคลเอ็นต์สามารถรีเฟรชเนื้อหาของหน้าจอหลังจากที่มันหายไปครู่หนึ่งและสูญเสียข้อมูลบางส่วน

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

ผู้พัฒนาระบบของ Mosh กำลังวางแผนสนับสนุนการเลื่อนกลับในแอปพลิเคชันเพื่อชดเชยข้อเท็จจริงที่ว่าเครื่องปลายทางของคุณไม่สามารถทำได้อีกต่อไป ฉันเดาว่ามันจะต้องทำงานเหมือนscreenbuffer scrollback เล็กน้อย: ควบคุมโดยการกดแป้นพิมพ์ไม่ใช่แถบเลื่อนและเมาส์


4

Eternal Terminal ( https://mistertea.github.io/EternalTerminal/ ) เป็นอีกทางเลือกหนึ่งสำหรับ Mosh ที่รองรับการเลื่อนแบบดั้งเดิมและยังอนุญาตการโรมมิ่ง IP ET ไม่ได้ทำการคาดคะเนการพิมพ์ดังนั้นมันอาจไม่เหมาะสมหากคุณมีการเชื่อมต่อที่มีความหน่วงสูง (ถ้าคุณกำลังส่งเสียงหึ่งๆหรือจากโทรศัพท์มือถือ) แต่ส่วนตัว ET ทำทุกอย่างที่ฉันต้องการและรองรับ scrollback


มันยอดเยี่ยมมาก
Soorena

ET เป็นที่น่าตื่นตาตื่นใจและความต้องการที่มากขึ้นสนับสนุน
Dan Dascalescu

1

การยกเลิกการเลือก "เลื่อนหน้าจอทางเลือก" ใน Terminal-> Preferences-> Profiles-> Keyboard แก้ไขให้ฉัน


1
คำตอบนี้ไม่สมเหตุสมผลคุณจะได้เมนูแบบนั้นมาจากไหน?
cnst

3
การตั้งค่า prefs นั้นมีอยู่ แต่การยกเลิกการเลือกมันทำให้การเลื่อนทำงานได้เฉพาะในหน้าต่างโลคอลของฉันนั่นคือการเลื่อนลงมาเพื่อดูบรรทัดที่อยู่ที่นั่นก่อนที่ฉันจะใช้คำสั่ง mosh มันไม่ได้แสดงอะไรที่เลื่อนออกไปด้านบนของเซสชันระยะไกล
mARK

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