Ich habe kürzlich Running Shells in Emacs gelesen und einige Zeit damit verbracht, meine aufwändige Zsh-Eingabeaufforderung anzupassen, um mit den eingeschränkten Funktionen von M-x shell
und zu arbeiten M-x ansi-term
.
Nach dieser Anstrengung kann ich Zsh nun endlich aus Emacs heraus verwenden, es gibt jedoch ein - wenn auch geringfügiges - Ärgernis mit M-x ansi-term
. Ich sehe immer den streunenden Text 4m
vor der Eingabeaufforderung.
Wie Sie sehen können, scheint dieses Phänomen unabhängig vom eigentlichen Eingabeaufforderungsthema zu sein. Es wird auch mit den integrierten Eingabeaufforderungen angezeigt, auch mit den einfachen, die keine ausgefallenen Steuerzeichen verwenden. Tatsächlich passiert es sogar mit der Standardaufforderung, dh wenn ich Zsh ohne meine starte .zshrc
.
Nun, es ist wirklich nur ein kleines Ärgernis, und es würde mir nichts ausmachen, wenn ich es nicht loswerden könnte - ich bevorzuge es M-x shell
sowieso meistens , wenn dieses Problem nicht auftritt.
Aber es ärgert mich wirklich, dass ich die Ursache für dieses Problem nicht finden konnte, obwohl ich wirklich versucht habe, es zu debuggen. Ich muss jedoch sagen, dass mein Verständnis von Terminals eher begrenzt ist, so dass ich möglicherweise das sehr Offensichtliche übersehen habe.
Ich bin auf OS X 10.10. Mein Emacs ist 25.0.50, direkt aus dem Kofferraum mit Homebrew gebaut und ohne spezielle Flaggen. Zsh ist 5.0.5, wie in Yosemite enthalten, aber das Problem tritt auch bei 5.0.7 auf, das über Homebrew installiert wird.
Kann jemand ein Licht auf dieses Thema werfen?
system-user-terminfo
hat nichts geändert. Das$TERM
Problem wurde durch Ändern behoben, aber das kann nicht die Lösung sein, oder? Immerhin ist es eine Lüge, im Wesentlichen:ansi-term
ist kein xterm und unterstützt definitiv keine 256 Farben.\x1b[37;4m
gibt eine weiße Farbe mit 37 und unterstrichener Text mit 4 an. Ich kann Ihr Problem nicht reproduzieren. Mein zsh ist 5.0.7 und 'echo $ TERM' in ansi-term gibt mir eterm-color , mein emacs ist 24.4.1 . Ich habe auch die saubere Standardversion 'env HOME = ~ / tmp / emacstest emacs -Q' getestet und kann keine Probleme feststellen.emacs -Q
und ohne Zsh-Konfiguration konsistent reproduzieren .Antworten:
Anscheinend wird dieses Problem durch fehlende terminfo für verursacht
eterm-color
. Ich konnte das Problem beheben, indem ich den Anweisungen in dieser Antwort folgte, um einen entsprechenden Eintrag in die terminfo-Datenbank zu installieren. Speziell:Ich bin mir immer noch nicht sicher, warum das überhaupt nötig ist.
term.el
Exportiert tatsächlich die$TERMINFO
Variable, die auf dieses Verzeichnis verweist, sodass die Shell die Terminfo finden kann. Zsh scheint das Verzeichnis jedoch zu ignorieren ...Es sieht jedoch so aus
~/.terminfo
, dass der obige Befehl den terminfo-Eintrag für Zsh verfügbar macht.Ich würde mich freuen, wenn jemand eine bessere Erklärung oder eine Lösung liefern könnte, die kein manuelles Eingreifen erfordert.
quelle