我试图设置Vim来检测.tex文件包含命令'\ usepackage {sagemath}'时,并相应地运行命令。我已经到基于文件内容的Vim autocmd
:au BufReadPost,BufWritePost *.tex TTarget sagepdf
但是,这将为所有的.tex文件,这不是我想要的。
我试图设置Vim来检测.tex文件包含命令'\ usepackage {sagemath}'时,并相应地运行命令。我已经到基于文件内容的Vim autocmd
:au BufReadPost,BufWritePost *.tex TTarget sagepdf
但是,这将为所有的.tex文件,这不是我想要的。
这是一个在我的filetype.vim中关于如何使html类型变为destateuish的例子。您可以轻松修改以适应您的逻辑。注意getline(n)=〜行
" HTML (.shtml and .stm for server side)
au BufNewFile,BufRead *.html,*.htm,*.shtml,*.stm call s:FThtml()
" Distinguish between HTML, XHTML and Django
fun! s:FThtml()
let n = 1
while n < 10 && n < line("$")
if getline(n) =~ '\<DTD\s\+XHTML\s'
setf xhtml
return
endif
if getline(n) =~ '{%\s*\(extends\|block\)\>'
setf html.django_template
" setf htmldjango
return
endif
let n = n + 1
endwhile
setf html
endfun
首先,您应该考虑使用modeline。
如果你不能得到你想要的一个模式行,您可以使用自己的功能autocmd
,就像这样:
function! MyFunction()
...
endfunction
autocmd BufReadPost,BufWritePost *.tex call MyFunction()
,你或许可以写检查一定的模式是否匹配的功能,然后运行任何你想要的。