2

Если я не в сеансе screen , то при выходе из Vim я получаю приглашение bash под остатками окна VIM. Побочным эффектом этого является то, что мой буфер прокрутки забит, особенно если я пролистал длинный файл в VIM. Проблема возникает, только если я не на screen , внутри screen окна VIM выходит, чтобы показать приглашение bash и предыдущие строки, как и раньше.

Я попытался добавить set t_ti= t_te= к моему .vimrc чтобы исправить проблему, но единственный эффект, который он имел, состоял в том, чтобы сломать VIM так, чтобы проблема возникала как внутри screen так и снаружи. Таким образом, я удалил строку.

Для хорошей меры у меня есть altscreen on в .screenrc .

Это на Ubuntu Server 12.04.1 LTS с Bash 4.2.24, Screen 4.00 и VIM 7.3 (не vim-tiny), доступ к которому осуществляется через SSH в Cygwin версии NT-6.1-WOW64 на ноутбуке с Windows 7.

Благодарю.

РЕДАКТИРОВАТЬ: Обратите внимание, что в той же установке Cygwin я могу SSH на другом сервере (CentOS), и там VIM не затормаживает буфер прокрутки. Поэтому я не подозреваю, что проблема Cygwin. На машине CentOS не установлен экран, и мне не нужно было добавлять set t_ti= t_te= в .vimrc .

1 ответ1

1

Вы не должны сбрасывать значения t_ti и t_te, или только когда это необходимо. Из vim help:

Для обычного редактирования терминал будет переведен в "сырой" режим. Строки, определенные с помощью "t_ti" и "t_ks", будут отправлены на терминал. Обычно это переводит терминал в состояние, в котором действуют коды termcap, и активирует курсор и функциональные клавиши. Когда Vim выйдет, терминал вернется в режим, в котором он находился до запуска Vim. Строки, определенные с помощью "t_te" и "t_ke", будут отправлены на терминал.

Я полагаю, что ваша проблема заключается только в следующем:- вы сбрасываете те (пожалуйста, просто удалите строки, устанавливающие их и / или - vim не распознает (или не знает, какие термины используются) для терминала, который вы используете

Я бы порекомендовал:

  • удалите часть "set t_ti = t_te =" вашего vimrc
  • затем попробуйте другие терминалы: например, чтобы проверить vim, используя "xterm" в качестве TERM, вы можете набрать (из командной строки bash):

TERM=xterm vim

(в той же строке, как показано, и с назначением, расположенным перед командой)

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

Объяснение выше: в bash (и sh, и других) установка переменной непосредственно перед тем, как команда заставит эту команду установить эту переменную в это значение, и не повлияет на значение переменной после выхода из команды. например:

bash-2.05b$ echo $TERM
xterm
bash-2.05b$ TERM=vt100 ls -F
this/ this.tar
bash-2.05b$ echo $TERM
xterm

(TERM = vt100 только во время вызова ls) (неплохо попробовать разные значения TERM)

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