我设法在我的 Windows 机器上使用以下规范实现了前向搜索功能_vimrc
:
let g:Tex_ViewRule_pdf = 'C:\Program Files\SumatraPDF\SumatraPDF.exe -reuse-instance -inverse-search "\"C:\vim\vim74\gvim\" -c \":RemoteOpen +\%l \%f\"" '
环境:我在 Windows 机器上运行 Gvim 安装,安装了最新的 SumatraPDF(删除了 Tab 功能),并已应用此修补旨在解决前向搜索问题。
但是,它只能以非常严格的方式工作:当我想使用映射<leader>ls
来触发前向跳转时,如果我打开任何 SumatraPDF 窗口,我就会遇到 10 秒的延迟。
仅当没有运行SumatraPDF.exe时,我才可以立即向前跳转。
任何可以帮助我摆脱这种尴尬局面的帮助都会受到赞扬!
谢谢你!
与前向搜索问题相关的帖子:
答案1
虽然我知道这个问题已经很久了,但我已经处理了几个小时,刚刚解决了它。我在 Windows 上使用 vim-latex 插件的 gvim 也遇到了前向搜索问题。
主要问题似乎是 set shellslash 与对 sumatra 的前向搜索调用配合得不好。我知道此设置 (shellslash) 建议用于 Windows 上的 vim-latex,但请将其注释掉,以便前向搜索正常工作。
一些重要的 vimrc 行:
"set shellslash
let g:Tex_DefaultTargetFormat ='pdf'
let g:Tex_ViewRule_pdf ='SumatraPDF'
let g:Tex_CompileRule_pdf='pdflatex -synctex=1 -
interaction=nonstopmode -file-line-error-style $*'
其他说明:
确保将 sumatrapdf.exe 文件夹添加到您的 PATH 变量中,compiler.vim 文件中有一行:
elseif (viewer =~? "^sumatrapdf")
当我在 Tex_ViewRule_pdf 变量中包含一条路径时,这似乎对我来说中断了。
- 如果您在文件的其他位置启用了 shellslash,则“set shellslash”行实际上并不会删除 shellslash,我只是将其作为提醒将该部分注释掉。
答案2
距离我上次更新 Gvim + Sumatra 设置已经过去很久了。我将发布我认为相关的完整设置集。
在我看来,指定完整路径以及查看选项并不是太糟糕:这样做的副作用是 --- 向后搜索的相应设置会自动更新。
- 变量的具体设置
g:Tex_ViewRule_pdf
。
let g:Tex_ViewRule_pdf = 'C:\Program Files\SumatraPDF\SumatraPDF.exe -reuse-instance -inverse-search "\"C:\vim\vim80\gvim.exe\" -c \":RemoteOpen +\%l \%f\"" '
- 我在 Windows 机器上为 Sumatra + Gvim 使用的全套设置。
" Vim-Latex {{{ filetype plugin on filetype indent on set shellslash set grepprg=grep\ -nH\ $* set diffexpr=MyDiff() function! MyDiff() let opt = '-a --binary ' if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif let arg1 = v:fname_in if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif let arg2 = v:fname_new if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif let arg3 = v:fname_out if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif let eq = '' if $VIMRUNTIME =~ ' ' if &sh =~ '\<cmd' let cmd = '""' . $VIMRUNTIME . '\diff"' let eq = '"' else let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"' endif else let cmd = $VIMRUNTIME . '\diff' endif silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq endfunction let g:tex_flavor='atex' let g:Tex_GotoError=0 " Will keep the cursor as is. "let g:Tex_IgnoredWarnings = " \'Underfull'."\n". " \'Overfull'."\n". " \'specifier changed to'."\n". " \'You have requested'."\n". " \'Missing number, treated as zero.'."\n". " \'There were undefined references'."\n". " \'Citation %.%# undefined'."\n". " \'Font Warning' let g:Tex_DefaultTargetFormat='pdf' let g:Tex_CompileRule_pdf = 'pdflatex --synctex=-1 -src-specials -interaction=nonstopmode $*' """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Pair of settings that handle LaTeX Preview Color settings let g:Tex_ViewRule_pdf = 'C:\Program Files\SumatraPDF\SumatraPDF.exe -reuse-instance -inverse-search "\"C:\vim\vim80\gvim.exe\" -c \":RemoteOpen +\%l \%f\"" ' " let g:Tex_ViewRule_pdf = 'C:\Program Files\SumatraPDF\SumatraPDF.exe -invert-colors -reuse-instance -inverse-search "\"C:\vim\vim80\gvim.exe\" -c \":RemoteOpen +\%l \%f\"" ' """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " The following section is no longer relevant, as we no longer use Vim to build " the LaTeX files. let g:Tex_MultipleCompileFormats='pdf' " Skip these Tex compilation errors. let g:Tex_IgnoredWarnings = \'Underfull'."\n". \'Overfull'."\n". \'specifier changed to'."\n". \'You have requested'."\n". \'Missing number, treated as zero.'."\n". \'There were undefined references'."\n". \'Citation %.%# undefined'."\n". \'Float too large'."\n". \'Package natbib Warning: Empty'."\n". \'LaTeX Font Warning' let g:Tex_IgnoreLevel = 10 " }}}
答案3
该g:Tex_ViewRule_pdf
变量应仅包含查看器可执行文件的名称。否则,如果您使用可执行文件的完整路径设置变量,则必须修改脚本文件:ftplugin/vim-latex/ftplugin.vim +381
,其中变量的内容应以字符串“sumatrapdf”开头。您只需删除第 381 行的^
from即可elseif (viewer =~? "^sumatrapdf")
实现这一点。