Rolagem horizontal no terminal

8

Então, eu acredito em 2 perguntas sobre isso já. Todos eles têm a ver com tail -f e, portanto, as pessoas dão a resposta tangente de "usar menos".

Eu preciso disso para tudo, todos os comandos, etc. O problema é que preciso executar muitas janelas do console e, mesmo com vários monitores, ainda preciso reduzi-los. Como conseqüência, quase todas as saídas são desmembradas por quebra de linha e difíceis de ler.

Uma solução sugerida é echo -ne '\e[?7l' , o que funciona um pouco. O problema agora, existe alguma maneira de obter barras de rolagem em um console?

Ubuntu 12.10, Terminal

    
por srcspider 28.03.2013 / 13:22

2 respostas

8

O que você está pedindo é um terminal de largura infinita, uma parte do qual está sendo exibido. Não é como os terminais funcionam tradicionalmente nem como os aplicativos esperam que funcionem.

Por exemplo, se o terminal tiver largura infinita, como os aplicativos visuais devem funcionar quando querem exibir algo no meio da tela?

Algo que você pode fazer é usar o GNU screen (você deveria poder anexar uma sessão de tela a partir de vários terminais de diferentes tamanhos para que a tela saiba como exibir uma pequena janela de um terminal maior) e defina a largura da janela screen para algo muito grande e, em seguida, engane os aplicativos visuais para que a largura da tela seja a original.

Como (dentro de screen )

c=$COLUMNS # assuming your shell has that variable
screen -X width -w 1000
stty cols "$c"

Alguns aplicativos visuais funcionarão bem, alguns não tão bem (para instalação, quando eles fazem posicionamento relativo ou quando confiam no encapsulamento do terminal). vim parece funcionar bem.

Em seguida, para rolar e copiar dados colados, a única opção é usar o modo cópia de screen . ( <prefix>] ) e mova o cursor (veja info -f screen -n Movement para se movimentar no modo copiar ).

tmux pode ter recursos semelhantes.

Este terminator terminal emulator (baseado em java), que não é o terminator que vem com o Ubuntu também faz isso com uma largura de terminal infinita:

  • as linhas nunca são agrupadas
  • as aplicações visuais são informadas de que a largura da tela é o que couber na janela, não o infinito.
  • também funcionaria melhor do que a solução baseada em screen acima em que sua entrada terminfo afirma que não faz quebra de linha para que os aplicativos estejam cientes disso, e BS no início da linha não se move para o fim da linha anterior.
por 28.03.2013 / 14:08
4

Embora o Emacs seja basicamente um editor e IDE¹, ele combina muito bem com o seu problema. Você pode executar um programa dentro de uma janela do Emacs, e o Emacs o exibe em um terminal burro de largura e altura infinitas. Se o cursor estiver no final do buffer, a janela rolará conforme o programa produz saída; se você mover o cursor, a janela permanecerá ativa conforme a saída aumenta.

Digite M-x shell RET (ou seja, Alt + x shell Retornar ) para iniciar um shell em um buffer do Emacs. Digite C-u M-x shell RET ou M-1 M-x shell RET para iniciar outro shell. Você pode executar um programa em cada shell e organizar os buffers em várias janelas como desejar.

¹ Às vezes é dito que é um sistema operacional melhor que o editor, mas apenas por pessoas que não o usam - isso é apenas uma piada.

    
por 30.03.2013 / 02:26

Tags