Как «человек» восстанавливает экран при выходе из программы?


18

Если я открываю справочную страницу программы наподобие catили ls, она печатает (может не подходящее слово) содержимое справочной страницы, а когда я нажимаю q, она показывает экран, как и перед вызовом manкоманды. Как происходит восстановление? Что стирает все, а затем печатает предыдущее содержимое оболочки?

Пример:

[VAR121@Tesla Testing]$  man ls

Выход:

LS(1)                                                        User Commands                                                        LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

 ............

Когда я нажимаю q, на экране снова отображается внешний вид оболочек, такой как подсказка, показанная ниже.

[VAR121@Tesla Testing]$  man ls
[VAR121@Tesla Testing]$

Как восстанавливается экран?

Ответы:


19

«Выемка» и «восстановление» экран на самом деле является функцией эмулятора терминала вы используете ( xterm, gnome-terminal, konsole, screen).

По умолчанию, пейджер , который manиспользует это less.

Из man 1 man

   -P  pager
          Specify  which pager to use.  This option overrides the 
          MANPAGER environment variable, which in turn overrides 
          the PAGER variable.  By default, man  uses /usr/bin/less -is.

Когда lessвызывается, эмулятор терминала запускает альтернативный экран для отображения содержимого страницы руководства. При lessвыходе altscreen уничтожается, и терминал отображает то, что было сохранено в буфере.

Существует ответ здесь , который говорит об этом дальше и как сохранить программы , как lessот запуска в altscreen и , таким образом , очищая экран , когда он выходит. В двух словах, вы можете определить переменную среды, чтобы lessне запускать альтернативный экран при вызове. Если вы используете bash, поместите это в ~ / .bashrc:

export MANPAGER="/usr/bin/less -r -X -is"


1
Та же история viтоже?
VAR121

3
vim соблюдает альтернативный экран в вашем эмуляторе терминала. Вы можете добавить что-то подобное в ваш ~ / .vimrc - "set t_ti = t_te =", чтобы изменить возможности терминала, которые использует vim.
Джордж М
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.