Przewijanie w poziomie w terminalu


12

Sądzę, że są już 2 pytania na ten temat. Wszystkie mają do czynienia, tail -fa zatem ludzie podają styczną odpowiedź „używaj mniej”.

Potrzebuję go do wszystkiego, do każdego polecenia itp. Problemem jest to, że muszę uruchomić wiele okien konsoli i nawet przy wielu monitorach nadal muszę je zmniejszać. W rezultacie prawie każde wyjście jest ominięte przez zawijanie wierszy i niewygodne do czytania.

Jednym z sugerowanych rozwiązań jest echo -ne '\e[?7l', co nieco działa. Problem w tym, czy jest jakiś sposób na uzyskanie pasków przewijania na konsoli?

Ubuntu 12.10, Terminal


Jako przykład (w odpowiedzi na wszystkie komentarze „to nie działa terminale”!) Wskazuję, że konsola Ubuntu dla systemu Windows obsługuje tę funkcję. Aplikacje takie jak lsi mceditdziałają w nim dobrze, ponieważ szerokość ekranu i szerokość bufora są obsługiwane osobno.
cz

Odpowiedzi:


10

Pytasz o terminal o nieskończonej szerokości, którego część jest wyświetlana. Nie chodzi o to, jak tradycyjnie działają terminale, ani o to, jak aplikacje oczekują od nich działania.

Na przykład, jeśli terminal ma nieskończoną szerokość, w jaki sposób aplikacje wizualne mają działać, gdy chcą wyświetlać coś na środku ekranu?

Można jednak zbliżyć się do GNU screen(powinieneś być w stanie dołączyć sesję ekranu z kilku terminali o różnych rozmiarach, aby ekran wiedział, jak wyświetlić małe okno większego terminalu) i ustawić screenszerokość okna na coś bardzo duże, a następnie oszukać aplikacje wizualne do myślenia, że ​​szerokość ekranu jest oryginalna.

Jak (w screen)

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

Niektóre aplikacje wizualne będą działały dobrze, inne nie tak dobrze (do instalacji, gdy dokonają względnego pozycjonowania lub gdy polegają na zawijaniu terminali). vimwydaje się działać OK.

Następnie do przewijania i skopiować wkleić dane, jedyną opcją jest użycie screen„s kopiowania tryb. ( <prefix>]) i poruszaj się po kursorze (patrz info -f screen -n Movementporuszanie się w trybie kopiowania ).

tmux może mieć podobne możliwości.

Ten terminatoremulator terminala (oparty na Javie), który nie jest terminatordostarczany z Ubuntu, robi to samo z nieskończoną szerokością terminala:

  • linie nigdy nie są zawijane
  • aplikacje wizualne są informowane, że szerokość ekranu zależy od okna, a nie nieskończoności.
  • działałoby również lepiej niż screenpowyższe rozwiązanie oparte na tym, że jego wpis terminfo twierdzi, że nie wykonuje zawijania linii, więc aplikacje są tego świadome, a BS na początku linii nie przesuwa się na koniec poprzedniej linii.

Jestem już w środowisku GUI, więc jeśli chcę otworzyć plik w edytorze wizualnym, mogę po prostu uruchomić GUI z terminala. W każdym razie łatwiej jest je skopiować, niż jest w terminalu, ponieważ tak naprawdę nie można po prostu przeciągnąć zaznaczonego bloku w terminalu bez jego odcięcia. Uruchamianie screen -X width -w 1000zwrotów No screen session found., jakieś pomysły?
srcspider

@ srcspider Jak powiedziałem, musisz to zrobić wewnątrz screen. Zacznij od screenpierwszego.
Stéphane Chazelas

okej, myślę, że cię teraz rozumiem, w zasadzie powinienem biecscreen -X width -w 1000 <mycommand>
srcspider

1
@srcspider. Nie. screenJest emulatorem terminala. Musisz więc uruchomić go najpierw tak, jakbyś musiał zacząć xtermlub gnome-terminalnajpierw, uruchamiając screenpolecenie. Następnie w nowym emulatorze terminali uruchom screen -Xpolecenie, screenaby zmienić szerokość okna. Zobacz także moją zredagowaną odpowiedź dotyczącą terminatoremulatora, który, jak podejrzewam, wolisz.
Stéphane Chazelas

Dzięki! Nawet jeśli w jakiś sposób nie zmuszam ich do pracy, przynajmniej teraz wiem, dlaczego nie mogę ich zmusić do takiej pracy.
srcspider

6

Chociaż Emacs jest przede wszystkim edytorem i IDE¹, bardzo dobrze pasuje do twojego problemu. Możesz uruchomić program w oknie Emacsa, a Emacs wyświetli go w głupim terminalu o nieskończonej szerokości i wysokości. Jeśli kursor znajduje się na końcu bufora, okno będzie się przewijać, gdy program generuje dane wyjściowe; jeśli przesuniesz kursor, okno pozostanie ustawione wraz ze wzrostem wydajności.

Wpisz M-x shell RET(tj. Alt+ x shell Return), Aby uruchomić powłokę w buforze Emacsa. Wpisz C-u M-x shell RETlub, M-1 M-x shell RETaby uruchomić kolejną powłokę. Możesz uruchomić program w każdej powłoce i rozmieścić bufory w wielu oknach, jak chcesz.

¹ Czasami mówi się, że jest to lepszy system operacyjny niż edytor, ale tylko przez osoby, które go nie używają - to tylko żart.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.