Rolagem no terminal (OS X) ao executar tail -f e ssh-ed em uma máquina produz alguns caracteres estranhos

1

Eu sou ssh-ed em uma máquina remota e estou executando tail -f . Toda vez que eu rolar para cima / para baixo usando o trackpad, ele produz alguns caracteres estranhos, como

OB^[OB^[OB^[OB^[OB^[OOB^[OB^[OB^[OB^[OB^[O

Isso não costumava acontecer antes, e não vai me deixar rolar para ver os registros anteriores. Por que isso está acontecendo e como posso desativá-lo?

    
por reectrix 23.01.2015 / 19:41

2 respostas

9

TL; DR: Verifique a configuração do menu Ver- > Mostrar / ocultar tela alternativa. Você pode estar em "modo de tela alternativo". Ou tente usar a tecla SHIFT quando você rolar para obter o outro comportamento de rolagem.

^[ é a representação imprimível de Control-leftbracket, AKA o caractere de escape. Infocmp revela que ^[OB é o escape do xterm seqüência para a tecla de seta para baixo ( ^[OA é a seqüência de seta para cima). O terminal emula o xterm e está traduzindo o mouse rolando para seqüências de teclas de seta.

Encontrei algumas discussões anteriores sobre o uso do mouse no Terminal:

Mas eles são todos sobre versões anteriores do OSX, e parece que o Terminal mudou nesta área ao longo do tempo. Este artigo fala sobre como funciona em Yosemite, mas é um pouco curto em detalhes técnicos. O resto disso é o que eu encontrei jogando com o Terminal em Yosemite.

O terminal tem dois modos para manipular a rolagem do mouse:

  1. Em um modo, a rolagem faz com que o terminal role a viewport para que você possa ver o buffer de rolagem do terminal (as linhas que rolaram para fora da parte superior da tela). Você obtém uma barra de rolagem OSX quando rola o terminal.
  2. No outro modo, a rolagem faz com que o terminal envie seqüências de seta para cima e para baixo. Espero que o programa em execução no terminal possa lidar com eles.

Você pode alternar temporariamente entre os modos mantendo pressionada a tecla SHIFT enquanto rola a tela. Por exemplo. enquanto o terminal estiver exibindo um prompt de comando, a rolagem rolará pela janela do terminal, enquanto o Shift-scroll percorrerá o histórico de comandos do bash.

O Terminal também fornece um recurso chamado tela alternativa . Programas em tela cheia como vim ou less podem alternar o terminal para uma tela alternativa para exibir seu próprio conteúdo. Quando você sai desse programa, o terminal volta para a tela principal. Eu menciono isso porque o comportamento de rolagem do Terminal pode mudar na tela alternativa.

Normalmente, o primeiro comportamento de rolagem é o comportamento principal e você deve pressionar SHIFT para obter o segundo comportamento. Mas vá para Terminal- > Preferências- > Perfis- > Teclado. Na parte inferior, há uma caixa de seleção chamada "Tela alternativa de rolagem". Se essa caixa estiver marcada, o comportamento de rolagem será invertido na tela alternativa. Quando marcado, o segundo comportamento de rolagem se torna o padrão para a tela alternativa, e você deve pressionar SHIFT para obter o primeiro comportamento.

Por exemplo, na linha de comando, rolando o mouse, você pode ver o buffer de rolagem do terminal. Mas inicie vim para editar um arquivo, ele alterna para a tela alternativa e, de repente, a rolagem do mouse move o cursor. Qual é o que você quer dentro do vim.

Chegando ao seu problema, parece que o seu terminal está exibindo a tela alternativa. Há uma opção de menu para alternar (Visualizar- > Mostrar / Ocultar tela alternativa). Ou algo que você está executando é colocar o terminal em modo de tela alternativo. Talvez você esteja usando screen ou tmux ou algo assim? Como solução alternativa, você pode tentar usar a tecla SHIFT para obter o comportamento de rolagem desejado. Ou você pode desmarcar essa caixa de seleção.

    
por 24.01.2015 / 19:30
1

Mudei minha emulação de terminal para vt100 do xterm-256color. Eu fiz isso em Preferências = > Perfil = > "Declare Terminal como:" dropdown avançado.

    
por 14.12.2015 / 16:01