Use o Mosh sem desistir do histórico de rolagem / histórico local?

48

Existe uma maneira de usar mosh sem abrir mão do pergaminho local?

Basicamente, em algumas circunstâncias, o IP-roaming é de fato útil e necessário, mas a emulação do terminal extra e a predição da chave parecem se livrar apenas das linhas do buffer de scrollback local e do histórico da sessão.

    
por cnst 17.07.2014 / 23:37

4 respostas

36

Filippo Valsorda tem uma solução para o OS X que incorpora o iTerm 2, tmux e mosh .

Sua solução usa uma única janela / guia para conectar-se a um shell remoto. O shell sobrevive a desconexões (por exemplo, falha de conexão, alterações de IP, reinicializações de laptop) e suporta rolagem com um touchpad, copiar e colar e cores.

Advertências são de que você deve construir o mosh a partir da fonte, a rolagem é menos fluida do que a nativa e o clique-arrasto é retransmitido, então você deve manter a Opção para selecionar.

  • iTerm

    Nas configurações do Perfil do Terminal, Habilite o relatório do mouse xterm e configure o Tipo de Terminal de Relatório para xterm-256color .

  • tmux

    Defina ~/.tmux.conf no servidor para o seguinte. Com essas configurações, se você tentar anexar e não houver sessões, uma nova será criada. As configurações também permitem interações do mouse (e, portanto, rolagem do touchpad).

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

    Nota: Em um tmux mais recente (ie > 2.1), conforme relatado por tmux -V , as várias opções de mouse (mouse-redimensionar-painel, mouse-modo, etc.) foram reescritas para um único opção mouse , então você precisa alterar a segunda linha acima para set-window-option -g mouse on .

    Esta rolagem do mouse também funcionará quando você estiver no modo de rolagem do teclado (por exemplo, Ctrl - b e então [), descrito no artigo Como rolar no tmux .

  • mosh

    A versão estável do mosh é antiga e não suporta relatórios de mouse (e rolagem do touchpad). Para instalar a versão mais recente, faça o seguinte:

    OS X (seu cliente)

    brew install --HEAD mobile-shell
    

    Linux / UNIX (o servidor)

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

Agora, para se conectar, basta digitar o seguinte:

mosh HOST -- tmux a
    
por 13.10.2014 / 21:53
13

A emulação de terminal está bem envolvida no design de mosh , então não. Mosh trabalha tendo tanto cliente quanto servidor, cada um mantendo sua idéia local do que a tela atualmente "se parece", e isso requer que o servidor faça emulação de terminal. É assim que o cliente consegue atualizar o conteúdo da tela depois de estar ausente por algum tempo e perder alguns dados.

Eu acho que um aplicativo com o recurso de roaming IP do mosh, mas sem emulação de terminal, acabaria sendo um aplicativo bastante diferente (mas mais simples). Para tal aplicação, a perda de dados (incluindo quando o cliente está fora da rede por algum tempo) resultaria em perda ou corrupção do conteúdo da tela. Essa é uma limitação aceitável se o usuário estiver usando um aplicativo em que isso não importa muito (por exemplo, shell) ou um aplicativo que tenha um recurso de repintura (por exemplo, vi usando Control-L).

Os implementadores do Mosh estão planejando o suporte a scrollback no aplicativo , para compensar o fato de que o seu terminal local não pode mais fazer isso. Acho que isso teria que funcionar um pouco como o buffer de rolagem de screen : controlado por pressionamentos de teclas, não pela barra de rolagem e pelo mouse.

    
por 17.07.2014 / 23:51
3

O Eternal Terminal ( link ) é uma alternativa ao Mosh que suporta scrollback nativo e ainda permite roaming de IP. ET não faz a predição de digitação, então pode não ser adequado se você tiver uma conexão de alta latência (se você estiver usando um drone ou de um telefone celular), mas o ET pessoalmente faz tudo que eu quero e suporta scrollback.

    
por 06.02.2017 / 23:53
1

Desmarcar a opção "Navegar pela tela alternativa" em Terminal - > Preferências - > Perfis - > O teclado corrigiu para mim.

    
por 24.08.2015 / 19:58