Ответ 1
ОБНОВЛЕНИЕ: Я забыл о функции screen
, которая по умолчанию отключает поддержку альтернативного экрана.
Добавьте altscreen on
в свой $HOME/.screenrc
, чтобы включить его. Это, вероятно, все, что вам нужно сделать; все беспорядки с $TERM
, $TERMCAP
и $TERMINFO
, вероятно, не нужны. В любом случае я оставлю остальную часть этого ответа.
У меня было это в моем собственном .screenrc
, так что это проскользнуло мне.
Чтобы включить эту функцию для текущего сеанса, введите ваш screen
escape-символ (Cntrl-A по умолчанию), а затем :altscreen on
Enter.
Без этого screen
не будет реагировать на escape-последовательности, даже если они определены в terminfo или termcap.
vim
(и less
, и большинство других программ на основе полного проклятия) используют строки smcup
и rmcup
, определенные в записи terminfo для вашего терминала. (Они называются ti
и te
, соответственно, в старой системе termcap). smcup
переключается на альтернативный экран, а rmcup
переключается на основной экран.
Если ваша запись terminfo не имеет этих строк, программы не смогут этого сделать.
Команда экрана по умолчанию устанавливает $TERM
в "screen"
. По-видимому, запись "term" terminfo не имеет smcup
и rmcup
.
Если вам нравится взломать записи terminfo, вы можете изменить существующую информацию для "экрана", чтобы добавить smcup
и rmcup
. Вам понадобится команда infocmp
, чтобы преобразовать вашу terminfo в текст и tic
, чтобы преобразовать ее обратно в двоичную форму, используемую terminfo.
Более простым решением является установка вашей переменной среды $TERM
в значение, которое было до того, как вы вызывали команду screen
. В настоящее время почти все терминальные эмуляторы основаны на старой DEC VT100, поэтому они должны быть достаточно совместимы.
В моей системе, например, когда я вхожу в систему, у меня есть TERM=xterm
; вероятно, что-то еще на MacOS. В рамках сеанса screen
по умолчанию у меня будет:
$ echo $TERM
screen
Я мог бы изменить его на xterm
следующим образом:
$ export TERM=xterm
(Снова замените "xterm" любым $TERM
на вашей системе.)
Вы также можете добавить
term xterm
на ваш $HOME/.screenrc
. Фактически screen
имеет несколько вариантов настройки ваших настроек termcap/terminfo; man screen
и найдите "terminfo" для деталей gory.