Czy jest jakiś sposób, aby naprawić błędne obchodzenie się z zawijaniem wiersza na ekranie? (Może tylko Terminal.app)

9

Mam problem z używaniem screena i Terminal.app. Jeśli na dole ekranu pojawi się monit bashowy i będę pisać, dopóki linia nie zostanie zawinięta do następnej linii, widzę następną linię, ale nie widzę linii powyżej tej jednej zmiany.

Oto wizualny sposób zilustrowania mojego problemu. The | reprezentuje prawą stronę terminala.

Przed. Mój kursor znajduje się za trzecim „przykładem” i już niedługo napiszę „przykład”:

$ asdf                        |
bash: asdf: command not found |
$ example example example     |

Po. Zwróć uwagę, jak po zawinięciu ekran nie przewinął się, ale zamiast tego „zjadł” linię, w której byłem, i zaczął od nowa:

$ asdf                        |
bash: asdf: command not found |
ple                           |

Czego się spodziewałem (i co dzieje się bez użycia ekranu), to że cały ekran przewija się w dół o jeden po owinięciu.

bash: asdf: command not found |
$ example example example exam|
ple                           |

Wreszcie, co się stanie, jeśli przesunę kursor na zawiniętej linii na początek linii poleceń, zjadę poprzednią linię:

$ asdf                        |
$ example example example exam|
ple                           |

Masz pomysł, co się dzieje?

AlexMax
źródło
Terminal GNOME i ekran 4 są wyświetlane zgodnie z oczekiwaniami tutaj, FWIW. Z jakiej wersji korzystasz i czy zmieniłeś jakieś konfiguracje z domyślnej?
Bernard,
Dzieje się tak po podłączeniu do dwóch różnych maszyn. Moja maszyna debian ma ekran 4 z niektórymi niestandardowymi konfiguracjami, a moje okno rhel 5.3 ma także ekran 4 bez niestandardowych konfiguracji i oba pudełka zachowują dokładnie to samo zachowanie.
AlexMax
Mam dokładnie takie samo zachowanie. Innym objawem tego (nieopisanym powyżej) jest to, że po „zjedzeniu” poprzedniego wiersza, przy selekcji zdarzają się dziwne rzeczy. Rozpocznij wybieranie za pomocą myszy, a wszystko, co jest pod zaznaczeniem, będzie wyglądać poprawnie. Przykład: jeśli wybierzesz wiersz „$ asdf” w ostatnim przykładzie powyżej, nagle zmieni się on na „bash: asdf: polecenie nie znaleziono” (tak powinien powiedzieć poprzedni wiersz). To tak, jakby ekran właśnie nie narysował ponownie tych linii, ale powinien. To tak, jakby zapomnieć oznaczyć te linie jako brudne i trzeba je ponownie renderować.
Ededified
W dowolnym momencie zaczyna się psuć, po prostu wybierz wszystko (COMMAND + A), aby bufor ekranu wyglądał poprawnie.
Ededified
Nie stanowi to również problemu w iTerm.app
zredagowano

Odpowiedzi:

7

Sukces! Wypróbowałem sugestię stąd:

/server/272818/screen-not-dropping-down-a-line

który ma dodać:

termcapinfo xterm* ti@:te@

do .screenrcekranu ponownego uruchamiania. To zmienia zachowanie przewijania ekranu na coś, co prawdopodobnie jest lepsze dla mojego przeciętnego przypadku użycia (np. Mogę używać przewijania w Terminalu, dopóki pozostaję w tym samym oknie), oprócz naprawienia problemu OP.

Mogę również potwierdzić problem w aplikacji Terminal.app 10.7.

Nate
źródło
Dobra robota detektywistyczna! Niestety jestem intensywnym użytkownikiem wielu okien ekranu, więc to nie zadziała dla mnie.
AlexMax
to też nie działa dla mnie, gdy ssh do innego serwera, gdzie właśnie napotykam problem. nie jestem pewien, czy można to tak określićtermcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm' ti@:te@
Brian Thomas
2

Może to być „tryb przewijania w poziomie”. Uruchom następujące polecenie:

bind 'set horizontal-scroll-mode off'

i sprawdź, czy twoje objawy się zmienią. Jeśli tak, możesz ustawić to w ~ / .inputrc

wfaulk
źródło
1
w moim przypadku nie pomogło.
Ededified
0

Przejdź do ustawień terminala i zmień ustawienie „Deklaruj terminal jako:” z „xterm-color” na „xterm”. To naprawiło to dla mnie (ale ma również konsekwencję wyłączenia altscreen :()

Eddified
źródło
Skonfigurowałem już Terminal.app w ten sposób i nie pomaga mi to z moim problemem. Tryb przewijania w poziomie jest domyślnie wyłączony zgodnie ze stroną man screen, i nie widzę nigdzie, gdzie jest włączony. Porażka. Naprawdę chciałbym znaleźć rozwiązanie tego problemu.
Tim Harper