通过URL协议打开VS Code文件无法在对应工作区打开的问题咨询
关于VS Code URL协议与CLI命令打开行为差异的解答
你观察得非常细致,而且完全没错——vscode://file/%%f:%%l 格式的URL处理逻辑和本地code -g -r /path/to/file命令的行为确实存在差异,这并不是你遗漏了什么设置或操作,而是当前VS Code的URL协议实现还没覆盖到“复用文件所属已有工作区”这个场景。
具体来说:
- 本地
code -g -r命令的核心逻辑是主动检测目标文件所属的工作区是否已经在运行的VS Code实例中打开,无论该窗口是否处于聚焦状态,都会直接在对应的工作区窗口中定位到目标文件和行号; - 而vscode://file的URL协议处理逻辑目前更偏向于“快速打开指定文件”,它只会解析路径和行号,并不会去关联该文件所属的已打开工作区,哪怕文件属于某个已经打开的工作区,它也可能在当前活跃窗口或者新窗口打开文件,而非复用对应的工作区窗口。
你提到GitHub上已经合入了URL处理的PR,但那个PR大概率是完善了文件路径、特殊字符解析或者行号定位的能力,并没有针对“复用工作区”这个场景做适配。你尝试了2017年9月后的几乎所有版本都没解决,也侧面说明这个特性至今还没在URL协议模块中实现。
如果想要在Web应用中触发“在已有工作区打开文件”的效果,目前可以通过自定义脚本做个中转:解析Web应用传来的vscode://URL中的文件路径和行号,然后调用本地的code -g -r命令来打开,这样就能完全复用已有的工作区窗口了。
另外必须说一句,你说得对,VS Code团队确实做得非常棒!这种场景差异可能是因为URL协议和CLI的使用场景定位不同,未来说不定会补上这个对齐的特性~
内容的提问来源于stack exchange,提问作者Selim Konuk
相关产品推荐
相关产品推荐

