如何解决VIM 文件类型 - 为什么某些文件类型匹配器使用“call”而其他文件类型匹配器使用“setf”?
假设我已经为某种文件类型为 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,*.lst,*.ptx call dist#ft#FTasm()
或
au BufNewFile,BufRead proftpd.conf* call s:StarSetf('apachestyle')
为什么会有这种差异?我应该使用哪个?
解决方法
:setf foo
是一个非常简单的命令,它将当前缓冲区的文件类型设置为 foo
(如果尚未设置)。
您引用的脚本的作者可能有其他需求,或者他们可能需要执行更多检查或其他任何事情,因此他们决定将所有这些内容封装在自定义函数中,这些函数使用 :call FunctionName()
调用。>
所以……
- 如果您有基本需求,请使用第一种形式,
- 如果您有更复杂的需求,请使用第二种形式。
参见 :help :setf
和 :help :call
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。