Я пытаюсь выяснить, что такое функция bash (или vim). Вот сценарий. Я нахожусь в терминале bash, затем редактирую что-то с помощью vim, затем возвращаюсь обратно в bash. В некоторых терминалах экран сеанса vim исчезает, показывая предыдущую активность оболочки bash (это то, что я хочу?).
В других случаях экранный буфер сеанса vim остается (скрывая старые действия оболочки bash). Мне придется либо очистить экран, либо подождать, пока моя активность bash не вытолкнет этот буфер сеанса vim из экрана.
Как я могу контролировать это поведение, чтобы заменить буфер сеанса vim предыдущей активностью bash?
Спасибо Тим
Ответы:
Вим посылает
t_ti
иt_ks
на терминал , когда сеанс начинается иt_te
иt_ke
когда она заканчивается. Последовательностиt_ti
иt_te
заставляют терминал переключаться на его альтернативный экран.В своем
~/.vimrc
файле вы можетеvim
оставить документ на экране при выходе, добавив следующую строку:если у вас есть строка, подобная этой, удаление ее должно привести к появлению предыдущего содержимого терминала при выходе
vim
.источник
Причиной этой проблемы может быть использование программы
screen
. Я нахожу, что когда я вscreen
сеансе, Vim не может вернуть состояние терминала.Не уверен, относится ли он к экрану или к комбинированному экрану / vim в Ubuntu 15.10. Та же причина, что и описанная выше, я думаю,
screen
имеет другой termcap.источник
altscreen on
в файл ~ / .screenrc решает проблему с экраном.Просто добавьте строку в ваш
~/.bash_profile
файл, чтобы экспортировать TERM как xterm при каждом входе в систему. Делайте следующим образом;Теперь в следующий раз, когда вы войдете в систему, ваша проблема будет решена, и если вы не хотите повторно войти в систему, вы можете сделать одно из ...
источник
export $TERM
?export
экспортирует имя (например,TERM
в этом случае) как переменную среды, а не как локальную переменную. Если бы вы использовалиexport $TERM
в этом примере, тогда$TERM
var разрешил быxterm
вам, установив env var$xterm
, который, вероятно, не определен. Хороший вопрос, хотя, он всегда выглядит неправильно и для меня.Тим. Оба приведенных выше ответа верны. Vim переключает терминал на «альтернативный экран», если возможность сделать это определена в записи termcap для $ TERM.
Вы говорите «в некоторых терминалах (... это работает правильно ...)" и "в других (... это работает неправильно ...)"
Вы используете один и тот же эмулятор терминала для всех этих терминалов?
Например, в моей домашней Linux-системе у меня есть gnome-терминал, xterm, Konsole, yakuake и, возможно, еще несколько вещей, о которых я забыл, а также «виртуальные терминалы», связанные с ctrl-alt-F1 ... Ctrl-Alt-F6 или около того. Большинство из них могут работать со «стандартной» записью termcap для «xterm» - за исключением виртуальных терминалов, которые имеют определение терминала с именем «linux».
Проверьте сам эмулятор терминала и значение $ TERM на терминалах, которые работают, и на тех, которые не работают, чтобы увидеть, что отличается. Кроме того, если вы вошли в систему как другой пользователь, это может быть в основе проблемы - поскольку у каждого пользователя есть свой собственный .bashrc, различные настройки могут отличаться от пользователя к пользователю.
Надеюсь, это поможет!
-pbr
источник
Это связано с вашим терминалом и настройками вашего устройства, связанными с информацией о терминале. Одним из портативных решений является использование экрана GNU. Откройте одно окно для Vim, а другое - для Bash, тем самым разделив две сессии. Если вы используете графический терминал, такой как xterm в X11, Gnome Terminal в Gnome или Terminal.app в OS X, вы можете открыть новое окно или вкладку, чтобы получить тот же эффект.
источник