Intereting Posts
Почему у меня установлены TCP-соединения без PID владельца? Скопируйте файлы с определенным расширением из множества вложенных подкаталогов в один каталог и добавьте к каждому скопированному файлу имя каталога. Linux: разница между использованием autofs с NFS и использованием fstab Представление / цитирование NUL в командной строке Отключение спящего режима в тестировании debian (lxde) cygwin: ls -i сообщает неправильный номер inode для файлов в UNC-пути собирать символ из строки 1 с символом из строки 2 Как удалить PPA _compholio_ Вопросы о Rsnapshot – разрешения пользователей, удаление и жесткие ссылки kdump не создает дамп ядра после загрузки модуля с ошибкой сортировать по максимуму первых двух столбцов Итерация по нескольким параметрам с пробелами в сценарии bash Почему resolv.conf очищается каждый раз, когда я подключаюсь из Интернета в Debian? Предотвращение Nix от обновления git до git-full TCP через TUN: SYN / ACK принимается, но ACK не создается, а сокет остается в состоянии SYN_SENT

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

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

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

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

Убедитесь, что 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 .)