Özellik 'alternatif ekran' olarak adlandırılıyor veya normal ve alternatif ekran arasında geçiş yapıyor gibi görünüyor.
Bir xterm kullanarak keşfedebilirsiniz. Örneğin man man
, bir xterm
adam yazın ve çıkın. Şimdi Ctrl+ Mouse2 (orta tıklama) -> 'Alternatif ekranı göster' ile alternatif ekrana geçebilirsiniz. Alternatif olarak, xterm kontrol sekanslarını doğrudan girebilirsiniz , örneğin:
$ echo -e '\033[?47h' # alternate screen
$ echo -e '\033[?47l' # normal screen
Son iki komut da gnome terminalinde çalışır (muhtemelen diğerlerinde de).
man
/ vi
/ less
Etc. başlatma temelde soyut bir açık ekran komutu gönderdiklerinde ne olur . Çıkışta (veya askıya alındığında) soyut bir geri yükleme ekranı komutu gönderir. Komutun beton terminal kontrol sekanslarına nasıl tercüme edildiği terminfo veritabanında tanımlanır .
Alternatif ekran değiştirmeyi devre dışı bırak
Tüm terminaller için çalışması gereken, yerel terminfo girişlerini ayarlamak, yani soyut silme / geri yükleme ekran komutlarının eşlemesini kaldırmaktır.
Bunu şu şekilde yapabilirsiniz - geçerli $TERM
giriş için (örneğin Fedora 19'daki gnome terminali için):
$ echo $TERM
xterm-256color
$ infocmp -1 > xterm-256color
$ sed 's/^\(xterm-256color\)|/\1-na|/ ; /smcup\|rmcup/d ' \
xterm-256color > xterm-256color-na
$ diff -u xterm-256color*
--- xterm-256color 2013-08-04 16:33:52.041393461 +0200
+++ xterm-256color-na 2013-08-04 16:36:56.829930520 +0200
@@ -1,5 +1,5 @@
# Reconstructed via infocmp from file: /usr/share/terminfo/x/xterm-256color
-xterm-256color|xterm with 256 colors,
+xterm-256color-na|xterm with 256 colors,
am,
bce,
ccc,
@@ -155,7 +155,6 @@
rin=\E[%p1%dT,
rmacs=\E(B,
rmam=\E[?7l,
- rmcup=\E[?1049l,
rmir=\E[4l,
rmkx=\E[?1l\E>,
rmm=\E[?1034l,
@@ -170,7 +169,6 @@
sgr0=\E(B\E[m,
smacs=\E(0,
smam=\E[?7h,
- smcup=\E[?1049h,
smir=\E[4h,
smkx=\E[?1h\E=,
smm=\E[?1034h,
$ tic xterm-256color-na # loads the file to $HOME/.terminfo
$ find ~/.terminfo -type f
$ HOME/.terminfo/x/xterm-256color-na
Şimdi test edebilirsiniz:
$ TERM=xterm-256color-na man man # and then hit q
Birden çok terminal kullanıyorsanız yukarıdaki adımları diğer terminaller için tekrarlayabilirsiniz. Her şey beklendiği gibi çalışırsa TERM
, kabuk rc dosyanız aracılığıyla ayarlayabilirsiniz .
Ayrıca, terminal adını parametre olarak doğrudan belirtebilirsiniz infocmp
, örneğin:
$ infocmp -1 screen > screen
Alternatif ekran değiştirmeyi etkinleştir
Bazı terminaller alternatif ekran değiştirme özelliğini (örn. Ekran ) destekler, ancak varsayılan olarak devre dışı bırakır .
Bunun için screen
aşağıdakileri kullanarak etkinleştirebilirsiniz ~/.screenrc
:
$ cat ~/.screenrc
altscreen
Ssh to - diyelim ki - bir Solaris sistemi uzaktan uzaktan yapılandırılmış sistem çapında terminfo veritabanı belki de tarihi, bozuk veya 'kanayan kenar' terminallerine uymayan bazı olağandışı / Solaris'e özgü varsayılanlar içeriyorsa ssh koştun.
Bu nedenle, sadece yerel terminfo veritabanını / usr / share / info'den (istemcide) host:~/.terminfo
(sunucuda) kopyalamak bir seçenektir .
Derlenen terminfo formatının uyumlu olmaması durumunda, önceki paragrafta olduğu gibi girişleri de dışa / içe aktarabilirsiniz.
Ben bir Cygwin kurulum bir terminfo-db ile denedim ve doğrudan bir Solaris 10 sistemine kopyalama çalıştı.
Kullanıcılar arasında alternatif bir terminfo db paylaşmak istiyorsanız, yolunu TERMINFO
ortam değişkeni üzerinden belirtirsiniz .
Kontrol Sırasını Yoksay
Bazı terminaller, alternatif ekran geçişi için kontrol dizisinin devre dışı bırakılmasını destekler. Örneğin, xterm'in bir seçeneği vardır, gnome terminali yoktur.
Xterm için X kaynağıdır , ör.
XTerm*titeInhibit: true
Programa özel yapılandırmalar
Bazı programlarda, gönderdikleri denetim sırası / terminfo komutlarını yapılandırmak için yapılandırma dosyaları bulunur. Örneğin
$ LESS=X less foo
less
ekranı temizlemeyecek / geri yüklemeyecek şekilde yapılandırır .
Çünkü şöyle bir vim
şey ekleyebilirsiniz
set t_ti= t_te=
senin içinde ~/.vimrc
.
Bu davranışı en üst için nasıl yapılandıracağım seçeneğinde bulamadım - varsayılan olarak geri yükleme ekranı göndermez.