ekran usuwania poleceń „mniej” przy wyjściu - jak go wyłączyć?

79

Jak zmusić lessprogram, aby nie czyścił ekranu po wyjściu?

Chciałbym, żeby zachowywał się jak git logpolecenie:

  • opuszcza ostatnio widzianą stronę na ekranie po wyjściu
  • nie wychodzi lessnawet, jeśli zawartość mieści się na jednym ekranie (spróbuj git log -1)

Jakieś pomysły? W lesspodręczniku nie znalazłem żadnych odpowiednich opcji ani zmiennych env. Podejrzewam, że ustawia się je za pomocą zmiennej env.

Wojciech Kaczmarek
źródło
Przypuszczalnie potrzebujesz przewijanego aspektu less, więc morenie byłoby odpowiednie?
Svend

Odpowiedzi:

95

Aby zapobiec lessczyszczeniu ekranu po wyjściu, użyj -X.

Z strony podręcznika:

-X lub --no-init

Wyłącza wysyłanie ciągów inicjalizacji i deinicjalizacji termcap do terminala. Jest to czasem pożądane, jeśli ciąg deinicjalizacji robi coś niepotrzebnego, na przykład wyczyszczenie ekranu.

Jeśli chodzi o mniej ekscytujące, jeśli zawartość mieści się na jednym ekranie, jest to opcja -F:

-F lub --quit-if-one-screen

Powoduje, że less automatycznie kończy pracę, jeśli cały plik można wyświetlić na pierwszym ekranie.

-Fnie jest jednak domyślny, więc prawdopodobnie jest gdzieś dla ciebie ustawiony. Sprawdź env var LESS.

Śleske
źródło
Doskonały! -X właśnie miałem na myśli.
Wojciech Kaczmarek
7
Jest to szczególnie denerwujące, jeśli wiesz o tym, -Fale nie -X, ponieważ przejście do systemu, który resetuje ekran przy init, sprawi, że krótkie pliki po prostu nie pojawią się, bez wyraźnego powodu. To mnie ugryzło, ackgdy próbowałem przenieść moje ACK_PAGER='less -RF'ustawienia na komputer Mac. Wielkie dzięki!
markpasc
@markpasc: Dziękujemy za zwrócenie na to uwagi. Nie zdawałbym sobie sprawy, że ta kombinacja spowodowałaby ten efekt, ale teraz jest to oczywiste.
sleske,
7
Jest to szczególnie przydatne w przypadku man pager, aby strony podręcznika nie znikały, gdy tylko rzucisz mniej za pomocą klawisza „q”. Oznacza to, że przewijasz do pozycji na stronie podręcznika, która Cię interesuje, aby zniknęła po wyjściu z mniejszego pagera w celu użycia informacji. Dodałem więc: export MANPAGER='less -s -X -F'do mojego .bashrc, aby informacje o stronie podręcznika były wyświetlane na ekranie, kiedy rzuciłem mniej, aby móc z niego korzystać zamiast zapamiętywać.
Michael Goldshteyn
2
To trochę do bani, że musisz zdecydować, kiedy zaczniesz, lessjak ma się zachowywać, kiedy zamierzasz wyjść.
Michael Burr
17

Jeśli chcesz, aby którakolwiek z opcji wiersza poleceń była zawsze domyślna, możesz dodać do swojego .profile lub .bashrc zmienną środowiskową LESS. Na przykład:

export LESS="-XF"

będzie zawsze stosować -X -F, ilekroć podczas tej sesji logowania zostanie uruchomione mniej.

Czasami polecenia są aliasowane (nawet domyślnie w niektórych dystrybucjach). Aby to sprawdzić, wpisz

alias

bez argumentów, aby sprawdzić, czy został aliasowany z opcjami, których nie chcesz. Aby uruchomić rzeczywistą komendę w zmiennej $ PATH zamiast aliasu, wystarczy poprzedzić ją ukośnikiem:

\less

Aby sprawdzić, czy zmienna środowiskowa LESS jest ustawiona w twoim środowisku i wpływa na zachowanie:

echo $LESS
Derek Douville
źródło
2
W rzeczywistości dodaję, export LESS="-XFR"aby kolory również się wyświetlały less.
dotancohen
2
Dziękuję za to! -XFsam z siebie przełamał moc wyjściową git diffi -XFRuzyskuje to, co najlepsze z obu światów - bez czyszczenia ekranu, ale z kolorowym git diffwyjściem.
Giles Thomas
1

Lub po prostu ustaw go w globalnej konfiguracji git:

git config --global core.pager 'less -FX'

W ten sposób nie ma to wpływu na inne narzędzia (co lubię).

Lester Cheung
źródło