Czy jest jakiś sposób na wyjście z „mniej” bez wyczyszczenia ekranu?

68

Stosunkowo często zdarza mi się, że chcę rzucić palenie, lessale zostawiam to, co oglądałem na ekranie, aby odnieść się do nich. Czy jest na to jakiś sposób? Obejścia?

(Moje obecne obejście polega na wyjściu, a następnie użyciu more. Więc każde obejście, które jest lepsze niż to, jest mile widziane. Ideałem byłoby coś, czego mogę użyć, gdy już jestem w środku less, być może z ustawieniem powłoki lub skryptem).

Mój pulpit to OSX, ale używam serwerów RHEL i Ubuntu.

Steve Bennett
źródło
1
Odczyt długiego wyjścia (jak w git difflub w git log) less -Xzajmie bufor przewijania w moim terminalu i eksmituje większość poprzednich wyników. Bardzo bym chciała, gdyby lessmogła wyjść z ostatniego ekranu wyjścia w momencie wyjścia; tzn. po zamknięciu nie zostanie pobrana więcej niż jedna strona bufora przewijania less. Jakieś pomysły?
musiphil
Nawiasem mówiąc, -Rjest to zwykle bezpieczniejszy wybór niż -r.
musiphil
Dzięki. Dla tych, którzy zastanawiają się:-R is "Like -r, but only ANSI "color" escape sequences are output in "raw" form. Unlike -r, the screen appearance is maintained correctly in most cases."
Steve Bennett
@musiphil Być może -c?
Vanessa Phipps
@MatthewPhipps: Chyba -cchodzi o to, jak zaktualizować ekran, kiedy się poruszasz less.
musiphil

Odpowiedzi:

68

Jest to w rzeczywistości funkcja emulatora terminala, którego używasz (xterm, gnome-terminal, konsola, screen). Alternatywny ekran lub altscreen uruchamia się, gdy wywoływane są programy takie jak lesslub vim. Ten altscreen nie ma bufora historii i wychodzi natychmiast po wyjściu z programu, przełączając się z powrotem do oryginalnego ekranu, który przywraca poprzednią historię zawartości i umieszczenie okna.

Można zapobiec lessuruchomieniu na ekranie altscreen, przekazując argument „-X”.

less -X /path/to/some/file

Możesz także przekazać „-X” jako zmienną środowiskową. Więc jeśli używasz bash, umieść to w ~/.bashrc:

export LESS="-X"

Jednak to uniemożliwia inicjalizację i deinicjalizację termcap (zdolność terminalowa), więc inne widoki podczas używania lessmogą się wydawać niepoprawne .

Inną opcją byłoby użycie screeni ustawienie opcji altscreen offw swoim ~/.screenrc. lessnie wyczyści ekranu i powinien zachować formatowanie kolorów. Prawdopodobnie tmuxbędzie miał tę samą opcję.

Ten wpis na blogu opisuje problem i oferuje różne rozwiązania specyficzne dla gnome-terminalróżnych sukcesów.

George M.
źródło
2
Doskonały. Czy jest jakiś minus?
Steve Bennett
2
Poczekaj, odkryłem już jeden - wynik git log(i prawdopodobnie innych kolorowych poleceń) jest zawalony.
Steve Bennett
1
@SteveBennett To wystarczająco małe, że zrobiłbym z tego alias:alias les="/usr/bin/less -X"
bonsaiviking
4
Hej, myślę, że właśnie odkrył antidotum do git logemisji powyżej: export LESS="-r -X". (Nie mam pojęcia, jakie skutki uboczne , które są ...)
Steve Bennett
5
Właściwie gitustawia LESSzmienną na, FRSXjeśli jest rozbrojona, kiedy uruchamia pager, więc możesz po prostu pozostawić LESSnieuzbrojony i lessautomatycznie uruchomi się -FRSX. Sprawdzić core.pagerIN git-config(1), aby uzyskać więcej informacji.
musiphil
4

Rozwiązanie George'a nie działało dla mnie, ale to rozwiązanie zadziałało (z wpisu na blogu podanego w jego odpowiedzi).

  1. $ infocmp -I xterm > ~/xterm-noclear.src

  2. Edytuj ~ / xterm-noclear.src

    • zmień nazwę w drugim wierszu z „xterm” na „xterm-noclear” lub cokolwiek ci odpowiada (zmień również „xterm-debian”, jeśli jest obecny)

    • usuń instrukcje „smcup” i „rmcup” (np. „smcup = \ E [? 1049h” i „rmcup = \ E [? 1049l”)

  3. $ mkdir ~/.terminfo

  4. $ tic ~/xterm-noclear.src (x / xterm-noclear powinien pojawić się w twoim katalogu ~ / .terminfo)

  5. $ export TERM=xterm-noclear (teraz sprawdź zachowanie less i, jeśli jest zadowolony, dodaj wiersz dyrektywy eksportowej do swojego ~ / .profile)

(Skopiowałem te instrukcje bezpośrednio z odrzuconej edycji odpowiedzi George'a @ jah).

prl
źródło
4

Zapamiętałem to, less -SEXkiedy muszę zrzucić dane wyjściowe na ekran, ale nie chcę zawijać linii. Na przykład docker ps | less -SEXto:

  • -S
    • Przewiń zamiast zawijać
    • Po upuszczeniu -Emożesz przewijać za pomocą klawiszy strzałek
  • -E
    • Wyjdź po osiągnięciu EOF
  • -X
    • Zapobiegaj zamianie / wygaszaniu terminów
    • Część „pamięci” polega na tym, że wiem, co robi S i E, więc to musi być druga część. (A naszym powodem do wprowadzenia tego polecenia do pamięci jest to, że chcemy zrzucić (nie wchodzić w sesję interaktywną) nieopakowane dane wyjściowe.

Jeśli nie pamiętasz less -SEX, nie masz wiele nadziei. Po prostu ponownie google za każdym razem.

Bruno Bronosky
źródło
Facet ma problem, a ty oferujesz mu mniej seksu?
yossico