Zsh настраиваемое приглашение и обновление значения переменной

1

Я хотел бы использовать значение переменной, заданной в моей оболочке zsh, для отображения в строке приглашения.

Например, допустим, export TOKEN='hello'установлено в моей сессии. В это время я загружаю свою подсказку, которая содержит "$TOKEN".

Это отлично работает, и приглашение отображается правильно. Однако, если я изменю значение TOKEN, мое приглашение не будет обновлено.

Как заставить zsh обновлять мое приглашение каждый раз, когда я выполняю команду?

Jiehong
источник
zsh работает на многих других платформах, кроме Linux, особенно Mac OS X.
hd1

Ответы:

2

Есть несколько способов сделать это. Вы должны посмотреть на precmdи preexecфункции. Они находятся в hook functionsразделе zshmisc(который вы можете прочитать онлайн или используя man zshmisc.

Простым решением было бы прочитать этот вопрос unix.stackexchange.com , в котором говорится, чтобы поместить это в ваш ~/.zshrcфайл:

 setopt prompt_subst
 PROMPT='$TOKEN'

Это будет делать то, что вы хотите:

 ┌─(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)── 

(Это немного портит мою подсказку, но вы можете видеть fooи barотображать красиво, как они должны, обновляя при $GREETINGизменении. В вашем случае используйте $TOKEN).

Моя подсказка сильно заимствована из подсказки Фила! ZSH , которую я нашел очень полезной, когда учился настраивать мою.

simont
источник