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 bash
wydaje 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 bash
w tym przypadku drukują tylko kropki. Więc
/this/…/some/silly/path
zamiast
.../some/silly/path
Ale to niekoniecznie musi być złą rzeczą.
PROMPT
zmienną środowiskową w swoim .zprofile
, np .:EXPORT PROMPT="%(5~|%-1~/…/%3~|%4~)"
.zshrc
i 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 %d
taka, że jeśli jakakolwiek dodatnia liczba całkowita d
okreś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ć %3d
lub %3~
np
% mkdir -p ~/a/b/c/d
% cd ~/a/b/c/d
% PS1='%n@%m: %3d%% '
user@computer: b/c/d%
~/a/b
jako.../a/b
zamiast~/a/b
. Aby to naprawić, możesz użyć%(5~|…/%3~|%~)
.