Nie pozwól Vimowi wyczyścić terminala po wyjściu

16

Jeśli zrobię:

$ less file

I naciśnij, qaby wyjść less, lessnadal widzę ten sam tekst, który miałem na ekranie, gdy był jeszcze uruchomiony.

Jeśli jednak to zrobię

$ vim file

A :qmój terminal jest pusty ...

Zrzuty ekranu mojego terminala po wyjściu lessi vim:

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

Czy mogę jakoś temu zapobiec? To jest tylko w moim systemie Linux. Mój system FreeBSD faktycznie działa zgodnie z oczekiwaniami (używanie tego samego oprogramowania / ustawień dookoła, TERMjest xterm-colordla obu, vim -u NONEnie robi różnicy).

Przykład tego, co chciałbym mieć:

wprowadź opis zdjęcia tutaj

Martin Tournoij
źródło

Odpowiedzi:

19

Domyślnie VIM po zakończeniu wysyła ciąg skonfigurowany z opcją t_tedo terminala hostingowego, aby nakazał mu wyczyszczenie ekranu. Aby tego uniknąć, nie :set t_te=wysyłaj nic do terminala i unikaj czyszczenia ekranu. Zobacz :help termformularz, aby uzyskać więcej informacji o możliwościach terminalu.

toro2k
źródło
2

Gdy używasz Xtermu, możesz użyć jego głównego i alternatywnego bufora ekranu do zamiany ekranu, jak w tej sekcji z mojego .vimrc

if &term == "linux"
    set t_ti=^[[?1049h
    set t_te=^[[?1049l
endif                                                       

Uwaga: ^[to nie jest dosłowny tekst, to znak zmiany znaczenia, użyj Ctrl+, va następnie Escwstaw, aby go wstawić.

Te komendy vim dodają odpowiednie komendy, których może brakować we wpisie terminfo linux. Więcej informacji na

:help xterm-screens
jalanb
źródło
Hm, nadal nic nie robisz? Działa tak, jakbym korzystał set t_te=, ale myślę , że powinien zrobić więcej.
Martin Tournoij,