Wie man die Bildschirm-Terminal-Emulation für init / uninit wie xterm oder rxvt verhält

2483
Barry Kelly

Programme wie lessVollbild-Editoren funktionieren gut mit Terminals wie xtermund rxvt, da das Terminal bei der Initialisierung und Nichtinitialisierung des Terminals den aktuellen Bildschirminhalt speichern und nach dem Beenden des Programms wiederherstellen kann.

Ich frage mich, ob screenkonfiguriert werden kann, um auf dieselbe Weise zu handeln.

Konkretes Beispiel:

Angenommen, ich erstelle eine einfache Datei foomit einigen Zeilen:

for ((i=0;i<10;++i)); do echo $i; done > foo 

Jetzt verwende ich less, um den Inhalt anzuzeigen, und brach sofort lessmit ab q. In screensieht die Konsole jetzt so aus:

~$ for ((i=0;i<10;++i)); do echo $i; done > foo ~$ less foo 0 1 2 3 4 5 6 7 8 9 ~$  

Wenn ich dasselbe außerhalb einer screenUmgebung und rxvtstattdessen in einem einfachen Terminalfenster mache, erhalte ich Folgendes:

~$ for ((i=0;i<10;++i)); do echo $i; done > foo ~$ less foo ~$  

Das Terminal hat den Bildschirminhalt gespeichert und wiederhergestellt.

Kann ich dazu irgendetwas konfigurieren screenoder Einträge, die ich zu termcap oder terminfo hinzufügen sollte, um dies zu unterstützen?

Hier ist der relevante Abschnitt in Termcap (mein TERM = Bildschirm):

SC|screen|VT 100/ANSI X3.64 virtual terminal:\ :am:xn:ms:mi:G0:km:\ :DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:bs:bt=\E[Z:\ :cb=\E[1K:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:ct=\E[3g:\ :do=^J:nd=\E[C:pt:rc=\E8:rs=\Ec:sc=\E7:st=\EH:up=\EM:\ :le=^H:bl=^G:cr=^M:it#8:ho=\E[H:nw=\EE:ta=^I:is=\E)0:\ :li#24:co#80:us=\E[4m:ue=\E[24m:so=\E[3m:se=\E[23m:\ :mb=\E[5m:md=\E[1m:mr=\E[7m:me=\E[m:sr=\EM:al=\E[L:\ :AL=\E[%dL:dl=\E[M:DL=\E[%dM:cs=\E[%i%d;%dr:dc=\E[P:\ :DC=\E[%dP:im=\E[4h:ei=\E[4l:IC=\E[%d@:\ :ks=\E[?1h\E=:ke=\E[?1l\E>:vb=\Eg:\ :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:kb=^H:\ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\E[15~:k6=\E[17~:\ :k7=\E[18~:k8=\E[19~:k9=\E[20~:k;=\E[21~:F1=\E[23~:F2=\E[24~:\ :kh=\E[1~:kI=\E[2~:kD=\E[3~:kH=\E[4~:@7=\E[4~:kP=\E[5~:\ :kN=\E[6~:eA=\E(B\E)0:as=^N:ae=^O:\ :vi=\E[?25l:ve=\E[34h\E[?25h:vs=\E[34l:\ :Co#8:pa#64:AF=\E[3%dm:AB=\E[4%dm:op=\E[39;49m:AX:\ :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~..--++,,hhII00: 

Und von terminfo laut infocmp:

screen|VT 100/ANSI X3.64 virtual terminal, am, km, mir, msgr, xenl, colors#8, cols#80, it#8, lines#24, pairs#64, acsc=++\,\,--..00II``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, clear=\E[H\E[J, cnorm=\E[34h\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM, cvvis=\E[34l, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0, flash=\Eg, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=^J, is2=\E)0, kbs=\177, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~, kend=\E[4~, kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, nel=\EE, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmcup=\E[?1049l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[23m, rmul=\E[24m, rs2=\Ec, sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[m, smacs=^N, smcup=\E[?1049h, smir=\E[4h, smkx=\E[?1h\E=, smso=\E[3m, smul=\E[4m, tbc=\E[3g, 
3

2 Antworten auf die Frage

2
Barry Kelly

Ich stellte dieselbe Frage in den Hacker News und erhielt diese Antwort:

probiere "altscreen on".

Wenn ich diese Zeile in meine Zeile setze, ~/.screenrcfunktionierte das Problem gut.

1
nagul

Ich habe gerade Ihr Beispiel ausprobiert und erhalte innerhalb einer Bildschirmsitzung dasselbe Verhalten wie im Terminal (dh der Inhalt von foo wird nicht angezeigt), wenn Sie Gnome Terminal oder xterm verwenden.

Versionen:
GNOME Terminal 2.26.0
Bildschirmversion 4.00.03jw4 (FAU) 2-May-06
XTerm (241)

Ich verwende Rxvt von Cygwin unter Windows und Bildschirm auf Nexenta (Solaris mit GNU Userland). Ich werde sehen, was die Geschichte mit Term * -Einträgen ist ... Barry Kelly vor 15 Jahren 0