Jak ustawić wyświetlanie bash, aby nie wyświetlać tekstu vim po wyjściu?


28

Moje pytanie jest proste, ale trudno mi je łatwo sformułować / wyjaśnić.

Loguję się do kilku skrzynek Unix z różnymi kontami. Widzę 2 różne rzeczy dla user1i user2podczas edycji plików tekstowych w vimie

użytkownik1

Kiedy piszę vim filename, vim otwiera się i edytuję plik. Kiedy go zamykam, pełny tekst z pliku zniknął i widzę polecenie / wyjście Teminals, które było wcześniej obecne.

użytkownik2

Kiedy piszę vim filename, vim otwiera się i edytuję plik. Kiedy go zamykam, część pliku, która była obecna na wyświetlaczu, kiedy byłem w vimśrodku, wciąż pokazuje się na wyświetlaczu, a wszystkie poprzednie ekrany terminali są przewijane w górę. Nawet jeśli plik miał tylko 1 linię, po wyjściu z vima, wyświetlacz pokazuje pierwszą linię, z resztą wszystkie ~i widzę wiersz polecenia na dole ekranu.

Detale

$ 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)

Porównałem vimrcpliki dla obu użytkowników i znam wszystkie ustawienia i nie znajduję żadnych ustawień / konfiguracji związanych z tym zachowaniem.

Czy to zachowanie jest związane z konfiguracją powłoki? Jak ustawić rzeczy, aby uzyskać zachowanie pokazane w user1scenariuszu?

Nie jestem w stanie tego łatwo opisać, trudno mi też google, ponieważ nie wiem, jakie słowo kluczowe szukać takiego zachowania. Daj mi znać, jeśli będę dalej rozwijał.


Czy konta user1i user2konta znajdują się na tych samych lub różnych komputerach?
jasonwryan

@ jasonwryan Również zalogowanie na tym samym komputerze pokazuje ten sam scenariusz. @ warl0ck Dzięki za to.
Mt

1
Jeśli chcesz wymusić to zachowanie, ale zachowujesz typ terminala, dodaj wiersz do .bashrc lub .profile z aliasem vi = "/ usr / bin / vi $ *; clear"
Criggie 10.1016

Odpowiedzi:


24

Jednym z powodów takiego zachowania będzie ustawienie terminala dla każdego użytkownika.

Na przykład:

  • Użytkownik1 używa TERM = xterm , w tym przypadku po wyjściu z vima wyczyści terminal.
  • Użytkownik2 używa TERM = vt100 , w tym przypadku po wyjściu z vima nie wyczyści on terminala.

Sprawdź, z jakiego terminala użytkownik1 korzysta echo $TERMi ustaw to samo dla użytkownika2. za bash:

TERM = xterm; eksport TERMIN


+1 Dokładne / idealne rozwiązanie. Dzięki !!! Nie sądziłem, że to takie łatwe. Czy możesz wyjaśnić, czym TERMjest a ? lub wskaż link do zasobu? Muszę to zrozumieć. Czy to wpływa tylko wtedy, gdy łączymy się przez putty?
Mt

Możesz określić ustawienie terminala w sesji putty, ale użytkownicy mogą go określić w swoich zmiennych środowiskowych. TERM zdefiniuje typ twojego terminala, a także niektóre będą miały więcej funkcji niż inne, na przykład xterm obsługuje kolory i automatycznie zaktualizuje wiersze i kolumny. Jeśli użyjesz vt100, domyślnie 24 wiersze na 80 kolumn, kiedy zmienisz rozmiar terminala, zobaczysz, że przylega do 24x80. Sprawdź ten unix.stackexchange.com/questions/43945/… , może to wyjaśnić lepiej niż ja.
BitsOfNix,

To zachowanie terminala, a nie powłoka. Ustawienia emulatora terminala są takie same, niezależnie od narzędzia, którego używasz do łączenia. Różnica została szczegółowo wyjaśniona tutaj: unix.stackexchange.com/questions/4126/…
Leonid

@Leonid, niezupełnie, jeśli używasz szpachli, którą możesz zdefiniować, a aktualizuje się podczas łączenia, jeśli użytkownik nie zdefiniuje TERM. Jeśli użytkownik to zdefiniował, masz rację, bez względu na to, jakie narzędzie przeważy ustawienie w środowisku użytkownika.
BitsOfNix,

Tylko uwaga na temat tego rozwiązania: YMMV. Nie zawsze jest to „xterm”. Używając dwm (Dynamic Window Manager) z dmenu na FreeBSD 10 musiałem sfałszować terminal, używając „rxvt”, aby uzyskać scenariusz 1. Możesz również pominąć ustawienie terminu, dodając „set term = rxvt” do pliku ~ / .vimrc .
Ryder

18

Takie zachowanie było jedyną rzeczą, która powstrzymywała mnie od używania screen. Używa terminala „screen”, a zmiana go na „xterm” nie pomogła.

Dodanie altscreen onopcji w ~ / .screenrc rozwiązało to. Z instrukcji obsługi ekranu:

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 nie wspomina nic o TERM, którego używa, więc może to być tylko alternatywna odpowiedź. W każdym razie ta strona znajduje się na samej górze, kiedy google przeglądają problemy z ekranem.
BartBiczBoży

2
To załatwiło sprawę! Słowa kluczowe: „vim quit pozostawia terminal wizualnych artefaktów”
Jay Taylor

0

Wypróbowałem wszystkie te opcje, ale nie był to wynik, którego się spodziewałem. !clearwyczyści cały ekran i nie pozostawi po sobie wcześniejszych poleceń bash.

Prostym i prawidłowym rozwiązaniem jest ustawienie ciągu typu terminala na xtermi prędkości terminalu na 38400,38400pod Szczegóły terminala w ustawieniach szpachli w Połączenie-> Dane.

Zapisz ustawienia i możesz zacząć.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.