zsh 不更新 vcs_info

Mep*_*ros 6 terminal zsh command-prompt

我只是想通过使用vcs_info. 我的.zshrc文件的相关部分如下:

autoload -Uz vcs_info
zstyle ':vcs_info:*' enable git
zstyle ':vcs_info:*' formats "%F{010}(%b)%f "

precmd() { vcs_info }
setopt prompt_subst

PROMPT="%F{226}%m:%n @ %F{214}%1d %F{226}\$%f ${vcs_info_msg_0_}"
Run Code Online (Sandbox Code Playgroud)

我预计:

  1. 我加载终端并从~(主目录)开始。zsh 提示应为

    hostname:username @ user $

  2. cd dev/repo 带我进入一个 git repo,zsh 提示应该是读

    hostname:username @ repo $ (master)

  3. cd ..带我回到dev,这不是 git repo,提示应该阅读

    hostname:username @ dev $

我经历了:

提示永远不会自动更改/更新;source ~/.zshrc当我更改目录时,我必须运行以进行提示更新。

我尝试过的:

我尝试将precmd()块更新为如下:

precmd() {
    vcs_info
    echo "This has been executed"
}
Run Code Online (Sandbox Code Playgroud)

This has been executed在每个提示之前都看到了,所以我知道 precmd 块被正确输入。似乎vcs_info只是不起作用。

也许我错过了一些东西;有人可以指出可能是什么问题吗?谢谢!

Mep*_*ros 11

几个月后偶然发现了它,而不是真正关心......提示必须使用单引号而不是双引号。

PROMPT='%F{226}%m:%n @ %F{214}%1d %F{226}\$%f ${vcs_info_msg_0_}'

  • 这就对了!双引号现在有问题。谢谢你,你拯救了我的一天。 (3认同)
  • @CrisLuengo - 确保您使用“setopt提示_subst”启用了提示替换 (3认同)
  • 使用单引号,我在提示中看到文字“${vcs_info_msg_0_}”。 (2认同)