4

Эта вещь сводит меня с ума. Я уже искал интернет и SE и нашел много связанных вопросов, но ни один не решил мою проблему.

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

:set t_ti?: t_ti=^[[?1049h :set t_te?: t_te=^[[?1049l

вариант alternate-screen tmux on

Я не уверен, где смотреть сейчас.

FWIW, вот мои точечные файлы: https://github.com/fuadsaud/JARVIS

1 ответ1

1

Перво- наперво, эти настройки t_ti и t_te выглядят хорошо.

Но проверить ослепительно очевидное (извините)...

Когда вы говорите ^[ , это должен быть один управляющий символ (Escape), а не два символа (^ и [). Я не уверен, как проверить это конкретно из vim, но на моем vim с помощью :set t_ti? он показывает ^[ другим цветом, что говорит о том, что это один управляющий символ.

Кроме того, вы не упомянули, какой эмулятор терминала и какую платформу вы используете. Это может иметь отношение, и вы должны указать это в своем вопросе вместе с версиями vim и tmux. Однако, если вы говорите, что вы уже можете продемонстрировать оба типа поведения (желаемое и нежелательное) в одном и том же проблемном терминале, используя команду less (без и с -X , соответственно), то это может означать, что ваш эмулятор терминала и настройки tmux верны, и мое подозрение направлено на vim.

Подтвердите это следующим образом (помните, что ^[ должен быть введен как управляющий символ, например, Ctrl-v и Escape):

less /etc/hosts         # should use alternate screen (desired)

less -X /etc/hosts     # should leave it's output on screen (undesired)

echo -n "^[[?1049h"; less -X /etc/hosts; echo -n "^[[?1049l"
    # should use alternate screen (desired)

Если эта последняя команда дает желаемое поведение с меньшими затратами. Попробуйте тот же подход с vim:

echo -n "^[[?1049h"; vim /etc/hosts; echo -n "^[[?1049l"
    # should use alternate screen (desired)

После того, как вы выйдете из vim, экран должен вернуться к его предыдущему содержимому (желаемое поведение). Если это так, то вы можете использовать это для создания очень грязного обходного пути с псевдонимом или сценарием-оболочкой. Но если вы достигнете этой стадии в своей диагностике, это почти наверняка проблема с vim или частью его конфигурации, не отправляющей последовательность t_te при выходе, и я бы начал с удаления моих .vimrc и .vim и тестирования с чистым конфигом:

cd
mv .vimrc .vimrc-safe
mv .vim .vim-safe

Тогда это бинарное время, которое должно быть весело. :-) Надеюсь это поможет.

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