为beamer演示文稿创建Vim文件类型,根据文件扩展名和前几行内容修改tex文件类型



当我编写beamer tex幻灯片演示文稿时,我对tex文件类型进行了一些修改,我希望在默认情况下对beamer文档进行操作。

当我创建一个beamer文档时,它有一个.tex文件扩展名和一行,在前几行中如下所示:

documentclass[...]{beamer}

为简单起见,我们可以说任何扩展名为.tex且文本为beamer的文件在前5行中的任何位置都应该默认为文件类型beamer

  • 我如何使用文件扩展名和文件的初始几行信息自动将文件类型设置为beamer ?

正如经常发生的那样,形成问题的过程使我找到了:h new-filetype-scripts,但这仍然需要相当多的破译。如有任何建议,欢迎。

根据您指出的帮助文章,您需要创建一个vim运行时目录中的scripts.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方法,如果你不能让它以这种方式工作,考虑第二种方法。

我仍在试验,但初步的解决方案似乎是添加一个名为beamer.vim的文件到~/.vim/ftdetect,使用以下命令:

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

注意,我已经根据上面的规范稍微简化了命令,并且文件类型beamer.tex包含了tex特性和我的beamer定制。

最新更新