我试图建立Vim来检测何时.tex文件包含命令“\ usepackage {sagemath}”,并且相应地运行命令。我已经得到了

:au BufReadPost,BufWritePost *.tex TTarget sagepdf

但将火为.tex文件里,这不是我想要的。

有帮助吗?

解决方案

即使世界我关于如何区分HTML类型的filetype.vim一个例子。您可以轻松地修改,以适应你的逻辑。注意函数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

其他提示

首先,你应该考虑使用模式行

如果你不能得到你想要的东西有一个模式行,您可以使用自己的功能autocmd,像这样的:

function! MyFunction()
  ...
endfunction

autocmd BufReadPost,BufWritePost *.tex call MyFunction()

和你也许可以编写一个函数,检查是否匹配特定模式,然后不管你想要运行。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top