سؤال

أحاول إعداد VIM لاكتشاف عندما يحتوي ملف .tex على الأمر " uSpackage {sagemath} '، وقم بتشغيل أمر وفقًا لذلك. لقد حصلت على

:au BufReadPost,BufWritePost *.tex TTarget sagepdf

لكن هذا سيطلق النار على جميع ملفات .TEX ، وهذا ليس ما أريد.

هل كانت مفيدة؟

المحلول

هناك مثال في filetype.vim حول كيفية destinguise 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