Scorrimento orizzontale nel terminale


12

Quindi ci sono già 2 domande su questo. Tutti a che fare con tail -fe quindi le persone danno la risposta tangente di "usare meno".

Ne ho bisogno per tutto, ogni comando, ecc. Il problema è che ho bisogno di eseguire molte finestre della console e anche con più monitor ho ancora bisogno di ridurle. Di conseguenza, quasi ogni output viene macellato dal ritorno a capo e scomodo da leggere.

Una soluzione suggerita è echo -ne '\e[?7l', che funziona in qualche modo. Il problema ora, c'è un modo per ottenere le barre di scorrimento su una console?

Ubuntu 12.10, Terminale


Ad esempio (in risposta a tutti i commenti "questo non è come funzionano i terminali"!), Vorrei sottolineare che Ubuntu Console per Windows supporta questa funzione. Le applicazioni come lse mceditfunzionano bene al suo interno, poiché la larghezza dello schermo e la larghezza del buffer sono gestite separatamente.
CZ,

Risposte:


10

Quello che stai chiedendo è un terminale di larghezza infinita, una parte della quale viene visualizzata. Non è il modo in cui i terminali funzionano tradizionalmente né il modo in cui le applicazioni si aspettano che funzionino.

Ad esempio, se il terminale ha una larghezza infinita, come funzionano le applicazioni visive quando vogliono visualizzare qualcosa al centro dello schermo?

Qualcosa che si avvicina a ciò che puoi fare è usare GNU screen(dovresti essere in grado di collegare una sessione dello schermo da più terminali di dimensioni diverse in modo che lo schermo sappia come visualizzare una piccola finestra di un terminale più grande) e impostare la screenlarghezza delle finestre su qualcosa molto grandi e quindi inducono le applicazioni visive a pensare che la larghezza dello schermo sia quella originale.

Mi piace (dentro screen)

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

Alcune applicazioni visive funzioneranno bene, altre non così bene (per l'installazione quando eseguono il posizionamento relativo o quando si basano sull'involucro del terminale). vimsembra funzionare bene.

Quindi per scorrere e copiare i dati incollati, l'unica opzione è utilizzare screenla modalità di copia . ( <prefix>]) e spostarsi intorno al cursore (vedere info -f screen -n Movementper spostarsi in modalità copia ).

tmux potrebbe avere capacità simili.

Questo terminatoremulatore di terminale (basato su Java), che non è terminatorquello fornito con Ubuntu, lo fa anche con una larghezza infinita del terminale:

  • le linee non sono mai avvolte
  • alle applicazioni visive viene detto che la larghezza dello schermo è qualunque cosa si adatti alla finestra, non all'infinito.
  • funzionerebbe anche meglio della screensoluzione basata sopra in quanto la sua voce terminfo afferma che non esegue il wrapping della linea, quindi le applicazioni ne sono consapevoli e BS all'inizio della riga non si sposta alla fine della riga precedente.

Sono già in un ambiente GUI, quindi se voglio aprire un file in un editor visivo posso semplicemente lanciarne uno dal terminale. È più facile copiarli in essi, quindi è comunque in un terminale, dal momento che non è possibile trascinare semplicemente selezionare un blocco in un terminale senza che venga tagliato. screen -X width -w 1000Ritorni correnti No screen session found., qualche idea?
srcspider,

@srcspider Come ho detto, devi farlo all'interno screen. Inizia screenprima.
Stéphane Chazelas,

okey penso di averti ora, in pratica dovrei correrescreen -X width -w 1000 <mycommand>
srcspider,

1
@srcspider. No. screenè un emulatore di terminale basato su terminale. Quindi è necessario avviarlo prima come se fosse necessario avviarlo xtermo gnome-terminaleseguirlo prima, eseguendo il screencomando. Quindi, all'interno di quel nuovo emulatore di terminale, esegui quel screen -Xcomando per dire screendi cambiare la sua larghezza della finestra. Vedi anche la mia risposta modificata per l' terminatoremulatore che sospetto preferirai.
Stéphane Chazelas,

Grazie! Anche se in qualche modo non riesco a farli funzionare, almeno ora so perché non riesco a farli funzionare così.
srcspider,

6

Mentre Emacs è principalmente un editor e IDE¹, sembra corrispondere molto bene al tuo problema. Puoi eseguire un programma all'interno di una finestra di Emacs ed Emacs lo visualizza in un terminale stupido di larghezza e altezza infinite. Se il cursore si trova alla fine del buffer, la finestra scorrerà mentre il programma produce output; se sposti il ​​cursore, la finestra rimarrà posizionata all'aumentare dell'output.

Digitare M-x shell RET(ie Alt+ x shell Return) per avviare una shell in un buffer Emacs. Digitare C-u M-x shell RETo M-1 M-x shell RETper avviare un'altra shell. È possibile eseguire un programma in ciascuna shell e disporre i buffer in più finestre come desiderato.

¹ A volte si dice che sia un sistema operativo migliore dell'editor, ma solo da persone che non lo usano - è solo uno scherzo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.