我想创建一个新命令来编译我当前的* .tex文件,并在pdf查看器中显示(因为我使用了预览,我使用OSX)。这是我的尝试:
autocmd BufReadPost,BufWritePost *.tex nmap <Leader>b :!TEMP=% && PDF=${TEMP:0: ${#TEMP}-4 } && echo $TEMP && "/usr/texbin/pdflatex" -synctex=1 -interaction=nonstopmode % && open $PDF && unset TEMP PDF<CR>
TEMP是mit * .tex文件的文件名。
PDF是我* .pdf的文件名。
但是当我执行此操作时,我收到以下错误消息:
499: Empty file name for '%' or '#', only works with ":p:h"
是否有不同的方法可以在不使用&#39;#&#39;?
的情况下缩短字符串解决方案:
autocmd BufReadPost,BufWritePost *.tex nmap <Leader>b :!PDF="%<.pdf" && "/usr/texbin/pdflatex" -synctex=1 -interaction=nonstopmode "%" && open "$PDF" && unset PDF<CR>
答案 0 :(得分:3)
为什么不使用错误消息的建议并在Vimscript而不是shell中设置PDF
?取代
PDF=${TEMP:0: ${#TEMP}-4 }
与
PDF=%<
甚至
PDF=%<.pdf
给它适当的延伸。