visual-studio-code - 奇怪的 CMD - VSCode 行为
问题描述
昨天我让 SumatraPDF 和 VisualStudioCode 与 latex-workshop 一起使用正向和反向搜索。今天反向搜索不再起作用了。通过一个简单的 bat 文件,我尝试显示命令行参数。
echo %*
pause
它们似乎是正确的,当我复制命令并将其粘贴到新的 cmd 中时,它可以工作。为了做进一步的测试,我尝试直接命令并运行它。
"C:\....\Code.exe" -g "%1:%2"
pause
Visual Studio Code 响应:错误选项 -g
在 SumatraPDF 中,我将 cmd 设置为命令。现在的行为是我有两个 cmd 窗口。用cmd直接打开VSC打开的文件。随着 cmd 间接启动,我收到了错误消息。
我尝试过重置环境变量、更改当前工作目录以及检查当前正在使用的代码页。
cmd 在看似相同的环境下怎么会有不同的行为呢?我该怎么做才能使从应用程序启动的 cmd 像 Windows 启动的 cmd 一样工作?
解决方案
更新:似乎最近在允许 VSCODE.exe 与命令行交互的方式上发生了一些安全更改(特别是影响 LaTeX-workshop 用户),因此对于今年两次最近的更改,请参阅 https://forum 上的讨论.sumatrapdfreader.org/t/inverse-search-not-performed-for-vs-code-exe/4486/27
在 SumatraPDF 中,%1 的反向语法命令被替换为文件的 %f 和 (l)L 的行
它是通过在感兴趣的行附近双击触发的,如果 synctex 索引文件由 PdfLaTeX(或类似的)正确编译,它将包括 tex %f(ilename) 和最近的 %l(ine) 参考点双击。
因此,SumatraPDF 的 tex syctex 增强的“反向搜索”调用在历史上应该是
"C:\...path to...\Code.exe" -g "%f:%l"
避免使用来自 LaTeX 编辑器的任何折旧的 -inverse-search 参数,只需将其添加一次到 SumatraPDF-settings.txt 中,然后在运行-forward-search
. 如果 file.synctex 或 file.synctex.gz 因错误的 PDF 编译而损坏,它将无法工作。
然而,微软似乎已经添加了添加 CLI.js 处理程序的要求,并且之后需要另一个开关设置!(请参阅上面更新中的讨论链接)
对于一个小的测试文件下载https://github.com/GitHubRulesOK/MyNotes/raw/master/AppNotes/SumatraPDF/LATeX%20and%20Reverse-Search.zip解压并在 SumatraPDF 中打开 sync.pdf 以测试双击页面在编辑器中打开 sync.tex
如果消息是无法启动...则命令行配置不正确。对错误同步文本的粗略测试是查看如果通过添加cmd /k echo
到开始来更改调用会发生什么,因为这将确认反向命令。这里我写了“错误”作为 code.exe 的路径,一旦更正我可以删除 cmd /k echo。
对于反向可能会更改的其他一些系统,请参阅https://github.com/sumatrapdfreader/sumatrapdf/issues/1197#
但是,有效的 VsCode 调用不应受到干扰。
推荐阅读
- maven - 找不到 org.bsc.maven:maven-processor-plugin:jar:1.3.1 在
- ms-access - 当我尝试使用 Access VBA 中的记录集来填充表中的文本字段时,它会从数据中删除所有换行符
- networkx - ValueError:指定的交互扩展比给定节点已经存在的扩展更广泛
- android - 无法在片段的 onDestroyView() 上隐藏键盘
- python - 该对象在创建 CountVectorizer 对象的上下文中意味着什么?
- pandas - 在 pandas barplot 的每个子组中的条之间添加空格
- python - 按列格式化和修改熊猫数据框
- sql - 连接来自同一个表的两个组字段
- node.js - 解析模板时出错:意外的结束标记 app-post-list
- google-chrome - 当我尝试单击并打开网页中的 xml 链接时,出现错误消息不安全尝试加载 URL