Использовать Mosh, не отказываясь от локальной прокрутки / истории?

64

Есть ли способ использовать, moshне отказываясь от локального прокрутки?

По сути, в некоторых случаях IP-роуминг действительно полезен и необходим, но дополнительная эмуляция терминала и предсказание ключа, похоже, избавляют только от локальных строк буфера прокрутки и истории сеанса.

CNST
источник

Ответы:

44

Филиппо Валсорда имеет решение для OS X, которое включает в себя iTerm 2, tmux и mosh .

Его решение использует одно окно / вкладку для подключения к удаленной оболочке. Оболочка выдерживает разъединения (например, сбой соединения, изменение IP-адреса, перезагрузка ноутбука) и поддерживает прокрутку с помощью сенсорной панели, копирования-вставки и цветов.

Предостережения заключаются в том, что вы должны создавать mosh из исходного кода, прокрутка менее плавная, чем в нативном режиме, и перетаскивание по нажатию кнопки мыши передается, поэтому вы должны удерживать Option для выбора.

  • Iterm

    В настройках профиля терминала включите отчеты мыши xterm и установите тип терминала отчета 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 и т. Д.) Были переписаны в один параметр 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
rbrewer
источник
5
Это хорошая форма для вставки важной информации из ссылки в строке.
HalosGhost
2
хотя этот ответ был отвергнут по техническим причинам, это, вероятно, лучший (единственный?) способ получить достойную прокрутку на локальном клиенте с помощью mosh.
Джейхендрен
@jayhendren: или вы можете просто использовать Eternal Terminal .
Дан Даскалеску
Не нужно быть снисходительным. Мой комментарий был с 2014 года. Первый выпуск Eternal Terminal был в 2017 году.
jayhendren
2019 и решение все еще работает
user913
15

Эмуляция терминала запекается довольно глубоко в дизайне mosh , так что нет. Mosh работает так, чтобы клиент и сервер поддерживали свое локальное представление о том, как экран в данный момент «выглядит», и для этого требуется, чтобы сервер выполнял эмуляцию терминала. Таким образом, клиент может обновить содержимое экрана после того, как он некоторое время отсутствовал и потерял некоторые данные.

Я думаю, что приложение с функцией роуминга IP в mosh, но без эмуляции терминала, оказалось бы совсем другим (но более простым) приложением. Для такого приложения потеря данных (в том числе, когда клиент не подключен к сети в течение некоторого времени) может привести к потере или повреждению содержимого экрана. Это приемлемое ограничение, если пользователь использует приложение, в котором это не имеет большого значения (например, оболочка), или приложение, которое имеет функцию перекраски (например, viиспользуя Control-L).

Разработчики Mosh планируют поддержку прокрутки в приложении , чтобы компенсировать тот факт, что ваш локальный терминал больше не может это делать. Я думаю, что это должно работать немного как screenбуфер прокрутки, хотя: контролируется нажатиями клавиш, а не полосой прокрутки и мышью.

Celada
источник
4

Вечный терминал ( https://mistertea.github.io/EternalTerminal/ ) является альтернативой Mosh, которая поддерживает встроенную прокрутку и по-прежнему допускает IP-роуминг. ET не делает прогнозирование ввода, поэтому он может не подходить, если у вас соединение с высокой задержкой (если вы подключаетесь к дрону или с мобильного телефона), но лично ET делает все, что я хочу, и поддерживает прокрутку.

DigitalGhost
источник
это было потрясающе
Soorena
Инопланетянин потрясающий и нуждается в гораздо большей адвокации .
Дан Даскалеску
1

Сняв флажок «Пролистать альтернативный экран» в Терминале-> Настройки-> Профили-> Клавиатура, я это исправил.

Пикачу
источник
1
этот ответ не имеет смысла, где ты вообще взял такое меню?
CNST
3
Эта настройка prefs существует, но снятие флажка заставило прокрутку работать только в моем локальном окне, то есть прокрутка вниз показала строки, которые были там до того, как я использовал команду mosh. это не показывало мне ничего, что выскользнуло из верхней части удаленного сеанса.
Марк
2
Пробовал это, но это не позволяет вам прокручивать в сеансе
mosh