Pregunta

Estoy intentando configurar Vim para detectar cuando un archivo .tex contiene el comando '\ usepackage {sagemath}', y ejecutar un comando en consecuencia. He llegado a

:au BufReadPost,BufWritePost *.tex TTarget sagepdf

pero que el fuego voluntad para todos los archivos .tex, que no es lo que quiero.

¿Fue útil?

Solución

Theres un ejemplo en mi filetype.vim sobre cómo distinguir tipos html. Usted puede modificar fácilmente para adaptarse a su lógica. Tenga en cuenta el getline (n) = ~ líneas

" 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

Otros consejos

En primer lugar, se debe considerar el uso de un modeline .

Si no puede obtener lo que desea con una modeline, puede utilizar su propia función en autocmd, como esto:

function! MyFunction()
  ...
endfunction

autocmd BufReadPost,BufWritePost *.tex call MyFunction()

y es probable que pueda escribir una función que comprueba si un determinado patrón de partidos, y luego ejecuta lo que quieras.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top