Запрет Vim очистить терминал после выхода

15

Если я сделаю:

$ less file

И нажмите qдля выхода less, я все еще вижу тот же текст, который был на экране, когда lessвсе еще работал.

Однако, если я сделаю

$ vim file

И :qмой терминал пуст

Скриншоты моего терминала после выхода lessи vim:

введите описание изображения здесь введите описание изображения здесь

Могу ли я как-то предотвратить это? Это только в моей системе Linux. Моя FreeBSD система на самом деле работает , как ожидалось ( с использованием тех же программное обеспечение / настройки все вокруг, TERMэто xterm-colorдля обоих, vim -u NONEне делает разницы).

Пример того, что я хотел бы иметь:

введите описание изображения здесь

Мартин Турной
источник

Ответы:

18

По умолчанию VIM при завершении посылает строку, сконфигурированную с опцией, t_teна хост-терминал, чтобы сказать ему очистить экран. Чтобы избежать этого, просто :set t_te=ничего не отправляйте в терминал и избегайте очистки экрана. Смотрите :help termформу больше информации о возможностях терминала.

toro2k
источник
2

Поскольку вы используете xterm, вы можете использовать его основной и альтернативный экранные буферы для замены экрана, как в этом разделе из моего .vimrc

if &term == "linux"
    set t_ti=^[[?1049h
    set t_te=^[[?1049l
endif                                                       

Примечание: ^[это не буквальный текст, это escape-символ, используйте Ctrl+ v, Escчтобы вставить его.

Эти команды vim добавляют соответствующие команды, которые могут отсутствовать в записи linux terminfo. Больше информации на

:help xterm-screens
jalanb
источник
Хм, все еще ничего не делает? Это работает, как будто я использую set t_te=, но это должно сделать больше, я думаю?
Мартин Турной