Как настроить отображение bash, чтобы оно не показывало текст vim после выхода?

28

Мой вопрос прост, но мне трудно его легко сформулировать / объяснить.

Я захожу в несколько ящиков Unix с разными аккаунтами. Я вижу 2 разные вещи для user1и user2, при редактировании текстовых файлов в VIM

user1

Когда я vim filenameпечатаю, открывается vim, и я редактирую файл. Когда я закрываю его, полный текст из файла исчезает, и я вижу команду / вывод Teminals, которые ранее присутствовали.

user2

Когда я vim filenameпечатаю, открывается vim, и я редактирую файл. Когда я закрываю его, часть файла, которая присутствовала на дисплее во время моего пребывания, vimвсе еще отображается на дисплее, и все предыдущие изображения терминала отображаются вверх. Даже если файл был всего лишь одной строкой, после выхода из vim на дисплее отображается первая строка, а остальные все ~и я вижу командную строку внизу экрана.

Детали

$ bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
$ vim --version
VIM - Vi IMproved 7.0 (2006 May 7, compiled Jun 12 2009 07:08:36)

Я сравнил vimrcфайлы для обоих пользователей, и мне известны все настройки, и я не нашел никаких настроек / настроек, связанных с этим поведением.

Это поведение связано с конфигурацией оболочки? Как мне установить вещи так, чтобы я получил поведение, показанное в user1сценарии?

Я не могу описать это легко, также мне трудно гуглить, так как я не знаю, какое ключевое слово искать для такого поведения. Дайте мне знать, если я должен уточнить дальше.

холодный морской тропический воздух
источник
Есть user1и user2счета на одних и тех же или разных машинах?
Джейсонвриан
@jasonwryan Ведение журнала на одной и той же машине также показывает тот же сценарий. @ warl0ck Спасибо за это.
MTK
1
Если вы хотите принудить это поведение, но сохраняете свой тип терминала, добавьте строку к вашему .bashrc или .profile, сказав псевдоним vi = "/ usr / bin / vi $ *; clear"
Criggie

Ответы:

24

Одной из причин такого поведения будет настройка терминала для каждого пользователя.

Например:

  • Пользователь1 использует TERM = xterm , в этом случае при выходе из vim он очистит терминал.
  • Пользователь2 использует TERM = vt100 , в этом случае при выходе из vim он не очистит терминал.

Проверьте, какой терминал использует user1, echo $TERMи установите то же самое для user2. для Баш:

СРОК = Xterm; СРОК ЭКСПОРТА

BitsOfNix
источник
+1 Точное / идеальное решение. Благодарность !!! Не думал, что это так просто. Можете ли вы уточнить, что это TERMтакое? или указать ссылку на какой-то ресурс? Мне нужно это понять. Это влияет только когда мы подключаемся через putty?
MTK
Вы можете указать настройку терминала в сеансе putty, но пользователи могут указать его в своих переменных среды. TERM определит ваш тип терминала, а некоторые будут иметь больше возможностей, чем другие, например, xterm, поддерживает цвета и автоматически обновляет строки и столбцы. Если вы используете vt100, он по умолчанию будет 24 строки на 80 столбцов при изменении размера вашего терминала, вы увидите, что он придерживается 24x80. Проверьте это unix.stackexchange.com/questions/43945/… , это может объяснить лучше, чем я.
BitsOfNix
Это терминальное поведение, а не оболочка. Настройки эмулятора терминала одинаковы для любого инструмента, который вы используете для подключения. Различие подробно объясняется здесь: unix.stackexchange.com/questions/4126/…
Леонид
@Leonid, не совсем, если вы используете putty, вы можете определить, и он обновится при подключении, если пользователь не определит TERM. Если пользователь определил это, то вы правы, независимо от того, какой инструмент будет преобладать над настройками в пользовательской среде.
BitsOfNix
Просто примечание об этом решении: YMMV. Это не всегда "xterm". Используя dwm (Dynamic Window Manager) с dmenu на FreeBSD 10, мне пришлось подделать терминал, используя «rxvt», чтобы получить сценарий 1. Вы также можете пропустить настройку термина, добавив «set term = rxvt» в файл ~ / .vimrc ,
Райдер
18

Такое поведение было единственным, что удерживало меня от использования screen. Он использует «экранный» терминал, и изменение его на «xterm» не помогло.

Добавление altscreen onопции в ~ / .screenrc решило это. Из руководства по экрану:

altscreen on|off

If set to on, "alternate screen" support is enabled in virtual terminals, just like in xterm.  Initial setting is `off'.
BartBiczBoży
источник
@Fox OP не упоминает ничего о TERM, который он использует, так что это может быть просто альтернативным ответом. Во всяком случае, эта страница находится на самом верху, в то время как поиск на экране тоже.
BartBiczBoży
2
Это сделал трюк! Ключевые слова: «Vim Quit оставляет терминал визуальных артефактов»
Джей Тейлор
0

Я перепробовал все эти варианты, но результат оказался не таким, как я ожидал. !clearочистит весь экран и не оставит позади более ранние команды bash.

Простое и правильное решение - установить строку типа xtermтерминала в значение «Скорость терминала» в 38400,38400разделе «Детали терминала» в настройках замазки в разделе «Соединение-> Данные».

Сохраните настройки, и вы готовы.

Виная Раджанна
источник