SumatraPDF启动CMD调用VSCode反向搜索报bad option -g问题咨询
问题根因
你遇到的现象核心是两次CMD调用时命中了不同的code.exe程序:
Windows系统C:\Windows\System32路径下存在一个原生的字符编码转换工具,名称也为code.exe,该工具不支持-g参数,所以会抛出bad option -g报错。
手动启动的CMD加载了用户级环境变量,VSCode的安装路径在用户级Path中排序优先级高于系统级Path,因此优先命中VSCode的Code.exe;而SumatraPDF作为第三方应用启动CMD时,继承的是父进程的系统级环境变量,系统级Path中C:\Windows\System32排序在VSCode路径之前,因此优先命中系统原生的code.exe,才会出现相同命令执行结果不同的情况。
验证方法
在你编写的测试bat脚本开头加入以下两行,运行后即可确认命中的程序路径:
where code.exe echo %PATH% pause
如果输出的第一个code.exe路径为C:\Windows\System32\code.exe,即可确认是该问题。
解决方案
- 最稳妥方案:直接写全VSCode绝对路径
无需通过bat中转,直接在SumatraPDF的反向搜索设置中填写如下命令即可:
"C:\Users\你的实际用户名\AppData\Local\Programs\Microsoft VS Code\Code.exe" -g "%f:%l"
注意替换路径为你本地VSCode的实际安装路径,全程用双引号包裹路径避免空格导致的解析错误。
- 环境变量调整方案
如果你需要全局使用code命令调用VSCode,可将VSCode的安装路径添加到系统级环境变量Path的最顶部,调整完成后重启电脑让所有进程加载新的环境变量即可。
内容的提问来源于stack exchange,提问作者Christoph
相关产品推荐
相关产品推荐

