Risposte:
Per ottenere un effetto simile bash, incluso quello ..., prova:
%(4~|.../%3~|%~)
Controlla se il percorso è lungo almeno 4 elementi ( %(4~|true|false)) e, se vero, stampa alcuni punti con gli ultimi 3 elementi ( .../%3~), altrimenti viene stampato il percorso completo %~.
Ho notato che bashsembra abbreviare i percorsi nella directory home in modo diverso, ad esempio:
~/.../some/long/path
Per un effetto simile, potresti voler usare:
%(5~|%-1~/…/%3~|%4~)
Controlla se il percorso è più lungo di 5 elementi e in tal caso stampa il primo elemento ( %-1~), alcuni punti ( /…/) e gli ultimi 3 elementi. Non è esattamente lo stesso dei percorsi, che non si trovano nella tua home directory, avrà anche il primo elemento all'inizio, mentre bashin quel caso stampa solo punti. Così
/this/…/some/silly/path
invece di
.../some/silly/path
Ma questa potrebbe non essere necessariamente una cosa negativa.
PROMPTvariabile d'ambiente nella propria .zprofile, ad es .:EXPORT PROMPT="%(5~|%-1~/…/%3~|%4~)"
.zshrce non c'è davvero bisogno di exportparametri interni della shell come PROMPT.
Oltre alle altre risposte fornite qui, puoi anche utilizzare %<per troncare il percorso di un determinato numero di caratteri . Trovo che questo sia preferibile all'uso %<n>d, poiché i singoli elementi del percorso possono ovviamente essere piuttosto lunghi in se stessi. L'utilizzo %<produce una lunghezza del prompt massima molto più prevedibile.
Ad esempio, per troncare a sinistra l'elemento del percorso con l'espansione tilde ( %~) a 15 caratteri, sostituendo i caratteri rimossi con .., puoi fare qualcosa del genere:
PROMPT='%n@%m:%15<..<%~%<<%# '
Questo è documentato nel manuale di Zsh in Espansione rapida , proprio alla fine della pagina.
È possibile utilizzare l' %3d espansione rapida :
/home/cuonglm/.config/fish/functions $ PS1='%3d $ '
.config/fish/functions $
La forma generale è che %dse un numero intero positivo segue dspecifica i componenti finali da mostrare del percorso corrente, zero significa che mostra l'intero percorso, numero intero negativo indica il percorso principale da mostrare:
.config/fish/functions $ PS1='%-2d $ '
/home/cuonglm $
Vedi http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html oman 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 ‘~’.
Quindi, per ottenere qualcosa di simile a PROMPT_DIRTRIM=3, è possibile utilizzare %3do %3~, ad esempio
% mkdir -p ~/a/b/c/d
% cd ~/a/b/c/d
% PS1='%n@%m: %3d%% '
user@computer: b/c/d%
~/a/bcome.../a/banziché~/a/b. Per risolvere questo, puoi usare%(5~|…/%3~|%~).