vim:编译当前缓冲区的函数出现问题
我有这个函数来编译我的tex文件:vim:编译当前缓冲区的函数出现问题,vim,Vim,我有这个函数来编译我的tex文件: function! CompileTex() silent write! call setqflist([]) echon "compiling with arara ..." exec 'lcd %:h' if expand("%:p") =~# '\(figuras\|figures\)' let mainfile = fnameescape(expand("%:p")) else
function! CompileTex()
silent write!
call setqflist([])
echon "compiling with arara ..."
exec 'lcd %:h'
if expand("%:p") =~# '\(figuras\|figures\)'
let mainfile = fnameescape(expand("%:p"))
else
let mainfile = fnameescape(Tex_GetMainFileName())
endif
let &l:makeprg = 'arara -v ' . mainfile
silent make!
if !empty(getqflist())
copen
wincmd J
else
cclose
redraw
echon "successfully compiled"
endif
endfunction
第一个条件存在,因为在创建图形时,我希望编译当前缓冲区,即使存在主文件。但是,当我在包含“figures”的路径中调用函数时,我得到
而
mainfile
变量被设置为主tex文件,而不是我想要的当前缓冲区 按照错误消息的建议尝试,并将“lcd%:h”更改为“lcd%:p:h”
此外,您不需要:exec。直接写就行了,这是一个ex命令:
function! CompileTex()
silent write!
call setqflist([])
echon "compiling with arara ..."
lcd %:p:h
...
etc.
按照错误消息的建议尝试,并将“lcd%:h”更改为“lcd%:p:h” 此外,您不需要:exec。直接写就行了,这是一个ex命令:
function! CompileTex()
silent write!
call setqflist([])
echon "compiling with arara ..."
lcd %:p:h
...
etc.
这确实修复了错误消息,但是主tex文件仍然被编译,而不是我想要的当前缓冲区。可能是我的设置有问题。检查路径中“figure”的条件是否正确?或者我应该修改它?我觉得这个条件很合适。不过,我不确定Tex_GetMainFileName()的作用。您是否验证了该函数正在执行您想要的操作?谢谢。嗯,我真的不知道发生了什么,因为有时条件有效,有时是无效的。我将进一步调查。这确实修复了错误消息,但主tex文件仍在编译,而不是我想要的当前缓冲区。可能是我的设置有问题。检查路径中“figure”的条件是否正确?或者我应该修改它?我觉得这个条件很合适。不过,我不确定Tex_GetMainFileName()的作用。您是否验证了该函数正在执行您想要的操作?谢谢。嗯,我真的不知道发生了什么,因为有时条件有效,有时是无效的。我会进一步调查。