2

.tex ファイルにコマンド '\usepackage{sagemath}' が含まれていることを検出し、それに応じてコマンドを実行するように Vim をセットアップしようとしています。たどり着きました

:au BufReadPost,BufWritePost *.tex TTarget sagepdf

しかし、それはすべての .tex ファイルで発生しますが、これは私が望んでいるものではありません。

4

2 に答える 2

3

私の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
于 2010-03-02T12:33:35.277 に答える
2

まず、modelineの使用を検討する必要があります。

モードラインで必要なものを取得できない場合は、で次autocmdのように独自の関数を使用できます。

function! MyFunction()
  ...
endfunction

autocmd BufReadPost,BufWritePost *.tex call MyFunction()

おそらく、特定のパターンが一致するかどうかをチェックし、必要なものを実行する関数を作成できます。

于 2010-03-01T15:03:34.870 に答える