【问题标题】:ZSH - Oh My Zsh: modify PROMPTZSH - Oh My Zsh:修改 PROMPT
【发布时间】:2016-12-02 00:13:08
【问题描述】:

我正在尝试修改 PROMPT 变量以包含一些附加信息。我当前的 PROMPT 还包括右侧的 git status 。它看起来像这样:

ex2 ➤                                                      git:master*                                                                                  

相同的屏幕截图:

我想在当前文件夹前面添加一些文本——例如 [Drone]。我目前正在这样做,

export PROMPT=%{"$fg[green] [Donre]"$fg[$NCOLOR]%}%c ➤ %{$reset_color%}

但这会产生两个问题。 1. 箭头字符不再正确解析,出现类似

的错误
" not valid in this context: ➤"

2。 git 状态被推送到下一行。 新提示显示为,

 /home/arul/.zshrc:export:100: not valid in this context: ➤
 [Drone]ex2              git:maste
 r*                                                                                                                                                                     

相同的屏幕截图:

有人可以帮我正确修改 PROMPT 吗?

【问题讨论】:

  • 你能用实际复制粘贴的文本(在代码块中)替换图像吗?这几乎是可读的(对于视障人士来说肯定是不可读的)。
  • 添加文字和截图。
  • 投反对票的人,能否请您告诉我投反对票的原因。我不反对你投反对票,但如果你不写下投反对票的原因,我就无法在这里改进这个问题。我不确定投反对票是由于提出问题的方式还是实际问题本身。如果最后我得到了我正在寻找的答案,我很高兴得到反对。

标签: zsh oh-my-zsh


【解决方案1】:

%{...} 不会转义其中包含的任何空格;您应该引用 整个 值,以确保任何封闭的空格都被正确地转义以进行分配。

export PROMPT="%{$fg[green] [Donre]$fg[$NCOLOR]%}%c ➤ %{$reset_color%}"

按原样,箭头字符被视为export 命令的单独参数(以及无效的参数名称)。顺便说一句,export 可能是不必要的。每个需要 PROMPT 值的 shell 可能正在执行包含此分配的任何配置文件。


考虑使用zsh自己对颜色的支持,这样你就完全不需要%{...}了。

PROMPT="%F{green} [Donre]%F{...}%c ➤ %f"

(其中...$NCOLOR 代表的任何颜色)。

【讨论】:

  • 我不再收到错误消息。但是出现在右侧的 GIT 状态正在被推到下一行。有什么办法可以避免吗?
  • 我没有看到任何可能导致这种情况的原因。 RPROMPT 的值是多少?
  • %{$fg[$NCOLOR]%}%p $(git_prompt_info)%{$reset_color%} 这是我对 PROMPT 变量进行任何更改之前 RPROMPT 的默认值。跨度>
  • git_prompt_info返回的字符串可能包含需要用%{...%}括起来的字符。同样,使用zsh 的 VCS 工具可能比使用为bash 设计的函数更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-30
  • 1970-01-01
  • 1970-01-01
  • 2015-12-23
  • 2014-01-27
  • 1970-01-01
  • 2011-10-11
相关资源
最近更新 更多