Чи є спосіб вийти з "менш", не очищаючи екран?


68

Відносно часто мені здається, що я хочу кинути, lessале залишити те, що я переглядав на екрані, щоб посилатися на це. Чи можна це зробити? Обхідні шляхи?

(Моє поточне вирішення питання - кинути, а потім скористатися more. Тож будь-яке вирішення, що є кращим, ніж це вітається. Ідеальним було б те, що я можу використати, коли я вже всередині less, можливо, з налаштуваннями оболонки або деяким сценарієм.)

Мій робочий стіл - OSX, але я використовую сервери RHEL та Ubuntu.


1
Читання довгого результату (як у git diffабо git log) в less -Xбуде займати буфер прокрутки в моєму терміналі і вилучати більшу частину попереднього виводу. Мені б подобалося, якби lessможна було просто вийти з останнім скріншотом виходу на момент виходу; тобто після закриття не буде зайнято більше однієї сторінки буфера прокрутки less. Будь-які ідеї?
musiphil

До речі, -Rзазвичай це безпечніший вибір, ніж -r.
musiphil

Дякую. Для тих, хто цікавиться:-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."
Стів Беннетт

@musiphil Можливо -c?
Ванеса Фіппс

@MatthewPhipps: Я думаю, -cйдеться про те, як оновити екран, коли ви рухаєтесь усередині less.
musiphil

Відповіді:


68

Це фактично функція емулятора терміналу, який ви використовуєте (xterm, gnome-terminal, konsole, screen). Замінний екран або altcreen запускається, коли такі програми, як-от lessабо vimвикликаються. Цей альтскрін не має буфера історії і вимикається негайно, коли ви виходите з програми, повертаючись до початкового екрану, який відновлює попередню історію вмісту вікна та місця розташування.

Ви можете попередити lessзапуск на іншому екрані, передавши аргумент "-X".

less -X /path/to/some/file

Ви також можете передавати "-X" як змінну середовища. Тож якщо ви користуєтесь bash, помістіть це у ~/.bashrc:

export LESS="-X"

Однак це відключає ініціалізацію та деініціалізацію термінакап (можливості терміналу), тому інші види, коли ви користуєтесь, lessможуть з’являтися вимкненими.

Іншим варіантом буде використання screenта встановлення параметра altscreen offу вашому ~/.screenrc. lessне очистить екран і має зберегти кольорове форматування. Імовірно, tmuxбуде такий же варіант.

Ця запис у блозі описує проблему та пропонує деякі різні рішення, специфічні для яких gnome-terminalз різним успіхом.


2
Ідеально. Чи є мінус?
Стів Беннетт

2
Зачекайте, я вже виявив одне - вихід git log(і, можливо, інших кольорових команд) заплутаний.
Стів Беннетт

1
@SteveBennett Це досить мало, я ставлю його псевдонімом:alias les="/usr/bin/less -X"
bonsaiviking

4
Гей, я думаю , що я тільки що виявив протиотруту до git logпитання вище: export LESS="-r -X". (Не знаю , що побічні ефекти , які є ...)
Steve Bennett

5
Насправді, gitвстановлює LESSзмінну, FRSXякщо вона не встановлена, коли вона запускає пейджер, тому ви можете просто залишити LESSневідомим і lessавтоматично запустити -FRSX. Шукайте core.pagerв системі git-config(1)для отримання додаткової інформації.
musiphil

4

Рішення Джорджа не спрацювало для мене, але це було рішення (із запису блогу, пов'язаного у його відповіді).

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

  2. Редагувати ~ / xterm-noclear.src

    • змінити ім'я у другому рядку з 'xterm' на 'xterm-noclear', або що завгодно (також змінити 'xterm-debian', якщо він присутній)

    • видаліть інструкції 'smcup' та 'rmcup' (наприклад, "smcup = \ E [? 1049h" та "rmcup = \ E [? 1049l,")

  3. $ mkdir ~/.terminfo

  4. $ tic ~/xterm-noclear.src (x / xterm-noclear має з’явитися у вашому каталозі ~ / .terminfo)

  5. $ export TERM=xterm-noclear (тепер перевірте поведінку менше і, якщо задоволено, додайте рядок директиви експорту до ~ / .profile)

(Я скопіював ці вказівки безпосередньо з відхиленої редакції відповіді Джорджа від @ jah.)


4

Я пам’ятаю це, less -SEXколи мені потрібно скинути вихід на екран, але я не хочу обертати лінії. Наприклад, docker ps | less -SEXщо це таке:

  • -S
    • Прокрутіть замість обгортання
    • Якщо ви кинете -E, ви можете використовувати клавіші зі стрілками для прокрутки
  • -E
    • Вийдіть, коли доїдете до EOF
  • -X
    • Попередження заміни / блокування термінів
    • Частина "пам'яті" полягає в тому, що я знаю, що робить S і E, тому це повинна бути інша частина. (І наша причина для здійснення цієї команди в пам'яті полягає в тому, що ми хочемо скинути (не вводити в інтерактивний сеанс) розпакований вихід.

Якщо ви не можете згадати less -SEX, надію на вас не так багато. Просто щоразу переглядайте Google.


У хлопця є проблеми, а ви пропонуєте йому менше сексу?
yossico
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.