Ich wollte das aktuelle Arbeitsverzeichnis aus der Eingabeaufforderung der eshell ausblenden, wie ich es in der Befehlszeile mache, da es viel Platz auf dem Bildschirm einnimmt. Mit C-h v
prüfe ich, ob der Standardwert lautet:
Value:
(lambda nil
(concat
(eshell/pwd)
(if
(=
(user-uid)
0)
" # " " $ ")))
und ich habe versucht, es in meinem wie folgt zu ändern .emacs
:
(setq eshell-prompt-function
(lambda () "> "))
aber wenn ich das oben genannte mache, gehen bestimmte Tasten kaputt. Ich kann zum Beispiel nicht mehr M-p
die vorherigen Befehle durchsuchen und C-c C-a
der Punkt wird nicht auf den Anfang des Befehls gesetzt, den ich eingebe, wie es bei der Standardeingabeaufforderung der Fall ist. Ich frage mich, warum das passiert und ob es einen Weg gibt, das zu umgehen?
Danke
Antwort1
eshell-bol verwendet die Funktion eshell-skip-prompt, um die Eingabeaufforderung zu umgehen. Da Sie die Eingabeaufforderung so geändert haben, dass sie mit einem > statt einem $ endet, müssen Sie den Wert von eshell-prompt-regexp ändern. Wenn Sie ihn ändern, ^>
sollte es funktionieren.
eshell-prompt-regexp is a variable defined in `em-prompt.el'.
Its value is "^[^#$
]* [#$] "
Documentation:
A regexp which fully matches your eshell prompt.
This setting is important, since it affects how eshell will interpret
the lines that are passed to it.
If this variable is changed, all Eshell buffers must be exited and
re-entered for it to take effect.
You can customize this variable.