近日,Visual Studio Code 用户社区中一个略显冷门的问题引发了热议:如何通过 Windows 的 .lnk 快捷方式文件,在 VS Code 中直接打开其指向的目标?许多开发者习惯用快捷方式快速访问项目配置或常用脚本,但 VS Code 默认将 .lnk 当作二进制文件处理,导致无法直接编辑。这一困扰在论坛和 GitHub 上并不少见。

.lnk 是 Windows 的 Shell 链接文件,双击时由资源管理器解析并跳转至真实对象。但 VS Code 作为一个跨平台编辑器,并未在文件打开层面对它做特殊适配。当用户执行 code a.lnk 或直接拖拽快捷方式到窗口时,编辑器往往显示乱码或报错,而不是打开目标文件。

针对这一问题,开发者们总结了几种实用方案。

最直接的方法是绕过 .lnk 本身,先提取其指向的真实路径。在 PowerShell 中,利用 WScript.Shell 对象可以快速获得目标位置,随后再将目标路径交给 VS Code。例如:

$s=(New-Object -ComObject WScript.Shell).CreateShortcut("文件.lnk"); code $s.TargetPath

将上述命令略作调整,即可用于批处理多个快捷方式。这种方法对普通文件和文件夹都有效,但需要用户具备命令行操作基础。

另一种思路是修改 Windows 的文件关联。通过在系统设置中将 .lnk 的默认打开方式改为 Code.exe,可以直接双击快捷方式用 VS Code 打开。但这样做有较大副作用:资源管理器原本的快捷方式跳转行为会被覆盖,用户可能无法正常通过快捷方式启动程序,因此不推荐新手尝试。

为省去手动操作的麻烦,VS Code 扩展市场中也出现了“Open LNK”等专门扩展。安装后,用户只需在资源管理器右键单击 .lnk 文件,菜单中便会多出“在 VS Code 中打开目标”选项。扩展内部通过 Windows API 解析链接,并调用已有的 VS Code 进程打开目标文件,整体体验流畅。

关于为什么官方迟迟不加入这一功能,VS Code 团队曾在 GitHub issue 中回应,解析 .lnk 可能带来安全风险——恶意快捷方式可引导编辑器读取任意路径,增加攻击面。这一说法得到部分用户认可,但也有开发者认为,编辑器至少应提供可选的开关,将决定权交给用户。截至目前,相关功能请求仍处于开放状态,官方未给出明确的排期。

对于日常工作中频繁依赖快捷方式的用户,目前的建议是:将常用项目整理为 VS Code 工作区(Workspace)或资源管理器的固定区,从源头减少对 .lnk 的依赖;如果确实需要处理大量快捷方式,则可以通过脚本批量解析目标路径,再一次性加载到编辑器中。社区中的相关脚本和扩展已经比较成熟,可满足大多数场景。

技术的进步往往藏在“看起来无关紧要的小问题”里。这次关于 .lnk 的讨论,或许没有最终结论,但它又一次印证了 VS Code 生态的活力:即便官方未提供支持,社区也能迅速创造出桥接方案。未来,随着跨平台协作需求的增长,类似的小工具或许会有更规范的解决方案。