需修改sumatrapdfprefs.ini文件,在[externalviewers]节中添加commandline、name、filter和key参数,配置vs code等编辑器路径及快捷键,并确保编码为utf-8无bom,重启后即可通过快捷键调用外部编辑器打开源文件。

如果您希望在 SumatraPDF 中直接调用外部编辑器(如 VS Code、Notepad++ 或 TeX 编辑器)打开当前文档源文件,需通过修改其配置文件实现程序关联与快捷键绑定。以下是完成该配置的具体步骤:
一、手动编辑 SumatraPDF 配置文件
SumatraPDF 通过 sumatrapdfprefs.ini 文件管理外部程序调用逻辑,所有外部查看器/编辑器必须在此文件中以标准语法声明。该文件通常位于软件安装目录或便携版根目录下;若不存在,可启动一次 SumatraPDF 后自动生成。
1、关闭 SumatraPDF 所有运行实例,防止配置被覆盖。
2、使用记事本或支持 UTF-8 编码的文本编辑器打开 sumatrapdfprefs.ini 文件。
3、在文件末尾新增 [ExternalViewers] 配置节(若已存在则跳过)。
4、在该节下方添加如下格式的编辑器定义块:
CommandLine = "C:\Program Files\Microsoft VS Code\Code.exe" --goto "%1:%l:%c"
Name = VS Code
Filter = *.tex, *.md, *.cpp, *.py
Key = Ctrl + Shift + E
5、保存文件并确保编码为 UTF-8(无 BOM),否则中文路径或特殊字符可能导致解析失败。
二、配置 LaTeX 源码双向跳转专用编辑器
针对 LaTeX 用户,需确保外部编辑器能响应 Synctex 正向搜索请求(即从 PDF 点击跳转到 .tex 行号)。SumatraPDF 要求编辑器命令行支持 %l(行号)、%c(列号)、%1(文件路径)三个占位符。
1、确认您的 LaTeX 编译器已启用 -synctex=1 参数(如 latexmk -synctex=1)。
2、在 [ExternalViewers] 节中添加专用于 .tex 文件的编辑器条目:
CommandLine = "D:\TeXLive25\bin\win32\texworks.exe" --line %l "%1"
Name = TeXworks
Filter = *.tex
Key = Ctrl + Alt + T
3、确保 Filter 值仅包含英文逗号分隔的扩展名,不带空格;CommandLine 中路径含空格时必须用英文双引号包裹。
4、重启 SumatraPDF,打开一个含 .synctex.gz 的 PDF 文件,按设定快捷键即可触发编辑器跳转。
三、通过“打开方式”菜单临时调用编辑器
当无需固定快捷键、仅需偶发性编辑源文件时,可利用 SumatraPDF 内置的“打开方式”机制绕过配置文件修改。该方法依赖 Windows 系统注册表中已注册的文件类型关联,不改变 SumatraPDF 本地设置。
1、在 SumatraPDF 中打开目标 PDF 文档。
2、点击顶部菜单栏“文件”→“打开方式”→“选择其他应用”。
3、勾选“始终使用此应用打开 .xxx 文件”,在列表中选择已安装的编辑器(如 Notepad++)。
4、若编辑器未出现在列表中,点击“更多应用”→“在 Microsoft Store 中查找其他应用”,或选择“在本机上查找其他应用”,浏览至其可执行文件(如 notepad++.exe)。
5、成功后,下次右键点击 PDF 文档内任意位置,选择“在 [编辑器名] 中编辑源文件”即可启动对应程序并定位原始文件路径(前提是 PDF 元数据或文件命名约定支持推断源文件名)。
四、验证外部编辑器调用是否生效
配置完成后必须进行功能验证,避免因路径错误、权限限制或参数缺失导致静默失败。验证过程需排除系统级拦截和杀毒软件干扰。
1、在 SumatraPDF 中打开一个已知源文件路径的 PDF(例如由同一目录下 .tex 编译生成)。
2、按下您为该编辑器配置的快捷键(如 Ctrl + Shift + E)。
3、观察是否弹出目标编辑器窗口,并自动打开对应源文件且光标定位至正确行号。
4、若编辑器启动但未打开文件,检查 CommandLine 中的占位符是否拼写为 %1(非 $1 或 {1}),以及路径中是否存在中文或 Unicode 字符未被双引号包裹。
5、若完全无响应,确认 Key 值未与其他系统快捷键冲突(如 Ctrl + Shift + Esc 为任务管理器),并尝试更换为 Ctrl + Alt + 字母组合。











