この機能は「代替画面」または通常画面と代替画面の切り替えと呼ばれているようです。
xtermを使用して調査できます。たとえばman man
、「xterm
man」と入力して終了します。これで、Ctrl+ Mouse2(中央クリック)-> [代替画面を表示]で代替画面に切り替えることができます。あるいは、xterm制御シーケンスを直接入力することもできます。例:
$ echo -e '\033[?47h' # alternate screen
$ echo -e '\033[?47l' # normal screen
最後の2つのコマンドは、gnome-terminalでも機能します(おそらく他のコマンドでも機能します)。
何が起きたときにman
/ vi
/ less
などのスタートアップが、彼らは抽象的な画面クリアコマンドを送信し、基本的です。終了(または一時停止)時に、抽象的なrestore-screenコマンドを送信します。コマンドが具体的な端末制御シーケンスにどのように変換されるかは、terminfoデータベースで定義されています。
代替画面切り替えを無効にする
すべての端末で機能するのは、ローカルのterminfoエントリを調整することです。つまり、抽象的なクリア/復元画面コマンドのマッピングを削除します。
あなたはこれをこのように行うことができます-現在の$TERM
エントリに対して(例えばFedora 19のgnome-terminalに対して):
$ 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
これで、次の方法でテストできます。
$ TERM=xterm-256color-na man man # and then hit q
複数の端末を使用する場合は、他の端末に対して上記の手順を繰り返すことができます。すべてが期待どおりに機能する場合はTERM
、シェルのrcファイルを使用して設定できます。
端末名をのパラメータとして直接指定することもできますinfocmp
。例:
$ infocmp -1 screen > screen
代替画面切り替えを有効にする
一部の端末は代替画面切り替え機能(例:screen)をサポートしていますが、デフォルトでは無効にしています。
以下のためにscreen
あなたはそれをあなたを経由して有効にすることができます~/.screenrc
:
$ cat ~/.screenrc
altscreen
sshを介してリモートログインする場合-たとえば、Solarisシステムはおそらくリモートで構成されたシステム全体のterminfo-databaseが歴史的であるか、壊れているか、または「最先端」の端末と一致しないいくつかの異常な/ Solaris固有のデフォルトを含むsshを実行します。
したがって、ローカルのterminfoデータベースを/ usr / share / infoからhost:~/.terminfo
(クライアント上)から(サーバー上)にコピーするだけのオプションです。
コンパイルされたterminfo形式に互換性がない場合は、前の段落のようにエントリをエクスポート/インポートすることもできます。
Cygwinのインストールからterminfo-dbを試し、それをSolaris 10システムに直接コピーしてみました。
別のterminfoデータベースをユーザー間で共有する場合は、TERMINFO
環境変数を使用してパスを指定します。
制御シーケンスを無視する
一部の端末は、代替画面切り替えの制御シーケンスの無効化をサポートしています。たとえば、xtermにはオプションがありますが、gnome-terminalにはありません。
xtermの場合はX-ressourceです。たとえば、
XTerm*titeInhibit: true
プログラム固有の構成
一部のプログラムには、送信する制御シーケンス/ terminfoコマンドを構成するための構成ファイルがあります。例えば
$ LESS=X less foo
less
画面をクリア/復元しないように設定します。
vim
あなたのようなものを含めることができるため
set t_ti= t_te=
あなたで~/.vimrc
。
トップでその動作を設定する方法のオプションが見つかりません-デフォルトでは、復元画面は送信されません。