Вопрос

Я пытаюсь настроить Vim так, чтобы определять, когда файл .tex содержит команду '\usepackage{sagemath}', и запускать соответствующую команду.Я добрался до

:au BufReadPost,BufWritePost *.tex TTarget sagepdf

но это сработает для всех файлов .tex, а это не то, чего я хочу.

Это было полезно?

Решение

В моем filetype.vim есть пример того, как различать html-типы.Вы можете легко модифицировать в соответствии с вашей логикой.Обратите внимание на getline (n) =~ строк

" 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

Другие советы

Во-первых, вам следует рассмотреть возможность использования модельная линия.

Если вы не можете получить то, что хотите, с помощью modeline, вы можете использовать свою собственную функцию в autocmd, вот так:

function! MyFunction()
  ...
endfunction

autocmd BufReadPost,BufWritePost *.tex call MyFunction()

и вы, вероятно, можете написать функцию, которая проверяет, соответствует ли определенный шаблон, а затем запускает все, что вы хотите.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top