Odpowiedzi:
Aby uzyskać podobny efekt bash, tj. ...Spróbuj:
%(4~|.../%3~|%~)
To sprawdza, czy ścieżka ma co najmniej 4 elementy ( %(4~|true|false)) i, jeśli jest prawdą, drukuje niektóre kropki z ostatnimi 3 elementami ( .../%3~), w przeciwnym razie drukowana jest pełna ścieżka %~.
Zauważyłem, że bashwydaje się , że skraca ścieżki w katalogu domowym inaczej, na przykład:
~/.../some/long/path
Aby uzyskać podobny efekt, możesz użyć:
%(5~|%-1~/…/%3~|%4~)
Sprawdza, czy ścieżka jest dłuższa niż 5 elementów, i w takim przypadku drukuje pierwszy element ( %-1~), niektóre kropki ( /…/) i ostatnie 3 elementy. To nie jest dokładnie to samo, co ścieżki, których nie ma w twoim katalogu domowym, również będą miały pierwszy element na początku, podczas gdy bashw tym przypadku drukują tylko kropki. Więc
/this/…/some/silly/path
zamiast
.../some/silly/path
Ale to niekoniecznie musi być złą rzeczą.
PROMPTzmienną środowiskową w swoim .zprofile, np .:EXPORT PROMPT="%(5~|%-1~/…/%3~|%4~)"
.zshrci naprawdę nie ma potrzeby exportżadnych wewnętrznych parametrów powłoki, takich jak PROMPT.
Oprócz innych podanych tutaj odpowiedzi można także użyć %<do przycięcia ścieżki do określonej liczby znaków . Uważam, że jest to lepsze niż użycie %<n>d, ponieważ poszczególne elementy ścieżki mogą być same w sobie dość długie. Użycie %<daje znacznie bardziej przewidywalną maksymalną długość zachęty.
Na przykład, aby skrócić w lewo element ścieżki z rozszerzeniem tyldy ( %~) do 15 znaków, zastępując usunięte znaki .., możesz zrobić coś takiego:
PROMPT='%n@%m:%15<..<%~%<<%# '
Jest to udokumentowane w podręczniku Zsh w Podpowiedzi rozszerzenia , na końcu strony.
Możesz użyć %3d szybkiego rozszerzenia :
/home/cuonglm/.config/fish/functions $ PS1='%3d $ '
.config/fish/functions $
Ogólna postać jest %dtaka, że jeśli jakakolwiek dodatnia liczba całkowita dokreśla składowe końcowe do pokazania bieżącej ścieżki, zero oznacza całą ścieżkę, ujemna liczba całkowita oznacza wiodącą ścieżkę do pokazania:
.config/fish/functions $ PS1='%-2d $ '
/home/cuonglm $
Zobacz http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html lubman zshmisc
%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 ‘~’.
Aby uzyskać coś podobnego PROMPT_DIRTRIM=3, możesz użyć %3dlub %3~np
% mkdir -p ~/a/b/c/d
% cd ~/a/b/c/d
% PS1='%n@%m: %3d%% '
user@computer: b/c/d%
~/a/bjako.../a/bzamiast~/a/b. Aby to naprawić, możesz użyć%(5~|…/%3~|%~).