.tex ファイルにコマンド '\usepackage{sagemath}' が含まれていることを検出し、それに応じてコマンドを実行するように Vim をセットアップしようとしています。たどり着きました
: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()
おそらく、特定のパターンが一致するかどうかをチェックし、必要なものを実行する関数を作成できます。