1

我想创建一个新命令来编译我当前的 *.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"

是否有其他方法可以在不使用“#”的情况下缩短字符串?

解决方案:

autocmd BufReadPost,BufWritePost *.tex nmap <Leader>b :!PDF="%<.pdf" && "/usr/texbin/pdflatex" -synctex=1 -interaction=nonstopmode "%" && open "$PDF" && unset PDF<CR>
4

1 回答 1

3

为什么不使用错误消息的建议并PDF在 Vimscript 中而不是在 shell 中设置?代替

PDF=${TEMP:0: ${#TEMP}-4 }

PDF=%<

甚至

PDF=%<.pdf

给它适当的扩展。

于 2013-08-23T18:05:09.757 回答