Question

Je suis en train de mettre en place Vim pour détecter lorsqu'un fichier .tex contient la commande \ usepackage {} sagemath 'et exécuter une commande en conséquence. Je l'ai appris à

:au BufReadPost,BufWritePost *.tex TTarget sagepdf

mais cela feu pour tous les fichiers .tex, ce qui est pas ce que je veux.

Était-ce utile?

La solution

Theres un exemple dans mon filetype.vim sur la façon de distinguer les différents types de html. Vous pouvez facilement modifier en fonction de votre logique. Notez le getline (n) = ~ lignes

" 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

Autres conseils

D'abord, vous devriez envisager d'utiliser un modeline.

Si vous ne pouvez pas obtenir ce que vous voulez avec un modeline, vous pouvez utiliser votre propre fonction dans autocmd, comme ceci:

function! MyFunction()
  ...
endfunction

autocmd BufReadPost,BufWritePost *.tex call MyFunction()

et vous pouvez probablement écrire une fonction qui vérifie si un certain modèle correspond, puis exécute tout ce que vous voulez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top