Як встановити дисплей bash, щоб після виходу текст vim не відображався?


28

Моє запитання просте, але мені важко легко це зрозуміти / пояснити.

Я входжу в декілька полів Unix з різними обліковими записами. Я бачу 2 різні речі для user1та user2, під час редагування текстових файлів in vim

користувач1

Коли я vim filenameнабираю, відкривається vim, і я редагую файл. Коли я закриваю його, повний текст із файлу відпадає, і я бачу команду / вихід Teminals, який був раніше.

user2

Коли я vim filenameнабираю, відкривається vim, і я редагую файл. Коли я закриваю його, частина файлу, яка була на дисплеї, поки я був, vimвсе ще з’являється на дисплеї, і весь попередній дисплей терміналу прокручується вгору. Навіть якщо у файлу було лише 1 рядок, після виходу з 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

@jasonwryan Ведення журналу на одній машині теж показує той же самий сценарій. @ warl0ck Дякую за це.
mtk

1
Якщо ви хотіли змусити цю поведінку, але зберегти свій тип терміналу, додайте рядок до свого .bashrc або .profile, кажучи псевдонімом vi = "/ usr / bin / vi $ *; clear"
Кріггі

Відповіді:


24

Однією з причин такої поведінки буде встановлення терміналу для кожного користувача.

Наприклад:

  • User1 використовує TERM = xterm , у цьому випадку, коли ви виходите з vim, він очистить термінал.
  • User2 використовує TERM = vt100 , у цьому випадку, коли ви виходите з vim, він не очистить термінал.

Перевірте, з чим використовується термінал user1, echo $TERMі встановіть те саме для user2. для bash:

TERM = xterm; термін експорту


+1 Точне / ідеальне рішення. Спасибі !!! Не думав, що це так просто. Чи можете ви, будь ласка, детальніше розповісти про те, що TERMтаке? або вказати на якесь посилання на ресурс? Мені потрібно це зрозуміти. Це впливає лише тоді, коли ми підключаємось через putty?
mtk

Ви можете вказати налаштування терміналу в сесії putty, але користувачі можуть вказати його на змінних оточення. TERM визначає тип вашого терміналу, а також деякі з них матимуть більше функцій, ніж інші, наприклад, xterm підтримує кольори, і він автоматично оновлюватиме рядки та стовпці. Якщо ви використовуєте vt100, він буде за замовчуванням до 24 рядків на 80 стовпців, коли ви зміните розмір свого терміналу, ви побачите, що він дотримується 24x80. Перевірте це unix.stackexchange.com/questions/43945/… , це може пояснити краще, ніж я.
BitsOfNix

Це термінальна поведінка, а не оболонка. Налаштування емулятора терміналу однакові, незалежно від інструменту, який ви використовуєте для підключення. Різниця пояснюється тут детально: unix.stackexchange.com/questions/4126/…
Леонід

@Leonid, не зовсім так, якщо ви використовуєте шпаклівку, яку ви можете визначити, і вона буде оновлена ​​при підключенні, якщо користувач не визначить TERM. Якщо у користувача це визначено, ви маєте рацію, незалежно від того, який інструмент буде переважати над налаштуваннями в середовищі користувача.
BitsOfNix

Лише примітка про це рішення: YMMV. Це не завжди "xterm". Використовуючи dwm (динамічний менеджер вікон) з dmenu на FreeBSD 10, мені довелося підробити термінал, використовуючи "rxvt", щоб отримати сценарій 1. Ви також можете пропустити налаштування терміна, додавши "встановити термін = 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'.

@Fox OP нічого не згадує про термін, який він використовує, тому це може бути просто альтернативною відповіддю. У будь-якому випадку ця сторінка знаходиться на самому верху, в той час як Google гуглить і для проблеми з екраном.
BartBiczBoży

2
Це зробило трюк! Ключові слова: "vim quit покидає візуальний термінал артефактів"
Jay Taylor

0

Я спробував усі ці варіанти, але результат не був таким, який я очікував. !clearочистить весь екран і не залишить позаду попередні команди bash.

Просте і правильне рішення - встановити рядок типу терміналу на xtermта швидкість терміналу відповідно до 38400,38400деталей терміналу в налаштуваннях шпаклівки в розділі З'єднання-> Дані.

Збережіть налаштування, і ви готові йти.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.