为什么在 Windows 中 zsh 的每个提示之前都会出现一个百分号?

sca*_*nny 15 windows zsh command-line

我正在 Windows 中设置 zsh 并且我在每个提示上方的行中的第一个字符位置得到一个反向(白底黑字(黑色终端背景))百分比符号。

通常这意味着文件末尾没有换行符,例如在cat-ing 文件时。

它不会发生在我的 Mac 上,甚至不会发生在 Windows 上的 Mintty 上。但它确实发生在 ConEmu 和 CMD.EXE 通常运行的标准终端应用程序中。

我已经有了unset我所有的提示字符串以及precmd()我通常用来在提示上方添加一个空行的字符串。

任何线索可能是什么?

mpy*_*mpy 35

相关选项可能是PROMPT_SP,手册中的解释

尝试保留部分行(即不以换行符结尾的行),否则会因 PROMPT_CR 选项而被命令提示符覆盖。这是通过输出一些光标控制字符(包括一系列空格)来工作的,当存在部分行时,这些字符应该使终端换行到下一行(请注意,这仅在您的终端具有自动边距时才成功,这是典型的) .

保留部分行时,默认情况下,您将在部分行的末尾看到一个反色+粗体字符:a%代表普通用户,a#代表 root。如果设置,shell 参数PROMPT_EOL_MARK 可用于自定义部分行结尾的显示方式。

所以,要么你做一个

unsetopt PROMPT_SP
Run Code Online (Sandbox Code Playgroud)

如果你不关心被掩盖的行(但是在你的情况下它似乎是一个空行,因为你%在开始时得到了标志)。

或使用

setopt PROMPT_CR
setopt PROMPT_SP
export PROMPT_EOL_MARK=""
Run Code Online (Sandbox Code Playgroud)

保留部分行,但删除%-- 代价是提示上的一些空行。

要使其永久化,请更新您的~/.zshrc.

这是一个盲目的镜头,因为我无法在我的cmd.exe.