Я подключаюсь кZ-Shellна машине Red Hat Enterprise Linux 6.2 черезШпатлевка. После выхода из полноэкранного процесса, например Vim и меньше, в оболочке Unix приглашение оболочки начинается с последней строки экрана. Экран выше по-прежнему показывает контекст этого процесса, поэтому я потерял все, что показывала оболочка до того, как я открыла этот процесс.
Этого не происходит в моем Ubuntu, где после выхода из процесса я возвращаюсь к строке под последней введенной мной командой.
Какие параметры я могу изменить (возможно, в zshrc
?), чтобы заставить его вести себя как мой Ubuntu-бокс?
решение1
Я тоже видел эту проблему. Проверьте настройки PuTTY в Терминал->Функции. Если отмечен пункт "Отключить переключение на альтернативный экран терминала", снимите его. (Все мои настройки на этой странице не отмечены.) Справка по этой опции выглядит многообещающей.
Если это не удастся,эта страницаЯ нашел, что погуглив, вы можете получить некоторые идеи. Вы можете настроить некоторые вещи terminfo, чтобы заставить его работать правильно.
решение2
После исправления этой самой проблемы давным-давно я столкнулся с похожей проблемой, когда в Vim этой проблемы не было, но less
была. Это затронуло все программы, которые используют less
too, например man
. Причиной, как я обнаружил, была LESS
переменная окружения, которая перечисляет аргументы, которые автоматически передаются less
при каждом вызове. Опция внутри LESS
, которая вызвала это, была -X
:
-X
или--no-init
Отключает отправку строк инициализации и деинициализации termcap на терминал. Иногда это желательно, если строка деинициализации делает что-то ненужное, например, очищает экран.
Я также узнал отUnix и Linux – « less --quit-if-one-screen
без --no-init
»что если вы отключите -X
/ --no-init
, вы должны также отключить -F
/ --quit-if-one-screen
(если он у вас установлен).
Чтобы исправить less
так, чтобы он всегда восстанавливал ваш экран при выходе, измените значение LESS
в соответствующем файле инициализации оболочки. Это будет .bashrc
для Bash, .zshenv
для Zsh и .config/fish/config.fish
для Fish. В этот файл добавьте команду export LESS='<all the flags you want, without -X or -F>'
, или set -gx LESS <flags>
для fish. Вы можете запустить echo $LESS
заранее, чтобы увидеть существующие флаги для копирования в ваш оператор export
/ .set
решение3
Я понял! Все, что мне нужно сделать, это установить $TERM
. xterm
Раньше это былоlinux
export TERM=xterm
Спасибо за ссылку и подсказки, Дэвид!