Здається, ця функція називається "альтернативним екраном" або переключенням між звичайним та альтернативним екраном.
Дослідити його можна за допомогою xterm. Наприклад , тип man man
В одному xterm
і виходу людини. Тепер ви можете перейти на альтернативний екран через Ctrl+ Mouse2 (середній клацання) -> "Показати альтернативний екран". Крім того, ви можете безпосередньо вводити послідовності керування xterm , наприклад:
$ echo -e '\033[?47h' # alternate screen
$ echo -e '\033[?47l' # normal screen
Останні дві команди також працюють у gnome-терміналі (можливо, в інших теж).
Що відбувається , коли man
/ vi
/ і less
т.д. запуск в основному вони посилають абстрактну команду ясно екрану. Після виходу (або призупинення) вони надсилають абстрактну команду відновлення екрана. Як команда переводиться на конкретні послідовності управління терміналом, визначено в базі даних terminfo .
Вимкнути поперемінне перемикання екрана
Що має працювати для всіх терміналів, це коригувати локальні записи терміна, тобто видаляти відображення абстрактних команд очищення / відновлення екрана.
Ви можете це зробити так - для поточного $TERM
запису (наприклад, для gnome-терміналу у Fedora 19):
$ echo $TERM
xterm-256color
$ infocmp -1 > xterm-256color
$ sed 's/^\(xterm-256color\)|/\1-na|/ ; /smcup\|rmcup/d ' \
xterm-256color > xterm-256color-na
$ diff -u xterm-256color*
--- xterm-256color 2013-08-04 16:33:52.041393461 +0200
+++ xterm-256color-na 2013-08-04 16:36:56.829930520 +0200
@@ -1,5 +1,5 @@
# Reconstructed via infocmp from file: /usr/share/terminfo/x/xterm-256color
-xterm-256color|xterm with 256 colors,
+xterm-256color-na|xterm with 256 colors,
am,
bce,
ccc,
@@ -155,7 +155,6 @@
rin=\E[%p1%dT,
rmacs=\E(B,
rmam=\E[?7l,
- rmcup=\E[?1049l,
rmir=\E[4l,
rmkx=\E[?1l\E>,
rmm=\E[?1034l,
@@ -170,7 +169,6 @@
sgr0=\E(B\E[m,
smacs=\E(0,
smam=\E[?7h,
- smcup=\E[?1049h,
smir=\E[4h,
smkx=\E[?1h\E=,
smm=\E[?1034h,
$ tic xterm-256color-na # loads the file to $HOME/.terminfo
$ find ~/.terminfo -type f
$ HOME/.terminfo/x/xterm-256color-na
Тепер ви можете протестувати це за допомогою:
$ TERM=xterm-256color-na man man # and then hit q
Ви можете повторити вищезазначені дії для інших терміналів, якщо ви використовуєте декілька. Якщо все працює так, як очікувалося, ви можете встановити TERM
через свій оболонку rc-файл.
Ви також можете безпосередньо вказати ім'я терміналу як параметр infocmp
, наприклад:
$ infocmp -1 screen > screen
Увімкнути альтернативне перемикання екрана
Деякі термінали підтримують функцію альтернативного переключення екрана (наприклад, екран ), але вимикають її за замовчуванням .
Бо screen
ви можете ввімкнути це за допомогою свого ~/.screenrc
:
$ cat ~/.screenrc
altscreen
Якщо ви віддалено входите через ssh до - скажімо - системи Solaris, можливо, віддалено налаштована термінальна база даних для всієї системи є своєрідною історією, зламаною або містить деякі незвичайні / специфічні для Solaris типові параметри, які не відповідають терміналам 'край краю кровотоку' ви запускаєте ssh.
Таким чином, це можливість просто скопіювати локальну базу даних terminfo з / usr / share / info (на клієнті) в host:~/.terminfo
(на сервер).
Якщо складений формат terminfo не сумісний, ви також можете експортувати / імпортувати записи, як у попередньому пункті.
Я пробував термінал-db з установки Cygwin і копіював його безпосередньо в систему Solaris 10.
У випадку, якщо ви хочете поділитися альтернативним терміналом db між користувачами, ви вкажете його шлях через TERMINFO
змінну середовища.
Ігноруйте послідовність управління
Деякі термінали підтримують відключення послідовності керування для альтернативного переключення екрана. Наприклад, xterm має опцію, gnome-terminal не має.
Для xterm це X-ресурс , наприклад
XTerm*titeInhibit: true
Конфігурації програми
Деякі програми мають файли конфігурації, щоб налаштувати, яку послідовність керування / команду terminfo вони надсилають. Наприклад
$ LESS=X less foo
налаштовує less
не очищати / відновлювати екран.
Бо vim
можна включити щось на кшталт
set t_ti= t_te=
в тобі ~/.vimrc
.
Я не знайшов опцію, як налаштувати таку поведінку для верху - за замовчуванням не надсилає екран відновлення.