Rolagem horizontal no terminal

12

Então, acredito que já tenham 2 perguntas sobre isso. Todos eles têm a ver com tail -fa resposta tangente do "use menos".

Eu preciso disso para tudo, todos os comandos, etc. O problema é que eu preciso executar muitas janelas de console e mesmo com vários monitores ainda precisamos reduzi-las. Como conseqüência, praticamente todas as saídas são massacradas pelo empacotamento de linhas e difíceis de ler.

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

Ubuntu 12.10, Terminal

srcspider
fonte
Como exemplo (em resposta a todos os comentários "não é assim que os terminais funcionam"!), Eu apontaria que o Ubuntu Console para Windows suporta esse recurso. Aplicativos como lse mceditfuncionam bem nele, porque a largura da tela e a largura do buffer são tratadas separadamente.
cz

Respostas:

10

O que você está perguntando é um terminal de largura infinita, cuja parte está sendo exibida. Não é como os terminais tradicionalmente funcionam nem como os aplicativos esperam que eles funcionem.

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

No entanto, algo que você pode fazer é usar o GNU screen(você deve anexar uma sessão de tela de vários terminais de tamanhos diferentes para que a tela saiba como exibir uma pequena janela de um terminal maior) e defina a screenlargura da janela para algo muito grande e, em seguida, induz as aplicações visuais a pensar que a largura da tela é a original.

Curtir (dentro screen)

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

Alguns aplicativos visuais funcionarão bem, outros não tão bem (para instalação quando fazem posicionamento relativo ou quando dependem do invólucro do terminal). vimparece funcionar bem.

Em seguida, para rolar e copiar dados da pasta, a única opção é usar screeno modo de cópia . ( <prefix>]) e mova-se pelo cursor (consulte info -f screen -n Movementpara mover-se no modo de cópia ).

tmux pode ter recursos semelhantes.

Este terminatoremulador de terminal (baseado em java), que não é o terminatorque acompanha o ubuntu, também faz exatamente isso com uma largura infinita de terminal:

  • linhas nunca são quebradas
  • às aplicações visuais é dito que a largura da tela é o que cabe na janela, não o infinito.
  • também funcionaria melhor do que a screensolução baseada acima, pois sua entrada terminfo afirma que não faz quebra de linha, portanto os aplicativos estão cientes disso e o BS no início da linha não se move para o final da linha anterior.
Stéphane Chazelas
fonte
Já estou em um ambiente de GUI, portanto, se eu quiser abrir um arquivo em um editor visual, basta iniciar um GUI a partir do terminal. É mais fácil copiar neles do que em um terminal de qualquer maneira, já que você não pode simplesmente arrastar e selecionar facilmente um bloco em um terminal sem que seja cortado. screen -X width -w 1000Retornos em execução No screen session found., alguma idéia?
Srcpider
@srcspider Como eu disse, você precisa fazer isso dentro screen. Comece screenprimeiro.
Stéphane Chazelas 28/03
okey eu acho que te pego agora, basicamente eu deveria executar #screen -X width -w 1000 <mycommand>
srcspider 28/03
1
@srcspider. No. screené um emulador de terminal baseado em terminal. Portanto, você precisa iniciá-lo primeiro, como precisaria iniciar xtermou gnome-terminalprimeiro, executando o screencomando Em seguida, dentro desse novo emulador de terminal, você executa esse screen -Xcomando screenpara alterar a largura da janela. Veja também minha resposta editada para o terminatoremulador, que eu suspeito que você prefira.
Stéphane Chazelas 28/03
Obrigado! Mesmo que de alguma forma eu não os faça funcionar, pelo menos agora eu sei por que não consigo fazê-los funcionar assim.
srcspider
6

Embora o Emacs seja principalmente um editor e IDE¹, ele coincide 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 idiota de largura e altura infinitas. Se o cursor estiver no final do buffer, a janela irá rolar quando o programa produzir saída; se você mover o cursor, a janela permanecerá como a saída aumenta.

Digite M-x shell RET(ie Alt+ x shell Return) para iniciar um shell em um buffer Emacs. Digite C-u M-x shell RETou M-1 M-x shell RETpara iniciar outro shell. Você pode executar um programa em cada shell e organizar os buffers em várias janelas, conforme desejar.

Sometimes Diz-se que às vezes é um sistema operacional melhor que o editor, mas apenas por pessoas que não o usam - isso é apenas uma piada.

Gilles 'SO- parar de ser mau'
fonte