VSCode终端Tab标题不由window.title控制,而由shell进程(如bash/zsh)通过OSC序列(如\033]0;title\007)主动发送,VSCode仅被动显示;需检查~/.bashrc、~/.zshrc等配置中标题相关命令并注释,或禁用oh-my-zsh/powerlevel10k的terminal_title插件,临时执行echo -ne "\033]0;default\007"可验证;若标题频繁跳变,建议设"terminal.integrated.tabs.enabled": false退回到固定shell名标签模式。

VSCode 终端自定义标题规则无法通过设置重置,因为终端标题(Terminal tab label)根本不由 window.title 或 workbench.colorCustomizations 控制——它由 shell 进程自身决定,VSCode 只是被动接收和显示。
为什么改了 window.title 对终端标签没影响
很多人误以为 window.title 配置能控制终端页签文字(比如“bash”、“zsh”、“Python”),其实完全无关:
• window.title 仅影响 VSCode 主窗口顶部操作系统级标题栏(即 Dock/任务栏里看到的那个)
• 终端页签(Tab)名称来自 shell 的 PS1、PS2 或终端模拟器的 OSC 0/OSC 2 序列(如 \033]0;my-title\007)
• VSCode 的终端集成只是转发这些信号,不提供上层配置入口
终端页签标题被改乱了,怎么恢复默认
真正生效的操作是清理 shell 层级的标题设置,不是动 VSCode 设置:
- 检查你的 shell 配置文件(
~/.zshrc、~/.bashrc、~/.profile),搜索类似echo -ne "\033]0;.*\007"或trap.*PROMPT_COMMAND的行,注释或删掉 - 如果你用了
oh-my-zsh或powerlevel10k,确认主题未启用terminal_title类插件或选项(例如 p10k 的POWERLEVEL9K_TERM_TITLE_IDLE="false") - 临时验证:在终端里执行
echo -ne "\033]0;default\007",看页签是否立刻变成 “default”;再执行reset或新开一个终端,观察是否回归 “zsh”/“bash” - Windows 用户注意:WSL 终端标题受 WSL 配置和 Windows Terminal 设置双重影响,优先检查
%USERPROFILE%\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\Settings.json中的tabTitle字段
想统一管理终端页签?用 terminal.integrated.tabs.enabled 关掉它
VSCode 1.85+ 默认开启终端页签(Tabs),但它的标题逻辑更不可控。如果你发现页签名频繁跳变(如从 “bash” 变成 “node” 再变成 “git”),最稳的办法是退回到传统单页模式:
- 设
"terminal.integrated.tabs.enabled": false,重启终端 - 此时所有终端共用一个固定标签名(默认是 shell 名,如 “zsh”),不再随进程变化
- 这个开关不影响功能,只隐藏页签 UI,且不会干扰 shell 自身行为
真正麻烦的是混合环境:你既改了 shell 的 PS1 又装了终端美化插件,还开了 VSCode 的 tabs —— 这时候标题会层层覆盖,最终显示哪个全看谁最后发 OSC 序列。别试图在 VSCode 侧“重置”,得一层层查 shell 初始化链。











