Wyłącz zawijanie linii dla danych wyjściowych w terminalu


69

Często czytam wyjścia w terminalu, które są zawijane, ponieważ są zbyt długie. Ponieważ nie ma możliwości zmodyfikowania wydruku, muszę pozwolić Terminalowi na przewijanie w poziomie.

Czy mogę zmodyfikować domyślny terminal OS X, aby wyłączyć zawijanie linii i umożliwić przewijanie w poziomie ?

A może znasz inną alternatywę, której mogę użyć?


Stare pytanie, ale wydaje mi się, że wciąż pozostaje nierozwiązane. Potrzebuję tej samej odpowiedzi, ponieważ dla mnie nie mogę dalej edytować danych wyjściowych np. GCC: gcc.gnu.org/onlinedocs/gcc/Language-Independent-Options.html Po ustawieniu flagi -fmessage-length=0nadal otrzymuję wiele- wyjście ostrzeżenia / błędu linii. a ja nie (na razie).
Michael Trouw,

Odpowiedzi:


51

tput zrobił dla mnie lewę :

tput rmam

wyłącza zawijanie linii.

tput smam

umożliwia owijanie linii.


13
+1, ale jakikolwiek sposób na dodanie przewijania w poziomie?
Erik Allik,

Klawisze strzałek działają dla mnie, aby przejść poziomo do następnego ekranu.
michid

7
Nie widzę, jak używać klawiszy strzałek ... one dla mnie nie działają. To rozwiązanie wydaje się po prostu przycinać linie do szerokości bieżącego okna. Kiedy powiększam okno, po prawej stronie wierszy jest pusta przestrzeń, o której wiem, że zawiera więcej znaków. To rozwiązanie jest jednak przydatne do moich celów, ponieważ wyświetlam dzienniki, a informacje po prawej stronie są w tej chwili nieistotne.
Jason

2
niezłe znalezisko! dodałem sobie kilka niezapomnianych aliasów zsh: alias wrapon='tput rmam'&alias wrapoff='tput smam'
Chris J Allen,

2
rozmowa o zaciemnionych poleceniach
Andy

7

Przeprowadź wyjście przez less -S:

   -S or --chop-long-lines
          Causes lines longer than the screen width to be chopped (truncated)
          rather than wrapped.  That is, the portion of a long line that does
          not fit in the screen width is not shown.  The default is  to  wrap
          long lines; that is, display the remainder on the next line.

Próbowałem wyjaśnić, co się tutaj dzieje , chociaż nie spowoduje to przewijania w poziomie za pomocą paska przewijania, jak się wydaje.


6

Wydaje się, że iTerm 2 również nie obsługuje wyłączania zawijania linii. Możesz po prostu użyć mniej lub zmniejszyć:

less /var/log/system.log
expand /var/log/system.log | cut -c 1-$COLUMNS
less -s <<< "$(osascript -e 'tell app "Terminal" to contents of window 1')"

1

Jeśli jesteś (jak inni sugerują jako rozwiązanie, chociaż myślę, że pytałeś o bezpośrednie wyjście), przekieruj wyjście do pliku somename.log i otwórz go za pomocą aplikacji> Narzędzia> Log-Viewer (lub z wiersza poleceń as open somename.log).

Nie ma go w terminalu, ale znalazłem przeglądarkę dziennika do tej, która najlepiej nadaje się do obsługi dużej ilości danych wyjściowych (wyszukiwanie, przewijanie, filtrowanie).


Myślę, że masz na myśli Console.app, prawda? Nie ma Log Viewer.appw Narzędziach. Jednak konsola również się zawija, jedyną różnicą jest to, że długie linie są domyślnie zwężane. Musisz je kliknąć, aby przeczytać wszystko - więc to niestety nie pomoże.
gentmatt

0

W zależności od tego, co próbujesz przerwać, możesz użyć vima. Więc uruchom vim na pliku z długimi liniami, a następnie wpisz:

:se nowrap

1
To nie pomoże, ponieważ nie czytam plików. Czytam informacje o sieci za pośrednictwem lsof.
gentmatt

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.