Почему в некоторых системах nano неправильно перерисовывает экран?
Это странно.
В некоторых моих системах Debian, но не во всех, я получаю странное повреждение в некоторых терминальных программах, таких как nano
, Это не происходит, однако, при использовании less
, В данном конкретном случае я использую 64-разрядную версию Debian 7.9 "Wheezy". Я установил кучу пакетов, но IIRC эта проблема, как известно, случается даже при новой установке.
Проблема заключается в следующем. Я открываю большой текстовый документ (т.е. с несколькими страницами) в нано и, используя клавиши курсора, пролистываю его. Всякий раз, когда курсор проходит ниже нижней части экрана, документ опускается на половину страницы. Это, конечно, нормально. Однако, что не является нормальным, так это то, что обновляется только нижняя половина экрана!
Аналогично, когда я перемещаю курсор вверх, отображается предыдущая страница, но обновляется только верхняя половина экрана.
Я считаю, что это лучше всего иллюстрировать реальными иллюстрациями. Пожалуйста, рассмотрите следующее изображение фиктивного файла, содержащего только номера строк:
Это должна быть фотография, потому что проблема не возникает по ssh. Это также, как ни странно, не происходит, если я впервые выдаю screen
команда.
Я перемещаю курсор ниже строки 43, и происходит следующее:
Обратите внимание, как обновляется нижняя половина экрана, теперь отображаются строки, начинающиеся с 44, а верхняя половина остается неизменной.
Если я снова переместу курсор в нижнюю часть экрана, это произойдет снова:
Еще раз, нижняя половина экрана обновилась, чтобы показать линии, начинающиеся с 66, в то время как верхняя половина экрана остается неизменной.
Если затем я наведу курсор на верхнюю часть экрана, то в верхней половине появится та же проблема:
Как видите, верхняя половина экрана обновилась, чтобы показать строки с 23 по 44, в то время как нижняя половина не изменилась, и все еще показывает строки, начинающиеся с 67.
В настоящее время я использую zsh
оболочки, но точно такая же проблема возникает в bash
, Поэтому это не специфическая для оболочки проблема.
$lines
а также $columns
переменные пусты; и TERM
переменная установлена в xterm-256color
,
Итак.... почему это происходит, и что я могу с этим поделать? Благодарю.
1 ответ
Так что проблема в том, что у вас есть TERM=xterm-256color
но используют консоль Linux, которая не является xterm-совместимым терминалом. (И также не поддерживает 256 цветов.)
Если вы устанавливаете $TERM из вашего ~/.bashrc
или аналогичный файл, обязательно проверьте предыдущее значение перед установкой нового. Например:
case $TERM in
xterm|screen|tmux|rxvt-unicode)
TERM="$TERM-256color";;
esac