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

Это варьировалось бы дистрибутивом. Например:

4
13.06.2012, 01:26
4 ответа

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

setopt prompt_subst

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

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

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

11
27.01.2020, 20:47
  • 1
    О, понятное дело! Я не могу полагать, что использовал двойные кавычки вместо одинарных кавычек. Слишком много Windoze... –  Spencer Rathbun 13.06.2012, 15:29

Хорошо,

Я просто должен выйти из моего $ знаки. Например:

${PWD/#$HOME/~}
\${PWD/#\$HOME/~}
0
27.01.2020, 20:47

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

Читать zshall(1) и ищите ПРОСТЫЕ БЫСТРЫЕ ESCAPE (это слишком длинно для заключения в кавычки здесь).

0
27.01.2020, 20:47
  • 1
    я следую за подходом Steve здесь. Вы видите проблему это %~ поднимает. Я также выполняю некоторые функции в подсказке. –  Spencer Rathbun 12.06.2012, 20:57
  • 2
    @SpencerRathbun unsetopt cdable_vars решил бы проблему переменных среды, вползающих в %~. –  Gilles 'SO- stop being evil' 13.06.2012, 01:25

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

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

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

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

(precmd предназначен только для zsh — в bash есть $PROMPT_COMMAND.)

5
27.01.2020, 20:47

Теги

Похожие вопросы