Respostas:
Para obter um efeito semelhante bash, incluindo o ..., tente:
%(4~|.../%3~|%~)
Isso verifica se o caminho possui pelo menos 4 elementos ( %(4~|true|false)) e, se verdadeiro, imprime alguns pontos com os últimos 3 elementos ( .../%3~), caso contrário, o caminho completo é impresso %~.
Notei que bashparece encurtar caminhos no diretório home de forma diferente, por exemplo:
~/.../some/long/path
Para um efeito semelhante, você pode querer usar:
%(5~|%-1~/…/%3~|%4~)
Isso verifica se o caminho tem mais de 5 elementos e, nesse caso, imprime o primeiro elemento ( %-1~), alguns pontos ( /…/) e os últimos 3 elementos. Não é exatamente o mesmo que os caminhos, que não estão no diretório inicial, também terão o primeiro elemento no início, enquanto bashapenas imprimem pontos nesse caso. então
/this/…/some/silly/path
ao invés de
.../some/silly/path
Mas isso pode não ser necessariamente uma coisa ruim.
PROMPTvariável de ambiente em sua .zprofile, por exemplo:EXPORT PROMPT="%(5~|%-1~/…/%3~|%4~)"
.zshrce realmente não há necessidade de exportparâmetros internos do shell, como PROMPT.
Além das outras respostas fornecidas aqui, você também pode usar %<para truncar o caminho para um determinado número de caracteres . Acho isso preferível ao uso %<n>d, pois os elementos individuais do caminho podem obviamente ser bastante longos em si. O uso %<gera um comprimento máximo de prompt muito mais previsível.
Por exemplo, para truncar à esquerda o elemento do caminho com expansão de til ( %~) para 15 caracteres, substituindo os caracteres removidos por .., você pode fazer algo assim:
PROMPT='%n@%m:%15<..<%~%<<%# '
Isso está documentado no manual do Zsh em Prompt Expansion , logo no final da página.
Você pode usar %3d a expansão rápida :
/home/cuonglm/.config/fish/functions $ PS1='%3d $ '
.config/fish/functions $
A forma geral é que %d, se qualquer número inteiro positivo a seguir despecificar os componentes à direita para mostrar o caminho atual, zero significa mostrar todo o caminho, inteiro negativo significa o caminho principal a mostrar:
.config/fish/functions $ PS1='%-2d $ '
/home/cuonglm $
Consulte http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html ouman 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 ‘~’.
Portanto, para obter algo semelhante PROMPT_DIRTRIM=3, você pode usar %3dou %3~, por exemplo,
% mkdir -p ~/a/b/c/d
% cd ~/a/b/c/d
% PS1='%n@%m: %3d%% '
user@computer: b/c/d%
~/a/bcomo em.../a/bvez de~/a/b. Para consertar isso, você pode usar%(5~|…/%3~|%~).