频道
bg

VIM 文件类型检测

coding一月 27, 20211mins
VIM

:filetype on 启用文件类型识别后,VIM会尝试设置文件的filetype选项,这将会触发FileType 事件,然后能够正确启用语法高亮等。识别文件文件是一般是通过文件扩展名(当前也根据文件内容)autocmd BufNewFile,BufRead *.tsx setf typescriptreact:filetype on 应该是启用了是否发送FileType 事件。

:filetype on 启用后,VIM默认使用$VIMRUNTIME/filetype.vim 来检测文件类型

根据filetype加载的目录

  • ftpplugin filetype plugin on
  • indent filetype indent on
  • syntax syntax on

多类型H2

When a dot appears in the value then this separates two filetype names. Example: / vim: set filetype=c.doxygen : / ~ This will use the “c” filetype first, then the “doxygen” filetype.

例如ALE插件

jsx

function! ale#linter#Get(original_filetypes) abort
let l:possibly_duplicated_linters = []
" Handle dot-separated filetypes.
for l:original_filetype in split(a:original_filetypes, '\.')
let l:filetype = ale#linter#ResolveFiletype(l:original_filetype)
let l:linter_names = s:GetLinterNames(l:original_filetype)
let l:all_linters = ale#linter#GetAll(l:filetype)
let l:filetype_linters = []
if type(l:linter_names) is v:t_string && l:linter_names is# 'all'
let l:filetype_linters = l:all_linters
elseif type(l:linter_names) is v:t_list
" Select only the linters we or the user has specified.
for l:linter in l:all_linters
let l:name_list = [l:linter.name] + l:linter.aliases
for l:name in l:name_list
if index(l:linter_names, l:name) >= 0
call add(l:filetype_linters, l:linter)
break
endif
endfor
endfor
endif

评论


新的评论

匹配您的Gravatar头像

Joen Yu

@2022 JoenYu, all rights reserved. Made with love.