VSCode终端及Code Runner运行C程序出现显示、光标故障问题
VSCode 集成终端/Code Runner 输出显示异常修复方案
针对描述的复现场景(Code Runner运行C程序输出异常、切换到独立Bash终端仍存在显示问题、输入时光标会漂移到已打印的文本区域),按排查优先级从高到低整理修复步骤:
- 优先排查GPU渲染冲突
这是同类显示错位、光标漂移问题的最高发诱因:- 打开设置搜索
terminal.integrated.gpuAcceleration,将默认的on修改为off - 同步确认
terminal.integrated.rendererType保持默认canvas值,不要手动切换为webgl或dom模式 - 重启VSCode后验证现象是否消失
- 打开设置搜索
- 排查转义序列解析错位
终端对ANSI控制转义码(光标移动、清屏、颜色设置)的解析偏移,会直接导致光标跳到已输出文本区、文本叠印:- 在Bash终端执行
export TERM=vt100临时修改终端类型,重新运行之前异常的C程序测试 - 检查
terminal.integrated.shellArgs中给Bash传入的自定义启动参数,无明确需求时全部清空 - 临时禁用所有终端美化类配置(包括自定义提示符、颜色方案、提示符增强工具),排查是否是注入的转义序列导致解析偏移
- 在Bash终端执行
- 排查字体与排版参数不匹配
自定义字体的等宽属性失效、行高/字距设置偏移,会逐行累计字符占位误差,最终出现光标位置和预期不符的问题:- 将
terminal.integrated.fontFamily临时修改为系统自带等宽字体:Windows选Consolas、macOS选Menlo、Linux选Monospace - 把
terminal.integrated.lineHeight、terminal.integrated.letterSpacing两个参数重置为默认值1和0,不要手动调整非默认值
- 将
- 排查Code Runner插件通信冲突
插件默认的输出通道如果和终端渲染逻辑不兼容,会出现输出格式错位:- 打开Code Runner设置,勾选
code-runner.runInTerminal,强制代码运行输出推送到集成终端,不再使用插件自带的输出面板 - 检查C语言对应的执行命令配置,先改回默认值
cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt,排除自定义管道、重定向导致的输出格式异常
- 打开Code Runner设置,勾选
- 终端配置缓存重置兜底
所有配置排查后仍异常的,大概率是VSCode本地保存的终端状态缓存损坏:- 打开命令面板(快捷键Ctrl+Shift+P),执行
Terminal: Clear Saved Terminal Profiles清除所有已保存的终端配置 - 执行
Developer: Reload Window重新加载VSCode窗口,恢复默认终端配置后逐步调整自定义设置
- 打开命令面板(快捷键Ctrl+Shift+P),执行
注意:由于现象跨Code Runner输出和独立Bash终端两个场景复现,基本可以排除单个插件的单独故障,优先从GPU渲染、转义序列解析两个方向定位即可,无需一开始就重装插件或VSCode。
内容的提问来源于stack exchange,提问作者Belly
相关产品推荐
相关产品推荐

