W zależności od terminala / środowiska następująca sekwencja ma różne skutki:
$ ls
1
2
$ man ls
enter q
Albo widzę ostatnio wyświetlany ekran strony podręcznika powyżej bieżącego monitu lub przywracane jest wyjście ls i poprzednie wyjście powłoki. Ten sam efekt obserwuje się np. Podczas używania, vim
a następnie zawieszania go w celu zrobienia czegoś na powłoce.
W Fedorze 19 - domyślnym ustawieniem ekranu jest brak przywracania, terminal gnome / xterm domyślnie używa przywracania do.
Na Solarisie zależy to od użytego terminalu / terminfo db.
Chcę skonfigurować zachowanie przywracania spójnie między różnymi systemami / terminalami.
Odpowiedzi:
Wygląda na to, że funkcja nazywa się „ekranem alternatywnym” lub przełączaniem między ekranem normalnym a alternatywnym.
Możesz to zbadać za pomocą Xtermu. Na przykład typu
man man
wxterm
oraz zamknąć człowieka. Teraz możesz przejść do alternatywnego ekranu za pomocą Ctrlmyszy + Mouse2 (środkowe kliknięcie) -> „Pokaż alternatywny ekran”. Alternatywnie możesz bezpośrednio wprowadzić sekwencje kontrolne xterm , np .:Ostatnie dwa polecenia działają również w gnome-terminal (prawdopodobnie także w innych).
To, co dzieje się, gdy uruchamianie
man
/vi
/less
itp. Polega na tym, że wysyłają abstrakcyjne polecenie czyszczenia ekranu. Przy wyjściu (lub zawieszeniu) wysyłają abstrakcyjne polecenie przywracania ekranu. Sposób, w jaki polecenie tłumaczy się na konkretne sekwencje sterowania terminalem, zdefiniowano w bazie danych terminfo .Wyłącz alternatywne przełączanie ekranu
To, co powinno działać dla wszystkich terminali, to dostosowywanie lokalnych wpisów terminfo, tj. Usuwanie mapowania abstrakcyjnych komend ekranu wyczyść / przywróć.
Możesz to zrobić w ten sposób - dla bieżącego
$TERM
wpisu (na przykład gnome-terminal na Fedorze 19):Teraz możesz to przetestować za pomocą:
Możesz powtórzyć powyższe kroki dla innych terminali, jeśli używasz wielu. Jeśli wszystko działa zgodnie z oczekiwaniami, możesz ustawić
TERM
za pomocą pliku rc powłoki.Możesz także bezpośrednio określić nazwę terminala jako parametr
infocmp
, np .:Włącz alternatywne przełączanie ekranu
Niektóre terminale obsługują funkcję alternatywnego przełączania ekranu (np. Ekran ), ale domyślnie ją wyłączają .
Dla
screen
możesz go włączyć za pośrednictwem~/.screenrc
:Jeśli zdalnie logujesz się przez ssh do - powiedzmy - systemu Solaris, być może zdalnie skonfigurowana ogólnosystemowa baza danych terminfo jest w pewnym sensie historyczna, zepsuta lub zawiera pewne nietypowe / specyficzne dla Solaris wartości domyślne, które nie pasują do terminali „najnowocześniejszych” uruchamiasz ssh.
Dlatego istnieje możliwość skopiowania lokalnej bazy danych terminfo z katalogu / usr / share / info (na kliencie) do
host:~/.terminfo
(na serwerze).W przypadku, gdy skompilowany format terminfo nie jest kompatybilny, możesz również eksportować / importować wpisy, jak w poprzednim akapicie.
Próbowałem z terminfo-db z instalacji Cygwin i kopiowanie go bezpośrednio do systemu Solaris 10 działało.
Jeśli chcesz udostępnić alternatywną bazę danych terminfo między użytkownikami, podaj jej ścieżkę za pomocą
TERMINFO
zmiennej środowiskowej.Zignoruj sekwencję kontrolną
Niektóre terminale obsługują wyłączenie sekwencji sterowania dla alternatywnego przełączania ekranu. Na przykład xterm ma opcję, gnome-terminal nie.
W przypadku Xterm jest to X-ressource , np
Konfiguracje specyficzne dla programu
Niektóre programy mają pliki konfiguracyjne do konfiguracji wysyłanych poleceń sekwencji sterującej / terminfo. Na przykład
konfiguruje,
less
aby nie wyczyścić / przywrócić ekranu.Bo
vim
możesz dołączyć coś takiegow tobie
~/.vimrc
.Nie znalazłem opcji, jak skonfigurować to zachowanie dla góry - domyślnie nie wysyła ekranu przywracania.
źródło
smcup
lubrmcup
. W moim przypadku na tej samej linii pojawiają się inne rzeczy. Te inne rzeczy również zostały usunięte. Więc może coś takiegos/[sr]mcup=[^,]*,//'
jest lepsze.