На самом деле это vim, а не vi (последняя строка на экране это демонстрирует).
Учитывая, что большая часть нежелательного текста осталась бы на альтернативном экране, кажется, что вы используете описание терминала, которое предоставляет пустые строки для smcup
и rmcup
для переключения на/с альтернативного экрана.
Часть этих функций очищает экран при переключении на альтернативный экран, а vim не очищает экран сам по себе (если только вы не нажмете control em>L
, например, чтобы перекрасить экран).
Поскольку люди часто советуют редактировать описание терминала, чтобы удалить эти возможности, vim, вероятно, справится с этим «как и ожидалось», поэтому я ожидаю чего-то необычного, такого как пустые строки, например,
smcup=,rmcup=,
в выводе infocmp
. Это не нужно (и было в течение двадцати лет) с xterm
. См. часто задаваемые вопросы по xterm Почему экран не очищается при запуске vi?
В исправленном вопросе TERM
использует xterm-color
который (см. FAQ Что $TERM следует использовать?) не рекомендуется (предпочтительнее использовать xterm-xfree86
или xterm-new
). Но vim должен справиться с этим (он работает на моей машине, переходя с xterm #326 на OSX на Debian 7). Однако при быстрой проверке с использованием vim для редактирования, например, /bin/sh и выходе, он показывает некоторую (меньшую) путаницу в отношении того, как очистить экран, оставляя некоторый мусор.
Различие между xterm-color и xterm-new заключается в том, что в последнем vim (должен) видеть, что он может быстрее очищать экран. В первом случае он должен перезаписывать области на экране, и если он запутался (например, из-за разницы в локали и настройках терминала) в отношении того, что отображается на экране, то он оставит заметный мусор.
Вы можете увидеть, использует ли xterm
кодировку UTF-8, по наличию галочки в меню (управление правой кнопкой мыши) Кодировка UTF-8. Если это не установлено, а локаль на удаленном сервере использует UTF-8, вы можете получить интересное (и неожиданное) поведение. Просто введите
locale
в командной строке, чтобы увидеть (обычно переменные локали, соответствующие кодировке UTF-8, каким-то образом именуются с суффиксом).
person
Thomas Dickey
schedule
24.10.2017
TERM
(ни выводinfocmp
). Оба необходимы, чтобы показать, что это просто проблема с эмулятором терминала. Если вы также используетеscreen
илиtmux
, они также (кромеvim
) могут запутаться в том, что на самом деле отображается на терминале. - person Thomas Dickey   schedule 25.10.2017