% 输出VSCode集成终端后

% 输出VSCode集成终端后

因此,我在 OhMyZsh 上运行带有 PowerLevel10k 的 Arch Linux 安装。我在 Visual Studio Code 上有 SynthWave84 主题,在集成终端中,我在程序输出后得到一个奇怪的 % 符号。一切都根据我找到的教程进行构建,一切都很好,直到我切换到 Oh My Zsh。这是该问题的屏幕截图:

正如你所看到的,程序输出后有一个%。 那么我该如何修复它呢?

答案1

这是 ZSH 指示程序不包含换行符来结束最终输出行的方式:

% PS1="someothershellprompt "
someothershellprompt printf "hello world"
hello world%
someothershellprompt PS1='%# '
% 

解决方法是确保程序发出带有最终换行符的行,因此在您的情况下可能会使用"Hello World!\n"或包含最终换行符的其他方法。

如果没有最终的换行符,您可能会在不良代码中无声地丢失数据,例如

% printf "one\ntwo" | while read line; do echo $line; done
one
% 

所以最好总是包含最终的换行符(很确定 POSIX 要求它存在以便文件成为文本文件)。

(请注意,上述循环中有很多缺陷while。如果您实际上计划在 shell 中进行编程,尤其是 POSIX shell(默认情况下 ZSH 不是),那么确实应该纠正这些缺陷;

printf "one\ntwo\n" |\
while IFS= read -r line || [ -n "$line" ]; do printf '%s\n' "$line"; done

或者,您可以切换到一种问题较少(并且无疑更快)的线路处理能力的编程语言。)

相关内容