Zsh prompt personalizado e atualizando o valor da variável

1

Eu gostaria de usar o valor de um conjunto de variáveis no meu shell zsh para exibir na linha de prompt.

Por exemplo, digamos que export TOKEN='hello' esteja definido na minha sessão. Naquela época, eu carreguei meu prompt, que contém um "$TOKEN" .

Isso funciona bem e o prompt é exibido corretamente. No entanto, se eu alterar o valor de TOKEN, meu prompt não será atualizado.

Como faço para que o zsh atualize meu prompt toda vez que eu executei um comando?

    
por Jiehong 11.12.2012 / 23:23

1 resposta

2

Existem algumas maneiras de fazer isso. Você deve examinar as funções precmd e preexec . Eles estão na seção hook functions de zshmisc (que você pode ler on-line ou usando man zshmisc .

Uma solução simples seria ler esta questão unix.stackexchange.com , que diz para colocar isso no seu arquivo ~/.zshrc :

 setopt prompt_subst
 PROMPT='$TOKEN'

Isso fará o que você quiser:

 ┌─(simont@charmander:s000)─────────────────────────────────────▸▸▸▸▸▸▸▸▸▸─(~  )─┐
 └─(12:44)── export GREETING="foo"                                 ──(Wed,Dec12)─┘
 foo ┌─(simont@charmander:s000)─────────────────────────────────▸▸▸▸▸▸▸▸▸▸─(~  )─┐
 └─(12:44)── export GREETING="bar"                                 ──(Wed,Dec12)─┘
 bar ┌─(simont@charmander:s000)─────────────────────────────────▸▸▸▸▸▸▸▸▸▸─(~  )─┐
 └─(12:44)── 

(Isso atrapalha um pouco o meu prompt, mas você pode ver o foo e o bar sendo exibidos corretamente, atualizando quando $GREETING é alterado. No seu caso, use $TOKEN ).

Meu prompt pesadamente empresta o Prompt ZSH do Phil! , que eu achei muito útil quando aprendendo a personalizar o meu.

    
por 12.12.2012 / 03:18

Tags