Abrevia caminho no prompt zsh

11

Bash tem a opção PROMPT_DIRTRIM , por ex. quando eu definir PROMPT_DIRTRIM=3 , então um longo caminho como:

user@computer: /this/is/some/silly/path

mostraria como:

user@computer: .../some/silly/path

Existe uma opção semelhante para zsh ?

    
por pfnuesel 01.04.2016 / 02:01

4 respostas

12

Para obter um efeito semelhante bash , que inclui o ... , tente:

%(4~|.../%3~|%~)

Isto verifica se o caminho tem pelo menos 4 elementos ( %(4~|true|false) ) e, se verdadeiro, imprime alguns pontos com os 3 últimos elementos ( .../%3~ ), caso contrário, o caminho completo é impresso %~ .

Percebi que bash parece encurtar caminhos no diretório inicial de maneira diferente, por exemplo:

~/.../some/long/path

Para um efeito semelhante, você pode usar:

%(5~|%-1~/…/%3~|%4~)

Isto verifica se o caminho é maior que 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 em seu diretório inicial, também terão o primeiro elemento no início, enquanto bash apenas imprime pontos nesse caso. Então

/this/…/some/silly/path

em vez de

.../some/silly/path

Mas isso pode não necessariamente ser algo ruim.

    
por 01.04.2016 / 09:57
7

Além das outras respostas dadas aqui, você também pode usar %< para truncar o caminho para um determinado número de caracteres . Acho isso preferível ao uso de %<n>d , já que os elementos de caminho individuais podem obviamente ser bastante longos em si mesmos. Usar %< gera uma duração máxima de prompt muito mais previsível.

Por exemplo, para truncar à esquerda o elemento do caminho com a expansão do 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, sob Expansão Prompt , logo no final do página.

    
por 01.04.2016 / 16:06
2

Você pode usar %3d expansão imediata :

/home/cuonglm/.config/fish/functions $ PS1='%3d $ '
.config/fish/functions $

A forma geral é %d , se algum inteiro positivo seguir d especifica os componentes à direita para mostrar o caminho atual, a média zero mostra o caminho inteiro, o inteiro negativo significa o caminho à esquerda para mostrar:

.config/fish/functions $ PS1='%-2d $ '
/home/cuonglm $
    
por 01.04.2016 / 05:43
2

Veja link ou man 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 ‘~’.

Para obter algo semelhante a PROMPT_DIRTRIM=3 , você pode usar %3d ou %3~ , por exemplo

% mkdir -p ~/a/b/c/d
% cd ~/a/b/c/d
% PS1='%n@%m: %3d%% '
user@computer: b/c/d% 
    
por 01.04.2016 / 05:43

Tags