sumatrapdf 可通过配置实现 vim 风格导航:一、启用连续滚动模式后用 j/k 垂直滚动、h/l 水平滚动;二、命令行参数强制连续模式启动;三、自定义 keymappings 模拟 gg/g/ctrl+u/d;四、配合 vimtex 等插件与 synctex 实现正反向同步。

如果您在使用 Vim 编辑器编写 LaTeX 或 Markdown 文档时希望 PDF 预览器支持 Vim 风格的键盘导航(如 h、j、k、l 移动),SumatraPDF 本身不原生提供 Vim 模式开关,但可通过配置快捷键映射与行为模拟实现类 Vim 导航体验。以下是实现该目标的多种配置方法:
一、启用 Vim 风格滚动键(J/K 键上下滚动)
SumatraPDF 自带对 Vim 风格滚动的支持,无需额外插件,只需确保版本 ≥3.4。其默认已将 J 和 K 映射为垂直方向滚动(非翻页),等效于 Vim 的 j 和 k;H 和 L 则可配置为水平滚动(需手动添加)。该功能依赖于 SumatraPDF 的命令系统,且仅在“连续滚动”(Continuous View)模式下生效。
1、启动 SumatraPDF,打开任意 PDF 文档。
2、按 C 键切换至连续滚动模式(此时页面自动拼接成单列长卷)。
3、按下 J 键向下小幅滚动,K 键向上小幅滚动。
4、若需启用 H/L 水平滚动,需编辑配置文件:SumatraPDF-settings.txt,在 [Settings] 区块末尾添加:
5、保存文件后重启 SumatraPDF,即可使用 H(左滚)、L(右滚)进行横向导航。
二、通过命令行参数强制启用 Vim 滚动行为
SumatraPDF 支持启动时传入参数以覆盖默认视图行为。当与 Vim 或 Neovim 集成时(如配合 vim-pdf 或 vimtex),可在调用查看器时强制启用连续滚动并预设滚动焦点,使 J/K 键立即可用,避免用户手动按 C 切换。
1、打开 Vim 配置文件(如 _vimrc 或 init.lua)。
2、若使用 vim-pdf 插件,修改 vim.g.pdf_viewer 配置为带参数的完整路径:
3、若使用 vimtex,在 _vimrc 中设置:
4、确保 SumatraPDF.exe 路径中不含空格;若含空格,需用英文双引号包裹整个路径。
5、重新加载配置并编译/打开 PDF,SumatraPDF 将以连续模式启动,J/K 可直接响应。
三、自定义快捷键映射实现完整 Vim 导航语义
SumatraPDF 允许用户通过编辑 SumatraPDF-settings.txt 文件,将任意按键绑定到内置命令(如翻页、跳转、缩放),从而模拟 Vim 的操作语义(例如 gg 到首页、G 到末页、Ctrl+u/d 半页滚动)。该方法需启用高级命令映射功能,适用于 SumatraPDF 3.6+ 版本。
1、关闭 SumatraPDF,用文本编辑器打开其安装目录下的 SumatraPDF-settings.txt。
2、在文件末尾新增 [KeyMappings] 区块(若不存在)。
3、添加以下键映射(每行一条,格式为 键名 = 命令名):
4、保存文件,重启 SumatraPDF。
5、验证:打开文档后,按 g 再按 g 应跳转首页,按 G 跳转末页,Ctrl+u/Ctrl+d 实现半页滚动。
四、结合 Vim 插件实现正向/反向同步导航
当在 Vim 中编辑源文件(如 .tex 或 .md)并调用 SumatraPDF 查看时,仅键位映射不足以构成完整工作流;必须启用 SyncTeX 支持,使光标在 Vim 中跳转时 PDF 自动定位,且 PDF 中点击可反向跳回 Vim 行号。此功能依赖于 SumatraPDF 的 DDE(动态数据交换)或命令行协议,以及 Vim 插件的正确配置。
1、确保 SumatraPDF 已设置为“允许外部程序控制”,方法为:打开 SumatraPDF → 设置 → 选项 → 勾选 “允许其他程序控制 SumatraPDF”。
2、在 Vim 中安装并启用 vimtex 或 vim-pdf 插件,并确认其配置中启用了 SyncTeX:
3、在 Vim 中打开 .tex 文件,执行 :VimtexCompile 编译生成 PDF。
4、执行 :VimtexView 启动 SumatraPDF 并建立同步连接。
5、在 PDF 中按住 Ctrl 并左键单击任意位置,SumatraPDF 将发送反向搜索请求,Vim 自动跳转至对应源码行。











