Ctrl+Tab切不到刚打开的只读文件,因其默认以预览态(斜体)加载且被MRU面板忽略;需右键Keep Open转为常驻态,或禁用预览模式确保稳定出现在切换链中。

VSCode 没有“只读标签页”这个独立类型,所谓“只读标签页”其实是普通标签页 + 文件系统/编辑器级只读状态的组合效果;切换行为完全不受只读属性影响,仍走标准标签页切换逻辑。
为什么 Ctrl+Tab 切不到你刚打开的只读文件
只读状态(比如 files.readonly 规则匹配或系统权限设为只读)不会改变标签页的生命周期类型——它仍是预览态还是常驻态,取决于 workbench.editor.enablePreview 和是否手动 Keep Open。而 Ctrl+Tab 默认只显示最近激活的**非预览态**标签页,如果你双击一个被 files.readonly 标记的文件,它大概率仍以预览模式打开(斜体、无关闭 ×),于是直接被 Ctrl+Tab 面板忽略。
- 检查该标签页是否斜体显示:是 → 它是预览态,
Ctrl+Tab不会列出它 - 右键该标签页 → 点
Keep Open,让它变成常驻态(图钉图标出现) - 确保
workbench.editor.enablePreview为false,否则新打开的只读文件仍默认预览 -
files.readonly规则只控制编辑/保存行为,不干预标签页创建逻辑
如何让只读文件稳定出现在 Ctrl+PageUp/Down 切换链中
Ctrl+PageUp 和 Ctrl+PageDown 按物理位置切换,但前提是标签页已“固定”(即非预览态)。只读文件若未手动固定,即使内容不可编辑,也会在切换时被跳过——因为它的标签页本身仍是临时的。
- 必须先对只读文件标签页执行
Keep Open(右键或Ctrl+K Enter) - 确认
workbench.editor.openPositioning设为"right",避免新标签强行覆盖当前 - 禁用编辑器组限制:
"workbench.editor.limit.enabled": false,否则只读文件可能被挤出 - 别依赖
files.readonly自动触发固定:它不改变标签页状态,仅拦截Ctrl+S和编辑操作
锁定只读文件阅读体验的真正关键设置
只读 ≠ 防覆盖 ≠ 防关闭。想稳住一个只读文件长期在视野里,得三层协同:文件层只读、标签层固定、编辑器组层锁定。缺一层,就可能被意外顶替或清掉。
- 文件只读:
"files.readonly": ["**/README.md", "**/Dockerfile"](写进工作区.vscode/settings.json) - 标签固定:对已打开的只读文件标签页,必须手动
Keep Open,重启后需重做 - 组锁定:右键标签页 →
Lock Editor Group,或设"workbench.editor.lockEditors": true - 禁用中键关闭:
"workbench.editor.mouseBackForwardToNavigate": false,否则鼠标中键一点就关
最易被忽略的是:所有这些操作都不跨窗口、不同步到远程开发环境,断开 SSH 或 Dev Container 后,只读规则还在,但 Keep Open 和 Lock Editor Group 状态全丢——每次重连都得重新点两下图钉和锁图标。











