VSCode仅对已保存文件持久化光标位置;Untitled-1、无路径粘贴内容及code -r复用窗口打开的文件,因缺乏磁盘路径和会话归属,光标位置仅存于当前内存,退出即丢失。

VSCode 能记住上次关闭时光标位置,但仅限于已保存的文件;未保存的 Untitled-1、粘贴生成的无路径内容、或通过 code -r 强制复用窗口打开的文件,光标位置不会持久化。
必须先保存文件才能记住光标位置
VSCode 的位置记忆机制依赖文件的磁盘路径和保存状态。未执行过 Ctrl+S(或 Cmd+S)的文件,其光标坐标只保留在当前会话内存中,进程退出即丢失。
- 对
Untitled-1文件,哪怕你编辑了 10 分钟,只要没另存为,重启后光标永远回到第一行开头 - 从终端拖入一个未保存的文本片段,再关掉窗口——下次打开仍是空窗口,无任何恢复痕迹
- 用
code -r /path/to/file.js复用已有窗口打开文件,该文件的位置记录可能被跳过,因 VSCode 认为它不属于“本次会话主动打开”
检查 files.restoreWindows 和 workbench.startupEditor
这两个设置共同决定窗口与编辑器状态是否还原。光标位置是编辑器状态的一部分,若窗口本身不恢复,光标自然无从谈起。
-
files.restoreWindows必须设为all(默认)或one;设为none则完全禁用所有恢复行为 -
workbench.startupEditor推荐保持默认值(none),设为welcomePage或readme会覆盖上次编辑状态 - 修改后无需重启,但需正常退出 VSCode 才能写入缓存
为什么光标有时停在奇怪的地方?
VSCode 记录的是「光标最终停留点」,不是「你最后输入字符的位置」。这个细节常被忽略,导致误判为功能失效。
- 你在某行末尾按
Enter换行,光标落在新行开头 → 入栈位置是新行开头,不是原行末尾 - 选中一段文字后按
Ctrl+X剪切,光标通常停在选区起点 → 记录的是该起点,而非剪切后空白处 - 使用
Ctrl+K Ctrl+W关闭其他标签页时,焦点会落到剩余标签页的当前光标位置 → 这个位置将成为下次启动的锚点
远程开发与多窗口场景下的特殊表现
光标位置记忆在非本地环境下更易出问题,根源在于路径映射和会话隔离。
- SSH/WSL 中若工作区路径映射不稳定(如挂载点重启变化),VSCode 可能无法匹配到原始文件,导致位置信息丢弃
- 多个窗口属于不同工作区时,它们各自维护独立的位置栈;关掉 A 窗口后启动,不会把 B 窗口的光标位置带进来
- 分屏编辑同一文件时,两个视图共享位置历史,跳转可能跨面板生效——这容易让人误以为“光标乱跳”
真正关键的一点是:光标位置记忆不是独立开关,它依附于文件保存状态 + 窗口恢复机制 + 路径稳定性三者同时成立。少一个,就表现为“好像没记住”。


















