zsh 在执行搜索和完成时插入额外的空格
zsh inserts extra spaces when performing searches and completion
我编写了一个小程序,可以发出带有一些 Git 信息的命令行提示符。我使用 ANSI 转义序列为其着色,它看起来像这样:
但是,每当我进行制表符补全或搜索时,zsh 都会在提示后插入几个 spaces:
它似乎为提示发出的每个转义码字符插入一个 space,因为删除颜色代码消除了这种行为。为什么 zsh 这样做,我该如何阻止它?
这个例子中我的提示程序发出的实际字符序列是(假设\e
代表字符033)
~/s/promptd [\e[36mmaster \e[33m±\e[31m?\e[39m]
我的 .zshrc
的相关部分是:
setopt PROMPT_SUBST
setopt PROMPT_PERCENT
PROMPT='%B$(promptd) %%%b '
经过一些额外的研究,ZSH Prompt Expansion docs 表明转义文字需要包含在 %{...%}
中。
这很麻烦,因为现在如果我想让提示程序在其他 shell 中工作,我必须有条件地输出那些,但它似乎纠正了上面显示的行为。
我编写了一个小程序,可以发出带有一些 Git 信息的命令行提示符。我使用 ANSI 转义序列为其着色,它看起来像这样:
但是,每当我进行制表符补全或搜索时,zsh 都会在提示后插入几个 spaces:
它似乎为提示发出的每个转义码字符插入一个 space,因为删除颜色代码消除了这种行为。为什么 zsh 这样做,我该如何阻止它?
这个例子中我的提示程序发出的实际字符序列是(假设\e
代表字符033)
~/s/promptd [\e[36mmaster \e[33m±\e[31m?\e[39m]
我的 .zshrc
的相关部分是:
setopt PROMPT_SUBST
setopt PROMPT_PERCENT
PROMPT='%B$(promptd) %%%b '
经过一些额外的研究,ZSH Prompt Expansion docs 表明转义文字需要包含在 %{...%}
中。
这很麻烦,因为现在如果我想让提示程序在其他 shell 中工作,我必须有条件地输出那些,但它似乎纠正了上面显示的行为。