VIM文件类型-为什么一些文件类型匹配器使用;调用;及其他",;setf";?
假设我为vim编写了一个新的语法文件,用于某些文件类型,现在我想将其集成到vim(8.1)中。我正在查看VIM文件类型-为什么一些文件类型匹配器使用;调用;及其他",;setf";?,vim,syntax-highlighting,vim-syntax-highlighting,Vim,Syntax Highlighting,Vim Syntax Highlighting,假设我为vim编写了一个新的语法文件,用于某些文件类型,现在我想将其集成到vim(8.1)中。我正在查看/usr/share/vim/vim81/filetypes.vim,我注意到有些行的格式如下: au BufNewFile,BufRead *.ext setf foo 对于某些扩展名.ext和语法文件syntax/foo.vim。但有些台词还有其他含义: au BufNewFile,BufRead *.asm,*.[sS],*.[aA],*.mac
/usr/share/vim/vim81/filetypes.vim
,我注意到有些行的格式如下:
au BufNewFile,BufRead *.ext setf foo
对于某些扩展名.ext
和语法文件syntax/foo.vim
。但有些台词还有其他含义:
au BufNewFile,BufRead *.asm,*.[sS],*.[aA],*.mac,*.lst,*.ptx call dist#ft#FTasm()
或
为什么会有这种差异?我应该使用哪一个?
:setf foo
是一个非常简单的命令,如果当前缓冲区的文件类型尚未设置,则将其设置为foo
您引用的脚本的作者可能有其他需要,或者他们可能需要执行更多的检查或其他操作,因此他们决定将所有这些内容封装在自定义函数中,这些函数使用:call FunctionName()
调用
所以
- 如果您有基本需求,请使用第一张表格
- 如果您有更复杂的需求,请使用第二种形式
请参见
:help:setf
和:help:call
被调用的函数是否在语法文件中?第一个是自动加载的函数,请参见:help autoload
。第二个似乎是在调用它的文件中定义的,请参见:help s:
。如果我处于那种情况,我会选择第一个。
au BufNewFile,BufRead proftpd.conf* call s:StarSetf('apachestyle')