Eu adoraria ter um caminho colorido legível. Por exemplo, em vez de simplesmente usar% ~ para retornar ~/path/to/foo
, gostaria de formatá-lo ~$RED/$NOCOLORpath$RED/$NOCOLORto$RED/$NOCOLORfoo
para destacar os separadores de caminho.
Posso definir o conteúdo do PROMPT para que a expressão do caminho seja reavaliada em cada exibição? Algo como ${${(%):-%~}//\//_some_format_expression/}
obviamente não funciona.
Ou devo cortar isso ainda mais e forçar o valor PROMPT a ser redefinido toda vez que mudarmos um diretório?
Qualquer solução que atinja o objetivo de formatação de caminho seria bem-vinda.
Obrigado :)
Respostas:
zsh
Tente o seguinte:
Aqui está um detalhamento do prompt:
%{...%}
- uma sequência de escape$(pwd|grep --color=always /)
- imprima o diretório atual e realce/
- a cor dependerá da variável de ambiente $ GREP_COLORS (ou seu valor padrão) - negrito é o padrão%${#PWD}G
- use o comprimento em caracteres do nome do diretório atual como um valor de falha. Isso faz com que o shell considere esse o comprimento da sequência de caracteres anterior (após o "%{
") em vez do comprimento real da cadeia de caracteres que inclui as seqüências de escape ANSI. Isso evita que o shell fique confuso sobre a posição do cursor em relação ao final do prompt.- - - - - - - este é o fim da parte que responde à sua pergunta - - - - - - -
%(!.%F{red}.%F{cyan})
- se esse for um shell privilegiado (raiz), defina a cor do primeiro plano como vermelho, caso contrário, ciano%n
- gera o nome de usuário%f
- redefinir a cor do primeiro plano para o padrão@
- um literal no sinal%F{yellow}
- deixe a cor do primeiro plano amarela%m
- gera o nome do host%f
- redefinir a cor do primeiro plano para o padrão%(!.%F{red}.)
- se esse for um shell privilegiado (raiz), defina a cor do primeiro plano como vermelho%#
- produza a#
para um shell privilegiado ou%
para um não privilegiado%f
- redefinir a cor do primeiro plano para o padrãoColoquei o caminho em primeiro lugar neste prompt de ênfase, pois a pergunta diz respeito ao caminho.
Aqui está uma versão do zsh que muda a cor da barra dependendo se você é root (privilegiado) manipulando a
$GREP_COLORS
variável:Bater
Você pode fazer um prompt semelhante no Bash. Neste exemplo, coloquei o usuário e o nome do host em primeiro lugar e a cor das barras também muda quando o UID é 0. Aviso: isso substitui a
$PS1
variável de prompt do Bash . Isso não deve ser um problema, a menos que você esteja fazendo algo especial ou espere que o comportamento mude quando você definir essa variável diretamente e isso estiver em vigor. Além disso, isso usa uma variável chamada "usercolor
" que pode colidir com outra coisa, embora tudo possa ser colocado em uma função e a variável declarada local.Aproveitei o fato de o Bash não ter o recurso "falha" do zsh para usar a substituição de expansão de parâmetro para colorir condicionalmente as barras (em vez de usar grep).
fonte
PS1="$(pwd)"; PS1="${debian_chroot:+($debian_chroot)}\[$bldgrn\]\u@$(fgcolor $hostnamecolor)\h$(resetcolor)\[$txtrst\]:\[$bldblu\]${PS1//\//$txtred/$bldblu}\[\e[00m\]$bldred\$(parse_git_branch)\[$txtrst\] \[$undcyn\]\T \d\[$txtrst\] 95\$ "
cores definidas em github.com/ibrahima/dotfiles/blob/master/.bashrc.d/prompt.shDepois de alguma solução, posso fornecer uma solução que substitua
chpwd
:my_path
var temporário ? Não consigo substituir diretamente o / inside% ~ ...doprompt
é provavelmente mais limpa.fonte
Uma solução zsh pura:
${(%):-%~}
é o caminho atual.${xxxxx//\//${PR_BOLD_RED}/%f}
substitui todos / em xxxxx por um corajoso vermelhoEu usava aspas duplas nos meus testes, o que não permite a substituição. Tudo funciona bem com aspas simples.
fonte
$PR_BOLD_RED
definido em outro lugar. Eu tenho que usar,PROMPT='%n@%m: %{%B%F{red}%}${${(%):-%~}//\//%B%F{red\}/%b%f}%b%f '
incluindo a fuga muito estranha da chave de fechamento (apenas) após o segundo "vermelho".Aqui está minha tentativa (baseada no NicDumZ):
A diferença é que estou usando o caminho colorido, por isso preciso retornar à minha cor original para o caminho depois que a barra for colorida. No meu caso, o caminho é normalmente amarelo, e a barra fica colorida com magenta, depois retorna para amarelo. Também prefiro usar sequências% F% f, pois elas parecem muito mais legíveis para mim.
fonte