Pergunta

Estou tentando configurar o vim para detectar quando um arquivo .tex contém o comando ' usepackage {sagemath}' e executar um comando de acordo. Eu cheguei

:au BufReadPost,BufWritePost *.tex TTarget sagepdf

Mas isso disparará para todos os arquivos .tex, o que não é o que eu quero.

Foi útil?

Solução

Há um exemplo no meu filetype.vim sobre como destinar os tipos HTML. Você pode modificar facilmente para se adequar à sua lógica. Observe o getLine (n) = ~ linhas

" 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

Outras dicas

Primeiro, você deve considerar usar um Modeline.

Se você não consegue obter o que deseja com uma modelo, pode usar sua própria função em autocmd, assim:

function! MyFunction()
  ...
endfunction

autocmd BufReadPost,BufWritePost *.tex call MyFunction()

E você provavelmente pode escrever uma função que verifique se um determinado padrão corresponde e depois executa o que quiser.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top