我在 Windows 中设置了 zsh,并且在每个提示上方的行中第一个字符位置上出现了一个反向(白底黑字(黑色终端背景))百分号。
通常这意味着文件末尾没有换行符,例如当cat
-ing 文件时。
在我的 Mac 上甚至在 Windows 上的 Mintty 上都不会发生这种情况。但它确实发生在 ConEmu 和 CMD.EXE 通常运行的标准终端应用程序中。
我已经有了unset
所有的提示字符串以及precmd()
我通常用来在提示上方添加空白行的提示字符串。
有任何线索可以知道那是什么吗?
答案1
相关选项可能是PROMPT_SP
,手册中的解释
尝试保留部分行(即未以换行符结尾的行),否则由于 PROMPT_CR 选项,该行将被命令提示符覆盖。此操作通过输出一些光标控制字符(包括一系列空格)来实现,当存在部分行时,这些字符会使终端换行到下一行(请注意,这仅在您的终端具有自动边距时才会成功,这是很常见的情况)。
当保留部分行时,默认情况下,您将在部分行的末尾看到一个反白加粗字符:
%
普通用户为 a ,#
root 为 a 。如果设置,shell 参数PROMPT_EOL_MARK
可用于自定义部分行末尾的显示方式。
因此,你要么
unsetopt PROMPT_SP
如果您不关心被覆盖的线(但是在您的情况下它似乎是一条空线,因为您%
在一开始就得到了符号)。
或者使用
setopt PROMPT_CR
setopt PROMPT_SP
export PROMPT_EOL_MARK=""
它保留了部分行,但删除了%
--,但代价是在提示符上留下一些空行。
为了使此设置永久生效,请更新您的~/.zshrc
。
这是一次盲拍,因为我无法在我的作品中重现这种行为cmd.exe
。
答案2
所以我的 zsh + oh-my-zsh 遇到了完全相同的问题。
我在 mpy 和以下几行的帮助下修复了这个问题:
setopt PROMPT_CR
setopt PROMPT_SP
导出 PROMPT_EOL_MARK=""
您只需前往 -> ~/.oh-my-zsh/themes/XXXXXX 您需要打开您在 oh-my-zsh 上使用的主题,因此对我来说,例如它是 agnoster。
只需打开此文件并复制/粘贴文件末尾的这 3 行。
并且已修复!!
希望您度过愉快的一天并且这能够帮助到一些人。
和平
答案3
您可以在 ConEmu 中运行 mintty。这帮我省去了百分比。
以下是我所掌握的任务参数:
/icon "%ConEmuDrive%\msys64\msys2.ico"
和命令:
set CHERE_INVOKING=1 & %ConEmuDrive%\\msys64\usr\bin\mintty.exe -i "%ConEmuDrive%\msys64\msys2.ico" -
答案4
如果您使用的是 zsh shell ,请在终端中运行以下行: echo 'setopt PROMPT_CR' >.zshrc echo 'setopt PROMPT_SP' >.zshrc echo 'export PROMPT_EOL_MARK=""' >.zshrc