我已经写了一个小程序,它会发出命令行提示符和一些Git信息。我使用ANSI转义序列对其着色,它看起来如下所示:

但是,每当我执行选项卡完成或搜索时,zsh在提示符后插入几个空格:

它似乎在为提示符发出的每个转义代码字符插入一个空格,因为删除颜色代码可以消除这种行为。为什么zsh要这样做,我如何才能阻止这种情况呢?
本例的提示程序发出的实际字符序列是(假设\e表示字符033)。
~/s/promptd [\e[36mmaster \e[33m±\e[31m?\e[39m]我的.zshrc的相关部分是:
setopt PROMPT_SUBST
setopt PROMPT_PERCENT
PROMPT='%B$(promptd) %%%b '发布于 2015-03-01 22:11:06
在做了一些额外的研究之后,ZSH快速扩展文档指出转义文字需要包含在%{...%}中。
这是麻烦的,因为现在我必须有条件地输出那些如果我希望提示程序在其他shell中工作,但它似乎纠正了上面所示的行为。
https://stackoverflow.com/questions/28799198
复制相似问题