Повторно оценивайте выражение запроса каждый раз, когда приглашение отображается в zsh

Я настраиваю свою zsh-подсказку, основанную на теме далласа и тему dstufft от oh-my-zsh . Мне нравится, как в далласе есть различные разделы подсказки, содержащиеся в переменных, что значительно облегчает понимание того, что происходит.

Проблема в том, что эти строки оцениваются один раз для расширения. Поэтому, когда я пытаюсь использовать что-то динамическое, например ${PWD/#$HOME/~} dstufft, оно больше не обновляется динамически.

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

4 Solutions collect form web for “Повторно оценивайте выражение запроса каждый раз, когда приглашение отображается в zsh”

Убедитесь, что prompt_subst опция prompt_subst . При необходимости добавьте следующую строку в ~/.zshrc :

 setopt prompt_subst 

Это означает, что zsh повторно оценивает строку приглашения каждый раз, когда отображается приглашение. Затем убедитесь, что вы назначаете PS1 (или некоторую другую переменную, которая используется темой приглашения) по желанию:

 PS1='${PWD/#$HOME/~}' 

Одиночные кавычки защищают специальные символы, такие как $ от оценки, когда вы устанавливаете переменную.

В порядке,

Мне просто нужно скрыться от моих знака. Например:

 ${PWD/#$HOME/~} \${PWD/#\$HOME/~} 

В zsh для этого нужно использовать % escapes. Например, вместо ${PWD/#$HOME/~} (как ваш пример) просто используйте %~ .

Прочтите zshall(1) и найдите ПРОСТОЙ PROMPT ESCAPES (это слишком долго, чтобы процитировать здесь).

В zsh precmd может делать что угодно (например, устанавливать переменную) перед каждым приглашением:

 function precmd() { current_git_branch=`git rev-parse --abbrev-ref HEAD` } 

http://zsh.sourceforge.net/Doc/Release/Functions.html

Это не так необходимо для текущего каталога, как в исходном вопросе, но может быть полезно для людей, которые находят этот вопрос для других случаев.

(precmd is zsh-only – в bash есть $PROMPT_COMMAND .)

  • Выберите текст в терминале urxvt с помощью Shift + Arrow или Ctrl + Shift + Arrow
  • Как настроить zsh для отображения скрытых файлов и папок?
  • Можно ли использовать два символа (например, tm) в режиме вставки в zsh для привязки команды?
  • Является ли «Арифметическое расширение» ожидаемым действием на vars внутри `[[` tests?
  • Более быстрый запуск zsh
  • Пробелы как разрывы строк из команды inline for loop
  • tcsh vs zsh. Символы Escape / Control
  • Переместить zsh-настройки из Arch live в Arch regular
  • Принуждение к расширению глобального псевдонима частью слова
  • Как добавить статус батареи в zsh в крайнем правом положении?
  • Когда используется ~ + полезно?
  • command-click git commit ID в терминале и взять его в github?
  • Linux и Unix - лучшая ОС в мире.