Spe*_*bun 7 prompt zsh variable-substitution
我正在根据oh-my-zsh的dallas主题和dstufft主题调整我的 zsh 提示。我喜欢 dallas 将提示的各个部分包含在变量中的方式,这使得更容易理解发生了什么。
问题是,这些字符串被评估一次以进行扩展。所以当我尝试使用动态的东西时,比如${PWD/#$HOME/~}dstufft,那么它就不再动态更新了。
我怎样才能做到两全其美?我希望将提示分解为每次编写提示时进行评估的小节。
Gil*_*il' 15
确保该prompt_subst选项已打开。如有必要,将以下行添加到您的~/.zshrc:
setopt prompt_subst
Run Code Online (Sandbox Code Playgroud)
这告诉 zsh 在每次显示提示时重新评估提示字符串。然后,确保根据需要分配PS1(或提示主题使用的其他变量):
PS1='${PWD/#$HOME/~}'
Run Code Online (Sandbox Code Playgroud)
单引号保护特殊字符,例如$在设置变量时不被评估。
小智 5
在zsh中,precmd可以在每次提示之前做任何事情(比如设置一个变量):
function precmd() {
current_git_branch=`git rev-parse --abbrev-ref HEAD`
}
Run Code Online (Sandbox Code Playgroud)
http://zsh.sourceforge.net/Doc/Release/Functions.html
这对于当前目录来说并不像原始问题中那样有必要,但对于在其他情况下发现此问题的人可能会有所帮助。
(precmd 仅支持 zsh — 在 bash 中,有$PROMPT_COMMAND.)