Создайте тип файла Vim для презентаций beamer, который изменяет тип файла tex, основываясь на расширении файла и содержимом первых нескольких строк. - PullRequest
2 голосов
/ 05 августа 2011

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

Когда я создаю документ beamer, он имеет.tex расширение файла и строка, похожая на следующую в первых нескольких строках:

\documentclass[...]{beamer}

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

  • Как можно автоматически установить тип файла на beamer, используя как информацию из расширения файла, так и начальные несколько строк файла?

Как часто случается, процесс формулирования вопроса привел меня к :h new-filetype-scripts, но это все еще требует значительного количества расшифровки.Любые советы будут приветствоваться.

Ответы [ 2 ]

2 голосов
/ 05 августа 2011

Согласно справочной статье, которую вы указали, вам нужно создать файл scripts.vim в каталоге времени выполнения vim с содержимым, похожим на это:

if did_filetype()
  finish
endif

if expand('%:e') == 'tex'
  for n in range(1, 5)
    if getline(n) =~ 'beamer'
      setfiletype beamer
      break
    endif
  endfor
endif

Интересно, что это не работаетдля меня.Мне удалось сделать это, поместив его в ftplugin/beamer.vim и немного изменив его на следующее:

for n in range(1, 5)
  if getline(n) =~ 'beamer'
    set filetype=beamer
    break
  endif
endfor

Всякий раз, когда загружается тип файла tex, также получает материал, специфичный для проектора.Я бы порекомендовал сначала попробовать scripts.vim и рассмотреть второй, если вы не можете заставить его работать таким образом.

0 голосов
/ 05 августа 2011

Я все еще экспериментирую, но предварительное решение, кажется, заключается в добавлении файла с именем beamer.vim в ~/.vim/ftdetect следующей командой:

au BufRead,BufNewfile *.tex if getline(1) =~ 'beamer' | set filetype=beamer.tex | endif  

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

...