Próbuję dowiedzieć się, co to jest funkcja bash (lub vim). Oto scenariusz. Jestem w terminalu bash, następnie edytuję coś za pomocą vima, a następnie wracam do bash. W niektórych terminalach ekran sesji vim znika, aby pokazać poprzednią aktywność powłoki bash (to jest to, czego chcę?).
W innych pozostaje bufor ekranu sesji vim (ukrywanie starej aktywności powłoki bash). Będę musiał wyczyścić ekran lub poczekać, aż moja aktywność bash wypchnie bufor sesji vim z ekranu.
Jak mogę kontrolować to zachowanie, aby zastąpić bufor sesji vim poprzednią aktywnością bash?
Dzięki Tim
Odpowiedzi:
Vim wysyła
t_ti
it_ks
na terminal, gdy sesja została uruchomionat_te
, at_ke
kiedy kończy. Tet_ti
it_te
sekwencje powodują terminal do przełączania jego alternatywnego ekranu.W swoim
~/.vimrc
pliku możeszvim
pozostawić dokument na ekranie po wyjściu, dołączając ten wiersz:jeśli masz linię podobną do tej, usunięcie jej powinno sprawić, że zawartość poprzedniego terminalu pojawi się po wyjściu
vim
.źródło
Przyczyną tego problemu może być używanie programu
screen
. Uważam, że kiedy jestem wscreen
sesji, vim nie może zwrócić stanu terminala.Nie jestem pewien, czy jest specyficzny dla screena, czy komendy screen / vim w Ubuntu 15.10. Ta sama przyczyna, jak opisano powyżej, chyba
screen
ma inny termcap.źródło
altscreen on
do pliku ~ / .screenrc rozwiązuje problem dotyczący ekranu.Wystarczy dodać wiersz do
~/.bash_profile
pliku, aby wyeksportować TERM jako xterm przy każdym logowaniu. Wykonaj następujące czynności;Teraz przy następnym logowaniu problem zostanie naprawiony, a jeśli nie chcesz się ponownie logować, możesz wykonać jedną z ...
źródło
export $TERM
?export
eksportuje nazwę (np.TERM
w tym przypadku) jako zmienną środowiskową zamiast zmiennej lokalnej. Jeśli użyjeszexport $TERM
w tym przykładzie,$TERM
var zmieniłoby się naxterm
ustawione na env var$xterm
, który prawdopodobnie nie jest zdefiniowany. Dobre pytanie, ale i dla mnie zawsze wygląda to źle.Tim Obie powyższe odpowiedzi są poprawne. Vim przełącza terminal na „ekran alternatywny”, jeśli zdolność do tego jest zdefiniowana we wpisie termcap dla $ TERM.
Mówisz „w niektórych terminalach (... działa dobrze ...)” i „w innych (... działa źle ...)”
Czy używasz dokładnie tego samego emulatora terminali dla wszystkich tych terminali?
Na przykład na moim domowym Linuksie mam gnome-terminal, xterm, Konsole, yakuake i prawdopodobnie kilka innych, o których zapomniałem, wraz z „wirtualnymi terminalami” związanymi z ctrl-alt-F1 ... ctrl-alt-F6 lub tak. Większość z nich może współpracować ze „standardową” pozycją termcap dla „xterm” - z wyjątkiem wirtualnych terminali, które mają definicję terminali o nazwie „linux”.
Sprawdź sam emulator terminala i wartość $ TERM na terminalach, które działają i na tych, które nie działają, aby zobaczyć, co jest inne. Ponadto, jeśli czasami logujesz się jako inny użytkownik, może to być sedno problemu - ponieważ każdy użytkownik ma swój własny plik .bashrc, różne ustawienia mogą się różnić w zależności od użytkownika.
Mam nadzieję, że to pomaga!
-pbr
źródło
Ma to związek z terminalem i ustawieniami urządzenia dotyczącymi informacji o terminalu. Jednym przenośnym rozwiązaniem jest użycie ekranu GNU. Otwórz jedno okno dla Vima, a drugie dla Basha, oddzielając w ten sposób dwie sesje. Jeśli używasz terminala graficznego, takiego jak xterm na X11, Gnome Terminal na Gnome lub Terminal.app na OS X, możesz otworzyć nowe okno lub kartę, aby uzyskać ten sam efekt.
źródło