📄 filetype.vim
字号:
" Vim support file to detect file types"" Maintainer: Bram Moolenaar <Bram@vim.org>" Last change: 2001 May 29if !exists("did_load_filetypes")let did_load_filetypes = 1" Line continuation is used here, remove 'C' from 'cpoptions'let ft_cpo_save = &cposet cpo-=Caugroup filetype" Ignored extensionsau BufNewFile,BufRead *.orig,*.bak,*.old,*.new exe "doau filetype BufRead " . expand("<afile>:r")au BufNewFile,BufRead *~ exe "doau filetype BufRead " . substitute(expand("<afile>"), '\~$', '', '')" Abaqus or Trasysau BufNewFile,BufRead *.inp call FTCheck_inp()fun! FTCheck_inp() if getline(1) =~ '^\*' set ft=abaqus else let n = 1 if line("$") > 500 let nmax = 500 else let nmax = line("$") endif while n <= nmax if getline(n) =~? "^header surface data" set ft=trasys break endif let n = n + 1 endwhile endifendfun" ABC music notationau BufNewFile,BufRead *.abc set ft=abc" ABELau BufNewFile,BufRead *.abl set ft=abel" AceDBau BufNewFile,BufRead *.wrm set ft=acedb" Ada (83, 9X, 95)au BufNewFile,BufRead *.adb,*.ads set ft=ada" AHDLau BufNewFile,BufRead *.tdf set ft=ahdl" Apache style config fileau BufNewFile,BufRead proftpd.conf* set ft=apachestyle" Apache config fileau BufNewFile,BufRead httpd.conf*,srm.conf*,access.conf*,.htaccess,apache.conf* set ft=apache" Applix ELFau BufNewFile,BufRead *.am set ft=elf" Arc Macro Languageau BufNewFile,BufRead *.aml set ft=aml" ASN.1au BufNewFile,BufRead *.asn,*.asn1 set ft=asn" Active Server Pages (with Visual Basic Script)au BufNewFile,BufRead *.asa set ft=aspvbs" Active Server Pages (with Perl or Visual Basic Script)au BufNewFile,BufRead *.asp if getline(1) . getline(2) . getline(3) =~? "perlscript" | set ft=aspperl | else | set ft=aspvbs | endif" Assembly (all kinds)" *.lst is not pure assembly, it has two extra columns (address, byte codes)au BufNewFile,BufRead *.asm,*.[sS],*.[aA],*.mac,*.lst call FTCheck_asm()" This function checks for the kind of assembly that is wanted by the user, or" can be detected from the first five lines of the file.fun! FTCheck_asm() " make sure b:asmsyntax exists if !exists("b:asmsyntax") let b:asmsyntax = "" endif if b:asmsyntax == "" call FTCheck_asmsyntax() endif " if b:asmsyntax still isn't set, default to asmsyntax or GNU if b:asmsyntax == "" if exists("g:asmsyntax") let b:asmsyntax = g:asmsyntax else let b:asmsyntax = "asm" endif endif exe "set ft=" . b:asmsyntaxendfunfun! FTCheck_asmsyntax() " see if file contains any asmsyntax=foo overrides. If so, change " b:asmsyntax appropriately let head = " ".getline(1)." ".getline(2)." ".getline(3)." ".getline(4). \" ".getline(5)." " if head =~ '\sasmsyntax=\S\+\s' let b:asmsyntax = substitute(head, '.*\sasmsyntax=\(\S\+\)\s.*','\1', "") endifendfun" Atlasau BufNewFile,BufRead *.atl,*.as set ft=atlas" Automakeau BufNewFile,BufRead [mM]akefile.am set ft=automake" Avenueau BufNewFile,BufRead *.ave set ft=ave" Awkau BufNewFile,BufRead *.awk set ft=awk" Bau BufNewFile,BufRead *.mch,*.ref,*.imp set ft=b" BASIC or Visual Basicau BufNewFile,BufRead *.bas call FTCheck_VB("basic")" Check if one of the first five lines contains "VB_Name". In that case it is" probably a Visual Basic file. Otherwise it's assumed to be "alt" filetype.fun! FTCheck_VB(alt) if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'VB_Name' set ft=vb else exe "set ft=" . a:alt endifendfun" Batch file for MSDOS (*.cmd is close enough)au BufNewFile,BufRead *.bat,*.sys,*.cmd set ft=dosbatch|set nobin|set ff=dos" Batch file for 4DOSau BufNewFile,BufRead *.btm set ft=btm" BC calculatorau BufNewFile,BufRead *.bc set ft=bc" BibTeX bibliography database fileau BufNewFile,BufRead *.bib set ft=bib" BIND configurationau BufNewFile,BufRead named.conf set ft=named" BIND zoneau BufNewFile,BufRead /var/named/*,named.root set ft=bindzone" Blankau BufNewFile,BufRead *.bl set ft=blank" Cau BufNewFile,BufRead *.c set ft=c" C#"au BufNewFile,BufRead *.cs set ft=cs" Cyn++au BufNewFile,BufRead *.cyn set ft=cynpp" Cynlib" .cc and .cpp files can be C++ or Cynlib.au BufNewFile,BufRead *.cc if exists("cynlib_syntax_for_cc")|set ft=cynlib|else|set ft=cpp|endifau BufNewFile,BufRead *.cpp if exists("cynlib_syntax_for_cpp")|set ft=cynlib|else|set ft=cpp|endif" C++if has("fname_case") au BufNewFile,BufRead *.cxx,*.c++,*.C,*.H,*.hh,*.hxx,*.hpp,*.tcc,*.inl set ft=cppelse au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.tcc,*.inl set ft=cppendif" .h files can be C or C++, set c_syntax_for_h if you want Cau BufNewFile,BufRead *.h if exists("c_syntax_for_h")|set ft=c|else|set ft=cpp|endif" Cascading Style Sheetsau BufNewFile,BufRead *.css set ft=css" Century Term Command Scripts (*.cmd too)au BufNewFile,BufRead *.con set ft=cterm" Changelogau BufNewFile,BufRead changelog.Debian set ft=debchangelogau BufNewFile,BufRead [cC]hange[lL]og if getline(1) =~ '; urgency=' \| set ft=debchangelog | else | set ft=changelog | endif" CHILLau BufNewFile,BufRead *..ch set ft=ch" Changes for WEB and CWEB or CHILLau BufNewFile,BufRead *.ch call FTCheck_change()" This function checks if one of the first ten lines start with a '@'. In" that case it is probably a change file, otherwise CHILL is assumed.fun! FTCheck_change() let lnum = 1 while lnum <= 10 if getline(lnum)[0] == '@' set ft=change return endif let lnum = lnum + 1 endwhile set ft=chendfun" Cleanau BufNewFile,BufRead *.dcl,*.icl set ft=clean" Clever (also: *.ent)au BufNewFile,BufRead *.eni set ft=cl" Clever or SGMLau BufNewFile,BufRead *.ent call FTCheck_ent()fun! FTCheck_ent() " This function checks for valid cl syntax in the first five lines. " Look for either an opening comment, '#', or a block start, '{". " If not found, assume SGML. let lnum = 1 while lnum < 6 let line = getline(lnum) if line =~ '^\s*[#{]' set ft=cl return elseif line !~ '^\s*$' " Not a blank line, not a comment, and not a block start, " so doesn't look like valid cl code. break endif let lnum = lnum + 1 endw set ft=sgmlendfun" Clipperau BufNewFile,BufRead *.prg set ft=clipper" Cobolau BufNewFile,BufRead *.cbl,*.cob,*.cpy,*.lib set ft=cobol" Cold Fusionau BufNewFile,BufRead *.cfm,*.cfi set ft=cf" Configure scriptsau BufNewFile,BufRead configure.in,configure.ac set ft=config" Configure filesau BufNewFile,BufRead *.cfg set ft=cfg" Communicating Sequential Processesau BufNewFile,BufRead *.csp,*.fdr set ft=csp" CUPL logic description and simulationau BufNewFile,BufRead *.pld set ft=cuplau BufNewFile,BufRead *.si set ft=cuplsim" Debian Controlau BufNewFile,BufRead */debian/control set ft=debcontrol" Diff filesau BufNewFile,BufRead *.diff,*.rej set ft=diff" Diva (with Skill) or InstallShieldau BufNewFile,BufRead *.rul if getline(1).getline(2).getline(3).getline(4).getline(5).getline(6) =~? 'InstallShield'|set ft=ishd|else|set ft=diva|endif" DCL (Digital Command Language - vms) or DNS zone fileau BufNewFile,BufRead *.com \ if getline(1) =~ '\($ORIGIN\|$TTL\|IN\s*SOA\)' \ || getline(2) =~ '\($ORIGIN\|$TTL\|IN\s*SOA\)' \ || getline(1).getline(2).getline(3).getline(4) =~ 'BIND.*named' \ | set ft=dns | else | set ft=dcl | endif" Dylan - lid filesau BufNewFile,BufRead *.lid set ft=dylanlid" Dylan - intr files (melange)au BufNewFile,BufRead *.intr set ft=dylanintr" Dylanau BufNewFile,BufRead *.dylan set ft=dylan" Microsoft Module Definitionau BufNewFile,BufRead *.def set ft=def" Draculaau BufNewFile,BufRead drac.*,*.drac,*.drc,*lvs,*lpe set ft=dracula" DTD (Document Type Definition for XML)au BufNewFile,BufRead *.dtd set ft=dtd" Embedix Component Descriptionau BufNewFile,BufRead *.ecd set ft=ecd" Eiffelau BufNewFile,BufRead *.e,*.E set ft=eiffel" ERicsson LANGuageau BufNewFile,BufRead *.erl set ft=erlang" Elm Filter Rules fileau BufNewFile,BufRead filter-rules set ft=elmfilt" ESQL-Cau BufNewFile,BufRead *.ec,*.EC set ft=esqlc" Essbase scriptau BufNewFile,BufRead *.csc set ft=csc" Expectau BufNewFile,BufRead *.exp set ft=expect" Exportsau BufNewFile,BufRead exports set ft=exports" Focus Executableau BufNewFile,BufRead *.fex,*.focexec set ft=focexec" Focus Master fileau BufNewFile,BufRead *.mas,*.master set ft=master" Forthau BufNewFile,BufRead *.fs,*.ft set ft=forth" Fortranau BufNewFile,BufRead *.f,*.F,*.for,*.fpp,*.ftn,*.f77,*.f90,*.f95 set ft=fortran" Fvwmau BufNewFile,BufRead *fvwmrc*,*fvwm95*.hook \ let b:fvwm_version = 1 | set ft=fvwmau BufNewFile,BufRead *fvwm2rc* \ let b:fvwm_version = 2 | set ft=fvwm" GDB command filesau BufNewFile,BufRead .gdbinit set ft=gdb" GDMOau BufNewFile,BufRead *.mo,*.gdmo set ft=gdmo" Gedcomau BufNewFile,BufRead *.ged set ft=gedcom" GP scripts (2.0 and onward)au BufNewFile,BufRead *.gp set ft=gp" GNU Server Pagesau BufNewFile,BufRead *.gsp set ft=gsp" Gnuplot scriptsau BufNewFile,BufRead *.gpi set ft=gnuplot" GTK RCau BufNewFile,BufRead .gtkrc,gtkrc set ft=gtkrc" Haskellau BufNewFile,BufRead *.hs set ft=haskellau BufNewFile,BufRead *.lhs set ft=lhaskell" Herculesau BufNewFile,BufRead *.vc,*.ev,*.rs,*.sum,*.errsum set ft=hercules" HEX (Intel)au BufNewFile,BufRead *.hex,*.h32 set ft=hex" HTML (.shtml for server side)au BufNewFile,BufRead *.html,*.htm,*.shtml set ft=html" HTML with M4au BufNewFile,BufRead *.html.m4 set ft=htmlm4" Hyper Builderau BufNewFile,BufRead *.hb set ft=hb" Iconau BufNewFile,BufRead *.icn set ft=icon" IDL (Interface Description Language)au BufNewFile,BufRead *.idl set ft=idl" IDL (Interactive Data Language)au BufNewFile,BufRead *.pro set ft=idlang" Informau BufNewFile,BufRead *.inf,*.INF set ft=inform" Informix 4GL (source - canonical, include file, I4GL+M4 preproc.)au BufNewFile,BufRead *.4gl,*.4gh,*.m4gl set ft=fgl" .INI file for MSDOSau BufNewFile,BufRead *.ini set ft=dosini" SysV Inittabau BufNewFile,BufRead inittab set ft=inittab" Inno Setupau BufNewFile,BufRead *.iss set ft=iss" Jamau! BufNewFile,BufRead *.jpl,*.jpr,Prl*.*,JAM*.* set ft=jam" Javaau BufNewFile,BufRead *.java,*.jav set ft=java" JavaCCau BufNewFile,BufRead *.jj,*.jjt set ft=javacc" JavaScriptau BufNewFile,BufRead *.js,*.javascript set ft=javascript" Java Server Pagesau BufNewFile,BufRead *.jsp set ft=jsp" Java Properties resource file (note: doesn't catch font.properties.pl)au BufNewFile,BufRead *.properties,*.properties_??,*.properties_??_??,*.properties_??_??_* set ft=jproperties" Jessau BufNewFile,BufRead *.clp set ft=jess" Jgraphau BufNewFile,BufRead *.jgr set ft=jgraph" Kimwitu[++]au BufNewFile,BufRead *.k set ft=kwt" KixTartau BufNewFile,BufRead *.kix set ft=kix" KDE scriptau BufNewFile,BufRead *.ks set ft=kscript" Lace (ISE)au BufNewFile,BufRead *.ace,*.ACE set ft=lace" Latteau BufNewFile,BufRead *.latte,*.lte set ft=latte" LambdaProlog (*.mod too, see Modsim)au BufNewFile,BufRead *.sig set ft=lprolog" Lexau BufNewFile,BufRead *.lex,*.l set ft=lex" Lilo: Linux loaderau BufNewFile,BufRead lilo.conf* set ft=lilo" Lisp (*.el = ELisp, *.cl = Common Lisp, *.jl = librep Lisp)if has("fname_case") au BufNewFile,BufRead *.lsp,*.el,*.cl,*.jl,*.L set ft=lispelse au BufNewFile,BufRead *.lsp,*.el,*.cl,*.jl set ft=lispendif" Liteau BufNewFile,BufRead *.lite,*.lt set ft=lite" LOTOSau BufNewFile,BufRead *.lot,*.lotos set ft=lotos" Lout (also: *.lt)au BufNewFile,BufRead *.lou,*.lout set ft=lout" Luaau BufNewFile,BufRead *.lua set ft=lua" Lynx style fileau BufNewFile,BufRead *.lss set ft=lss" M4au BufNewFile,BufRead *.m4 if expand("<afile>") !~? "html.m4$" | set ft=m4 | endif" MaGic Pointau BufNewFile,BufRead *.mgp set ft=mgp" Mail (for Elm, trn, mutt, rn, slrn)au BufNewFile,BufRead snd.\d\+,.letter,.letter.\d\+,.followup,.article,.article.\d\+,pico.\d\+,mutt-*-\d\+,mutt\w\{6\},ae\d\+.txt,/tmp/SLRN[0-9A-Z.]\+ set ft=mail" Makefile (but not Automake)au BufNewFile,BufRead [mM]akefile* if expand("<afile>") !~? 'Makefile.am\>' | set ft=make | endifau BufNewFile,BufRead GNUmakefile,*.mk,*.mak,*.dsp set ft=make" MakeIndexau BufNewFile,BufRead *.ist,*.mst set ft=ist" Manpageau BufNewFile,BufRead *.man set ft=man" Maple Vau BufNewFile,BufRead *.mv,*.mpl,*.mws set ft=maple" Masonau BufNewFile,BufRead *.mason.*.mhtml set ft=mason" Matlab or Mathematicaau BufNewFile,BufRead *.m call FTCheck_m()fun! FTCheck_m() let n = 1 while n < 10 if getline(n) =~ '^\s*%' set ft=matlab return endif if getline(n) =~ '^\s*(\*' set ft=mma return endif let n = n + 1 endwhile set ft=matlabendfun" Maya Extension Languageau BufNewFile,BufRead *.mel set ft=mel" Metafontau BufNewFile,BufRead *.mf set ft=mf" MetaPostau BufNewFile,BufRead *.mp set ft=mp" Modsim III (or LambdaProlog)au BufNewFile,BufRead *.mod \ if getline(1) =~ '\<module\>' | \ set ft=lprolog | \ else | \ set ft=modsim3 | \ endif" Modula 2au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.md,*.mi set ft=modula2" Modula 3 (.m3, .i3, .mg, .ig)au BufNewFile,BufRead *.[mi][3g] set ft=modula3" Moterola S recordau BufNewFile,BufRead *.s19,*.s28,*.s37 set ft=srec" Msqlau BufNewFile,BufRead *.msql set ft=msql
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -