Domanda

Sto cercando di impostare Vim per rilevare quando un file .tex contiene il comando '\ usepackage {} sagemath', ed eseguire un comando di conseguenza. Ho ottenuto a

:au BufReadPost,BufWritePost *.tex TTarget sagepdf

, ma che il fuoco per tutti i file .tex, che non è quello che voglio.

È stato utile?

Soluzione

Theres un esempio nel mio filetype.vim su come distinguere i tipi html. È possibile modificare facilmente per soddisfare la vostra logica. Si noti la getline (n) = ~ linee

" 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

Altri suggerimenti

In primo luogo, si dovrebbe considerare l'utilizzo di un modeline .

Se non è possibile ottenere ciò che si vuole con una modeline, è possibile utilizzare la propria funzione in autocmd, in questo modo:

function! MyFunction()
  ...
endfunction

autocmd BufReadPost,BufWritePost *.tex call MyFunction()

e probabilmente si può scrivere una funzione che controlla se un determinato modello corrisponde, e poi corre quello che vuoi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top