Frage

Ich versuche, Vim einzurichten, um festzustellen, wann eine .tex-Datei den Befehl enthält ‚\ usepackage {sagemath}‘, und einen Befehl entsprechend ausgeführt werden. Ich habe bekommen zu

:au BufReadPost,BufWritePost *.tex TTarget sagepdf

, aber das wird Feuer für alle .tex-Dateien, die nicht das, was ich will.

War es hilfreich?

Lösung

Theres ein Beispiel in meinem filetype.vim, wie HTML-Typen zu unterscheiden. Sie können ganz einfach ändern Sie Ihre Logik entsprechen. Beachten Sie die getline (n) = ~ Linien

" 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

Andere Tipps

Als erstes sollten Sie prüfen, mit einer Modeline .

Wenn Sie nicht bekommen kann, was man mit einer Modeline möchten, können Sie Ihre eigene Funktion in autocmd verwenden, wie diese:

function! MyFunction()
  ...
endfunction

autocmd BufReadPost,BufWritePost *.tex call MyFunction()

und Sie können wahrscheinlich eine Funktion schreiben, dass überprüft, ob ein bestimmtes Muster entspricht, und dann läuft was Sie wollen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top