Это странно.

В некоторых моих системах Debian, но не во всех, я получаю странное повреждение в некоторых терминальных программах, таких как nano . Это не происходит, однако, при использовании less . В данном конкретном случае я использую 64-разрядную версию Debian 7.9 "Wheezy". Я установил несколько пакетов, но IIRC эта проблема, как известно, случается даже при новой установке.

Проблема заключается в следующем. Я открываю большой текстовый документ (т.е. один с несколькими страницами) в нано и, используя клавиши курсора, пролистываю его. Всякий раз, когда курсор проходит ниже нижней части экрана, документ опускается на половину страницы. Это, конечно, нормально. Что не является нормальным, так это то, что обновляется только нижняя половина экрана!

Аналогично, когда я перемещаю курсор вверх, отображается предыдущая страница, но обновляется только верхняя половина экрана.

Я считаю, что это лучше всего иллюстрировать реальными иллюстрациями. Пожалуйста, рассмотрите следующее изображение фиктивного файла, содержащего только номера строк:

иллюстрация 1

Это должна быть фотография, потому что проблема не возникает по ssh. Это также, как ни странно, не произойдет, если я сначала введу команду screen .

Я перемещаю курсор вниз под строкой 43, и происходит следующее:

иллюстрация 2

Обратите внимание, как обновляется нижняя половина экрана, теперь отображаются строки, начинающиеся с 44, а верхняя половина остается неизменной.

Если я снова переместу курсор в нижнюю часть экрана, это произойдет снова:

иллюстрация 3

Еще раз, нижняя половина экрана обновилась, чтобы показать линии, начинающиеся с 66, в то время как верхняя половина экрана остается неизменной.

Если затем я наведу курсор на верхнюю часть экрана, то в верхней половине появится та же проблема:

иллюстрация 4

Как вы можете видеть, верхняя половина экрана обновилась, чтобы показать строки с 23 по 44, в то время как нижняя половина не изменилась, и все еще показывает строки, начинающиеся с 67.

В настоящее время я использую оболочку zsh , но точно такая же проблема возникает в bash . Поэтому это не специфическая для оболочки проблема.

Переменные $lines и $columns являются пустыми; и переменная TERM установлена в xterm-256color .

Итак .... почему это происходит, и что я могу с этим поделать? Благодарю.

1 ответ1

1

Таким образом, проблема в том, что у вас TERM=xterm-256color но вы используете консоль Linux, которая не является xterm-совместимым терминалом. (И также не поддерживает 256 цветов.)

Если вы устанавливаете $ TERM из своего ~/.bashrc или аналогичного файла, обязательно проверьте предыдущее значение, прежде чем устанавливать новое. Например:

case $TERM in
    xterm|screen|tmux|rxvt-unicode)
        TERM="$TERM-256color";;
esac

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .