Отримати функцію в PS1 (Zsh)?


15

Це працює в bash( parse_git_branchє визначеною функцією)

export PS1="\$(parse_git_branch)"

Але я не можу визначити еквівалент у zsh.

Примітка: Якщо я це роблю

PROMPT="$(parse_git_branch)"

Здається, це працює, але насправді це виконання команди, коли я встановлюю підказку, що не в цьому суть.

Відповіді:


26

Ви повинні включити

setopt PROMPT_SUBST

у вашому .zshrc, man zshallпояснює це у розділі ПРОСМОТРУВАННЯ :

Якщо встановлено параметр PROMPT_SUBST, рядок підказок спочатку піддається розширенню параметрів, заміні команд та арифметичному розширенню.


14

Насправді вашою проблемою було не просто встановлення PROMPT_SUBST: ви використовуєте подвійні лапки у своєму сценарії, змушуючи оцінювати функцію під час встановлення PROMPTзмінних. Ви хочете оцінити лише тоді, коли підраховується підказка, тобто ви повинні використовувати одинарні лапки.


5

Як каже Акіра, ви повинні використовувати підсказку підказок. Це мій ранній код (все ще працює над ним):

setopt PROMPT_SUBST
PROMPT='$(parse_git_branch)'

або краще

setopt PROMPT_SUBST
PROMPT='[$PR_MAGENTA%n$PR_NO_COLOR@$PR_GREEN%U%m%u$PR_NO_COLOR:$PR_RED%2c$PR_NO_COLOR]$(parse_git_branch) %(!.#.$)'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.