首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不更新vcs_info

不更新vcs_info
EN

Stack Overflow用户
提问于 2019-06-04 18:03:23
回答 2查看 2.6K关注 0票数 12

我只是试图通过使用vcs_info来显示我所在的git存储库的当前分支(如果可用的话)。我的.zshrc文件的相关部分如下:

代码语言:javascript
复制
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_}"

我希望:

  1. 我加载终端并从~ (主目录)开始。zsh提示符应改为 hostname:username @ user $
  2. cd dev/repo带我进入一个git,zsh提示符应该是 hostname:username @ repo $ (master)
  3. cd ..带我回到dev,这不是一个git,提示符应该是 hostname:username @ dev $

我的经历是:

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

我试过的是:

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

代码语言:javascript
复制
precmd() {
    vcs_info
    echo "This has been executed"
}

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

也许我错过了什么,有人能指出问题的所在吗?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-10 05:36:50

几个月后,在不太关心之后,偶然发现了.提示符必须使用单引号而不是双引号。

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

票数 29
EN

Stack Overflow用户

发布于 2022-06-01 14:25:24

把整件事都放进内存中是有效的。

代码语言:javascript
复制
autoload -Uz vcs_info
precmd() {
  vcs_info
  # Format the vcs_info_msg_0_ variable
  zstyle ":vcs_info:git:*" formats "(%b) "

  echo -e -n "\x1b[\x33 q"
  PROMPT="%B%1~ $%b %F{004}${vcs_info_msg_0_}%f> "
  RPROMPT=" %F{005}%T%f"
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56449176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档