端末でスクリーンリカバリを設定するには?

端末でスクリーンリカバリを設定するには?

次の順序は、端末/環境によって異なる効果があります。

$ ls
1
2
$ man ls
enter q

現在のプロンプトの上に最後に表示されたマニュアルページ画面を表示するか、ls出力と古いシェル出力を復元します。たとえば、シェルで特定のタスクを実行するために使用して一時停止すると、vim同じ効果が観察されます。

Fedora 19では - screenのデフォルト値はno-restoreであるように見え、gnome-terminal / xtermはデフォルトでdo-restoreを使用します。

Solarisでは、使用される端末/terminfo dbによって異なります。

さまざまなシステム/端末で回復動作を一貫して設定したいと思います。

ベストアンサー1

この機能は、「代替画面」または通常画面と代替画面を切り替えるようです。

xtermを使用してナビゲートできます。たとえば、man mananと入力しxtermてmanを終了します。これでCtrl、+Mouse2(マウスの中央ボタンをクリック) - >「代替画面を表示」で代替画面に切り替えることができます。または直接入力することもできますxterm制御シーケンス、例えば:

$ echo -e '\033[?47h' # alternate screen
$ echo -e '\033[?47l' # normal screen

最後の2つのコマンドは、gnome-terminal(および他の端末でも使用可能)で使用できます。

man//vi起動時に何が起こるのかは、基本的にless抽象的な画面消去コマンドを送信することです。終了(または中断)時に抽象再開画面コマンドを送信します。コマンドを特定の端末制御シーケンスに変換する方法は次のとおりです。用語情報データベース。

代替画面切り替えを無効にする

すべての端末で動作するのは、ローカルの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以下で有効にできます~/.screenrc

$ cat ~/.screenrc
altscreen

SSHを介してSolarisシステムにリモートでログインする場合、リモート構成のシステム全体のterminfoデータベースには、いくつかの履歴があるか破損しているか、「フロンティア」と一致しない珍しい/ Solaris固有のデフォルト値を含めることができます。 SSHを実行している端末です。

したがって、ローカルのterminfoデータベースを/ usr / share / info(クライアント)から(サーバー)にコピーすることを選択できますhost:~/.terminfo

コンパイルされたterminfo型が互換性がない場合は、前の段落と同様にアイテムをエクスポートまたはインポートすることもできます。

私はterminfo-dbを使ってみました。シビンSolaris 10システムに直接インストールしてコピーするだけです。

ユーザー間で代替terminfoデータベースを共有する場合は、TERMINFO環境変数を介してそのパスを指定できます。

制御シーケンスを無視

一部の端末は、代替画面遷移を無効にする制御シーケンスをサポートしています。たとえば、xtermにはオプションがありますが、gnome-terminalにはありません。

xtermの場合XResources、例えば

XTerm*titeInhibit: true

プログラム固有の構成

一部のプログラムには、送信制御シーケンス/terminfoコマンドを構成する構成ファイルがあります。例えば

$ LESS=X less foo

less画面を消去または復元しないように設定します。

vim次のようなものを含めることができるからです。

set t_ti= t_te=

それはあなた次第です~/.vimrc

上部の動作を設定する方法のオプションが見つかりませんでした。デフォルトでは回復画面は送信されません。

おすすめ記事