Отображение Vi испорчено на удаленных серверах с использованием XQuartz

Я пытаюсь получить доступ к редактору vi с помощью Xquartz на удаленном сервере с помощью компьютера Mac. Удаленный сервер использует Linux

Проблема, с которой я столкнулся, заключается в том, что если я пытаюсь открыть файл, предыдущая история файлов/команд начинает портиться с отображением. Чтобы было ясно, это не искажает содержимое файла, а только отображение. Прикрепляю снимок ниже

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

На самом деле файл содержит только те вещи, которые выделены черным цветом. @/C^ и т. д., выделенные синим цветом, относятся к ранее открытому (и закрытому после этого) файлу, а остальные, отмеченные красным, также относятся к истории команд.

Прочитав некоторые из предыдущих сообщений, некоторые предложили использовать команды сброса shopt | grep проверить винсайз. я попробовал шопт | grep checkwinsize, и он показывает, что checkwinsize включен. Теперь у меня нет вариантов. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация

Редактировать: эхо $TERM: цвет xterm

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


person Vaidyanathan    schedule 24.10.2017    source источник
comment
В вопросе не упоминается значение TERM (ни вывод infocmp). Оба необходимы, чтобы показать, что это просто проблема с эмулятором терминала. Если вы также используете screen или tmux, они также (кроме vim) могут запутаться в том, что на самом деле отображается на терминале.   -  person Thomas Dickey    schedule 25.10.2017
comment
Я не очень знаком с этим. По вашему предложению я добавил как $TERM, так и infocmp.   -  person Vaidyanathan    schedule 25.10.2017


Ответы (1)


На самом деле это vim, а не vi (последняя строка на экране это демонстрирует).

Учитывая, что большая часть нежелательного текста осталась бы на альтернативном экране, кажется, что вы используете описание терминала, которое предоставляет пустые строки для smcup и rmcup для переключения на/с альтернативного экрана.

Часть этих функций очищает экран при переключении на альтернативный экран, а vim не очищает экран сам по себе (если только вы не нажмете controlL, например, чтобы перекрасить экран).

Поскольку люди часто советуют редактировать описание терминала, чтобы удалить эти возможности, 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
comment
Как позаботиться об этой проблеме? Ctrl+L не работает - я имею в виду, что когда я открываю редактор vi/vim и прокручиваю одну страницу вниз, детали (буквы/слова и т. д.) с предыдущей страницы по-прежнему отображаются на новой странице. - person Vaidyanathan; 25.10.2017
comment
Меню управления/средней мыши имеет полный сброс, который может помочь. Но проблема скорее всего в описании терминала. - person Thomas Dickey; 25.10.2017