"Terminal ist nicht voll funktionsfähig" über ssh in einem * Shell * -Puffer

8

Ich verwende die shell ( M-x shell), um über SSH eine Verbindung zu einem Remote-Host herzustellen. Nach dem Starten einiger Befehlszeilentools (meistens psql , die Postgresql-Befehlszeilenschnittstelle, aber man wäre zum Beispiel derselbe) gibt die Shell die folgende Warnung aus:

WARNING: terminal is not fully functional                                                    
-  (press RETURN) 

Soweit ich weiß, sieht dies wie ein Pager-Problem aus. Ändern des Pagers in catin meiner .emacsDatei:

(setenv "PAGER" "/bin/cat")

hat mir geholfen, diese Nachrichten loszuwerden, aber nur für lokale Befehle (und es macht mir nichts aus, cat als Pager zu verwenden). Gibt es eine Möglichkeit, einen anderen Pager auf dem Remote-Host zu verwenden, da ich nur eine lokale Instanz von Emacs habe? Oder eine andere Möglichkeit, die Warnmeldungen zu entfernen, wenn möglich, ohne zu wechseln ansi-term? Wenn es hilfreich ist, verwende ich GNU Emacs 24.3.1.

KookieMonster
quelle
4
Alternativ können Sie M-x ansi-termein voll funktionsfähiges Terminal ausführen, anstatt es zu verwenden M-x shell.
Phils

Antworten:

9

Das "Problem" ist, dass Emacs mit M-x shell(oder M-x eshellübrigens) einen sehr begrenzten Terminalemulator verwendet, so dass dieser TERMkorrekt eingestellt istdumb

Ausgefallene Pager können unter solchen Einschränkungen nicht betrieben werden, weshalb Sie sie catstattdessen verwenden müssen. Wenn Sie jetzt eine SSH-Verbindung von dieser Shell aus öffnen, TERMist dies immer noch dumm, wird jedoch auf PAGERdas zurückgesetzt, was das andere System für erforderlich hält. Um dies zu beheben, müssen Sie Ihre Shell-Konfiguration auf dem Remote-System so ändern, dass bei jedem Zugriff über ein dummes Terminal angemessene Standardeinstellungen verwendet werden.

Etwas wie:

[ "$TERM" = "dumb" ] && export PAGER=/bin/cat
Sigma
quelle
Danke für die Antwort. Da ich die Einstellungen des Remote-Servers nicht ändern soll, könnte ich entweder versuchen, env-Variablen mit meiner ssh-Verbindungszeichenfolge zu senden ... oder mich einfach an ansi-term gewöhnen!
KookieMonster
Gibt es einen Pager, der Farbe anzeigt?
Erjoalgo
@erjoalgo Für Farben können Sie ccat anstelle von cat verwenden. Das Ergebnis ist wirklich süß :)
Prosoitos