为什么zsh在我的输出结尾添加“%”?

3
我在我的Mac上使用zsh(oh-my-zsh),但不明白为什么输出末尾总是有这个字符:“%”。

enter image description here

如果我在我的~/.zshrc中不加入export TERM="xterm-256color",那么我就没有那个字符。

enter image description here


“zsh shell中的百分号是从哪里来的?”(https://dev59.com/Rqr2oIgBc1ULPQZFOr0S)是一个很好的规范化重复问题,适用于那些代码输出没有以换行符结尾的情况,其中ZSH的行为旨在通过“%”突出显示这一点。这个问题似乎是关于在一个不按照ZSH期望的非传统终端上发生这种情况的。 - Peter Cordes
2个回答

6
通常使用反色的粗体 %(或根用户使用 #)来表示输出中的“部分”行,即没有以换行符结尾的行。
由于似乎取决于 TERM 的值,我怀疑这个问题可能是终端仿真器的设置与该值之间不兼容所致。与您第二张截图中显示的警告相反,您实际上 不应该 在您的 ~/.zshrc 文件中(或者在 shell 会话中的任何位置)设置 TERMTERM 应该始终由终端仿真器本身设置。它的值 (结合 terminfo 终端能力数据库)告诉 shell 和其他程序,终端仿真器支持哪些功能以及如何使用它们。如果在 shell 中更改了该值,终端仿真器将不知道该更改。这可能导致程序发送控制代码,终端仿真器无法正确理解或完全理解。
要更改 TERM 的值,您应该在终端仿真器设置中更改。根据 iTerm 2 常见问题,设置位于 Preferences->Profiles->Terminal->Report Terminal Type

为什么ZSH在行末会有一个突出显示的百分号符号?unix.SE上的问题Why ZSH ends a line with a highlighted percent symbol?详细介绍了它如何在\r之前打印%和空格以进行换行或不换行。也许在某些终端上,事情会与ZSH的预期有所不同,导致%出现在另一行上。 - Peter Cordes

2
我个人将export PROMPT_EOL_MARK=''放置在我的~/.zprofile文件中,并隐藏了该字符。

enter image description here

(注:该操作可以帮助隐藏终端提示符后的换行符)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接