执行搜索和完成时,zsh会插入额外的空格

时间:2015-03-01 21:16:12

标签: shell command-prompt zsh prompt ansi-escape

我编写了一个小程序,它使用一些Git信息发出命令行提示符。我使用ANSI转义序列为它着色,它看起来像这样:

prompt example

但是,每当我执行制表符或搜索时,zsh会在提示后插入几个空格:

spacing bug

似乎是为提示发出的每个转义码字符插入一个空格,因为删除颜色代码可以消除此行为。为什么zsh会这样做,我怎么能阻止它?

我的提示程序为此示例发出的实际字符序列是(假设\e代表字符033)

~/s/promptd [\e[36mmaster \e[33m±\e[31m?\e[39m]

我的.zshrc的相关部分是:

setopt PROMPT_SUBST
setopt PROMPT_PERCENT
PROMPT='%B$(promptd) %%%b '

1 个答案:

答案 0 :(得分:2)

在做了一些额外的研究之后,ZSH Prompt Expansion docs表明逃避文字必须包含在%{...%}中。

这很麻烦,因为现在我必须有条件地输出这些,如果我想让提示程序在其他shell中工作,但它似乎纠正了上面显示的行为。