Um einen ähnlichen Effekt bash, dass das ist , einschließlich ..., try:
%(4~|.../%3~|%~)
Dies überprüft, ob der Pfad mindestens 4 Elemente lang ist ( %(4~|true|false)) und druckt, falls dies zutrifft, einige Punkte mit den letzten 3 Elementen ( .../%3~), andernfalls wird der vollständige Pfad gedruckt %~.
Mir ist aufgefallen, dass bashsich Pfade im Homeverzeichnis anscheinend unterschiedlich verkürzen, zum Beispiel:
~/.../some/long/path
Für einen ähnlichen Effekt möchten Sie möglicherweise Folgendes verwenden:
%(5~|%-1~/…/%3~|%4~)
Dadurch wird überprüft, ob der Pfad länger als 5 Elemente ist. In diesem Fall werden das erste Element ( %-1~), einige Punkte ( /…/) und die letzten 3 Elemente gedruckt . Es ist nicht genau das Gleiche wie Pfade, die sich nicht in Ihrem Ausgangsverzeichnis befinden. Sie haben auch das erste Element am Anfang, während bashin diesem Fall nur Punkte gedruckt werden. So
Ich mag die erste Version besser, aber beachten Sie, dass es ~/a/bals .../a/bstatt zeigt ~/a/b. Um dies zu beheben, können Sie verwenden %(5~|…/%3~|%~).
22.
Für diejenigen, die neu bei zsh sind (wie ich), möchten Sie diese Syntax mit der PROMPTUmgebungsvariablen in Ihrem verwenden .zprofile, z. B .:EXPORT PROMPT="%(5~|%-1~/…/%3~|%4~)"
Ryan H.,
1
@ RyanH. Danke, wenn ich meine Antwort noch einmal lese, bemerke ich, dass ich nie erwähnt habe, wo diese Einstellungen vorgenommen werden müssen. Ich werde das reparieren müssen. Zwei kleine Dinge zu Ihrem Kommentar: Einstellungen für interaktive Shellsitzungen sollten in vorgenommen werden .zshrcund es besteht keine Notwendigkeit für exportinterne Parameter wie PROMPT.
Adaephon
@Adaephon Danke für die Info. Ich werde reparieren! :)
Ryan H.
8
Zusätzlich zu den anderen hier gegebenen Antworten können Sie auch %<den Pfad auf eine bestimmte Anzahl von Zeichen kürzen . Ich finde dies der Verwendung vorzuziehen %<n>d, da einzelne Pfadelemente an sich offensichtlich ziemlich lang sein können. Die Verwendung %<ergibt eine weitaus vorhersehbarere maximale Aufforderungslänge.
Wenn Sie beispielsweise das Pfadelement mit tilde expansion ( %~) nach links auf 15 Zeichen kürzen und entfernte Zeichen durch ersetzen möchten .., können Sie Folgendes tun:
PROMPT='%n@%m:%15<..<%~%<<%# '
Dies ist im Zsh-Handbuch unter Prompt Expansion direkt am Ende der Seite dokumentiert .
Die allgemeine Form lautet %d: Wenn eine positive Ganzzahl folgt, dwerden die folgenden Komponenten für den aktuellen Pfad angegeben, der Mittelwert Null gibt den gesamten Pfad an, die negative Ganzzahl gibt den führenden Pfad an:
%d
%/Current working directory.If an integer follows the ‘%’, it specifies a number of trailing components of the current working directory to show
%~As%d and %/, but if the current working directory starts with $HOME, that part is replaced by a ‘~’.
Also, um etwas Ähnliches zu bekommen PROMPT_DIRTRIM=3, könnten Sie verwenden %3doder %3~z
~/a/b
als.../a/b
statt zeigt~/a/b
. Um dies zu beheben, können Sie verwenden%(5~|…/%3~|%~)
.PROMPT
Umgebungsvariablen in Ihrem verwenden.zprofile
, z. B .:EXPORT PROMPT="%(5~|%-1~/…/%3~|%4~)"
.zshrc
und es besteht keine Notwendigkeit fürexport
interne Parameter wiePROMPT
.Zusätzlich zu den anderen hier gegebenen Antworten können Sie auch
%<
den Pfad auf eine bestimmte Anzahl von Zeichen kürzen . Ich finde dies der Verwendung vorzuziehen%<n>d
, da einzelne Pfadelemente an sich offensichtlich ziemlich lang sein können. Die Verwendung%<
ergibt eine weitaus vorhersehbarere maximale Aufforderungslänge.Wenn Sie beispielsweise das Pfadelement mit tilde expansion (
%~
) nach links auf 15 Zeichen kürzen und entfernte Zeichen durch ersetzen möchten..
, können Sie Folgendes tun:Dies ist im Zsh-Handbuch unter Prompt Expansion direkt am Ende der Seite dokumentiert .
quelle
Sie können die
%3d
sofortige Erweiterung verwenden :Die allgemeine Form lautet
%d
: Wenn eine positive Ganzzahl folgt,d
werden die folgenden Komponenten für den aktuellen Pfad angegeben, der Mittelwert Null gibt den gesamten Pfad an, die negative Ganzzahl gibt den führenden Pfad an:quelle
Siehe http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html oder
man zshmisc
Also, um etwas Ähnliches zu bekommen
PROMPT_DIRTRIM=3
, könnten Sie verwenden%3d
oder%3~
zquelle