在.vimrc中的bash命令中使用'#'

时间:2013-08-23 17:54:33

标签: vim

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

1 个答案:

答案 0 :(得分:3)

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

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

PDF=%<

甚至

PDF=%<.pdf

给它适当的延伸。