如何去除VSCode终端C++输出末尾的%且不使用endl或换行符
问题根源
你观察到的末尾%并不是C++程序输出的内容,是Zsh、Fish这类现代shell自带的特性:如果上一个运行的程序输出的最后一个字符不是换行符,shell就会主动追加一个高亮的%作为标识,避免程序输出和shell提示符挤在同一行看不清。
不使用endl/\n的解决方法
- 修改shell配置关闭标识提示
如果你用的是Zsh,直接在~/.zshrc配置文件中加入下行,重启终端后就不会再显示这个%了:
如果你用的是Fish,可以在PROMPT_EOL_MARK=''~/.config/fish/config.fish中加入:set fish_cancel_line_delay 0 - 更换默认shell为Bash
Bash默认不会追加这类结尾标识,把VSCode终端的默认shell切换为Bash即可解决,不需要修改任何代码。 - 非交互场景下自动消失
如果你是把程序输出重定向到文件、管道传给其他程序,这个shell追加的%不会被写入内容,不需要额外处理。
内容的提问来源于stack exchange,提问作者Ball
相关产品推荐
相关产品推荐

