Das ^[]
Geräusch kommt von verschiedenen Terminalsteuerungszeichen in Ihrer Shell-Eingabeaufforderung. Versuchen Sie echo $PS1
, die vollständige Sequenz anzuzeigen, und versuchen Sie beispielsweise export PS1='$ '
festzustellen, dass eine einfachere Eingabeaufforderungszeichenfolge dieses bestimmte Problem beseitigt.
Für die Codierung können Sie versuchen, utf-8 zu Ihrer bevorzugten Codierung zu machen:
(prefer-coding-system 'utf-8)
Einrichten der Eingabeaufforderung
Emacs legt die Variable INSIDE_EMACS fest, sodass Sie ein .bash_profile erstellen können, das PS1 nur festlegt, wenn es in Emacs ausgeführt wird.
Beim Testen auf meinem Computer enthält die erste Zeile der Eingabeaufforderung die problematischen Steuerzeichen. Ich habe damit ein ~ / .bash_profile erstellt.
if [ -n "$INSIDE_EMACS" ]; then
export PS1='\[\033[32m\]\u@\h \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\]\n$ '
fi
Dies setzt die Eingabeaufforderung basierend auf der Standardeinstellung von git-bash, aber ich habe die erste Zeile entfernt (bis zum Zeilenumbruch \ n). Ich habe auch das $ MSYSTEM entfernt, das MINGW64 in die Eingabeaufforderung einfügt - das muss ich nicht sehen. Was bleibt, ist der Benutzer @ Host, das aktuelle Verzeichnis und Git Repo. Die Steuerzeichen legen Farben fest, die Emacs für mich richtig anzeigt. (Einzelheiten zum Einrichten Ihrer Eingabeaufforderung finden Sie im Bash- Handbuch .)
In Emacs habe ich die Shell auf git-bash gesetzt:
(setq explicit-shell-file-name "C:/git-for-windows/bin/bash.exe")
(setq explicit-bash.exe-args '("--login" "-i"))
Bei diesem Setup wird immer noch die erste ioctl-Fehlermeldung angezeigt, aber ansonsten funktionieren die Dinge wie erwartet und die Codierung ist utf-8.
MĂĄrton
sollte lesenMárton
)default-process-coding-system
in Ihrem Emacs eingestellt?(undecided-dos . undecided-unix)
. Ich suche nach einer Möglichkeit, die Puffercodierung automatisch einzustellen, anstatt sich beim Öffnen jedes Mal einen anderen Satz von Tastenanschlägen merken zu müssen. Vielleicht sollte ich eine neue Frage stellen.Dieser Fehler weist auf einen nicht übereinstimmenden Schalter hin. Es ist wahrscheinlich eingestellt
-ic
und Sie brauchen nur-c
:Die andere Option besteht darin, tty to git-bash mit einem ähnlichen Befehl bereitzustellen (was auch immer Windows-äquivalent ist):
quelle
M-x list-processes
zeigt, dass es keine Auswirkung hatte: Der Prozessbefehl istD:/Program Files/git/bin/bash --noediting -i
. Ihren zweiten Vorschlag kann ich nicht verstehen.explicit-shell-file-name
also glaube ich, dass Sie z(setq explicit-bash-args '("--login" "-i"))
.Ich weiß, dass dies nicht genau das gleiche ist wie das OP, aber ich denke, es ist eine interessante Option. Sie können Emacs über die git-bash-Befehlszeile starten. Es wird Emacs dazu bringen, Git-Bash als Shell anzunehmen.
Geben Sie an Ihrer Bash-Eingabeaufforderung Folgendes ein
Dann, in Emacs, Mx "Shell"
quelle