Gunakan Mosh tanpa menyerah scrollback / sejarah lokal?

64

Apakah ada cara untuk digunakan moshtanpa melepaskan scrollback lokal?

Pada dasarnya, dalam beberapa keadaan, roaming IP memang berguna dan dibutuhkan, tetapi emulasi terminal tambahan dan prediksi kunci tampaknya hanya akan menghilangkan garis buffer scrollback lokal dan riwayat sesi.

cnst
sumber

Jawaban:

44

Filippo Valsorda memiliki solusi untuk OS X yang menggabungkan iTerm 2, tmux, dan mosh .

Solusinya menggunakan satu jendela / tab untuk terhubung ke shell jarak jauh. Shell selamat dari terputusnya sambungan (mis., Kegagalan koneksi, perubahan IP, reboot laptop) dan mendukung scrollback dengan touchpad, copy-paste, dan warna.

Peringatan adalah bahwa Anda harus membangun mosh dari sumber, menggulirkan lebih sedikit cairan dari aslinya, dan klik-seret diteruskan, jadi Anda harus menahan Opsi untuk memilih.

  • ITerm

    Dalam pengaturan Profil Terminal, Aktifkan pelaporan mouse xterm dan atur Laporkan Terminal Jenis ke xterm-256color .

  • tmux

    Tetapkan ~/.tmux.confpada server sebagai berikut. Dengan pengaturan ini, jika Anda mencoba melampirkan dan tidak ada sesi, yang baru dibuat. Pengaturan ini juga memungkinkan interaksi mouse (dan dengan demikian menggulir touchpad).

    new-session
    set-window-option -g mode-mouse on
    set -g history-limit 30000
    

    Catatan: Pada tmux yang lebih baru (yaitu> 2.1), seperti yang dilaporkan oleh tmux -V, berbagai opsi mouse (mouse-resize-pane, mouse-mode, dll.) Telah ditulis ulang menjadi satu opsi mouse, jadi Anda harus mengubah baris kedua di atas ke set-window-option -gmouseon sebagai gantinya.

    Scroll mouse ini juga akan berfungsi ketika Anda berada dalam mode scroll keyboard (mis Ctrl- bkemudian [), dijelaskan dalam artikel Cara menggulir di tmux .

  • mosh

    Bangunan stabil mosh sudah tua dan tidak mendukung pelaporan mouse (dan pengguliran touchpad). Untuk menginstal versi terbaru, lakukan hal berikut:

    OS X (klien Anda)

    brew install --HEAD mobile-shell
    

    Linux / UNIX (server)

    git clone https://github.com/keithw/mosh.git
    cd mosh/
    sudo apt-get build-dep mosh
    ./autogen.sh && ./configure && make
    sudo make install
    

Sekarang, untuk terhubung, cukup ketikkan yang berikut:

mosh HOST -- tmux a
pembuat bir
sumber
5
Ini dianggap sebagai bentuk yang baik untuk menempelkan informasi penting dari tautan sebaris.
HalosGhost
2
meskipun jawaban ini diturunkan karena alasan teknis, mungkin ini cara terbaik (hanya?) untuk mendapatkan scrollback yang layak pada klien lokal menggunakan mosh.
jayhendren
@ jayhendren: atau Anda cukup menggunakan Terminal Abadi .
Dan Dascalescu
Tidak perlu direndahkan. Komentar saya berasal dari 2014. Rilis pertama Terminal Abadi adalah pada 2017.
jayhendren
2019 dan solusinya masih berfungsi
user913
15

Emulasi terminal dipanggang cukup dalam ke dalam desain mosh , jadi, tidak. Mosh bekerja dengan meminta masing-masing klien dan server mempertahankan ide lokalnya tentang seperti apa tampilan layar saat ini, dan itu mengharuskan server melakukan emulasi terminal. Ini adalah cara klien dapat menyegarkan konten layar setelah beberapa lama dan kehilangan beberapa data.

Saya pikir aplikasi dengan fitur roaming IP mosh tetapi tanpa emulasi terminal akan menjadi aplikasi yang sangat berbeda (tapi lebih sederhana). Untuk aplikasi seperti itu, kehilangan data (termasuk ketika klien tidak aktif untuk beberapa waktu) akan mengakibatkan hilangnya atau kerusakan konten layar. Ini adalah batasan yang dapat diterima jika pengguna menggunakan aplikasi yang tidak terlalu penting (mis. Shell) atau aplikasi yang memiliki fitur pengecatan ulang (mis. viMenggunakan Control-L).

Para pelaksana Mosh sedang merencanakan dukungan scrollback dalam aplikasi , untuk menebus fakta bahwa terminal lokal Anda tidak dapat melakukannya lagi. Saya kira ini harus bekerja sedikit seperti screenbuffer scrollback: dikontrol oleh penekanan tombol, bukan scrollbar dan mouse.

Celada
sumber
4

Eternal Terminal ( https://mistertea.github.io/EternalTerminal/ ) adalah alternatif untuk Mosh yang mendukung scrollback asli dan masih memungkinkan roaming IP. ET tidak melakukan prediksi pengetikan, jadi mungkin tidak cocok jika Anda memiliki koneksi latensi yang tinggi (jika Anda ssh-ing ke drone atau dari ponsel), tetapi secara pribadi ET melakukan semua yang saya inginkan dan mendukung scrollback.

DigitalGhost
sumber
itu luar biasa
Soorena
ET luar biasa dan membutuhkan lebih banyak advokasi .
Dan Dascalescu
1

Hapus tanda centang "Gulir layar alternatif" di Terminal-> Preferences-> Profil-> Keyboard memperbaikinya untuk saya.

pikachu
sumber
1
jawaban ini tidak masuk akal, di mana Anda bahkan mendapatkan menu seperti itu?
cnst
3
Pengaturan prefs itu ada, tetapi tidak mencentangnya menyebabkan menggulir hanya berfungsi di jendela lokal saya, yaitu menggulir ke bawah menampilkan garis-garis yang ada di sana sebelum saya menggunakan perintah mosh. itu tidak menunjukkan kepada saya apa pun yang telah menggulung bagian atas sesi jarak jauh.
MARK
2
Sudah mencoba ini, tetapi tidak memungkinkan Anda untuk menggulir di sesi mosh
magodiez