📄 filetype.vim
字号:
" M$ Resource filesau BufNewFile,BufRead *.rc set ft=rc" Mutt setup fileau BufNewFile,BufRead .muttrc*,Muttrc set ft=muttrc" Nastran input/DMAP"au BufNewFile,BufRead *.dat set ft=nastran" Novell netware batch filesau BufNewFile,BufRead *.ncf set ft=ncf" Nroff/Troff (*.ms is checked below)au BufNewFile,BufRead *.me,*.mm,*.tr,*.nr set ft=nroffau BufNewFile,BufRead *.[1-9] call FTCheck_nroff()" This function checks if one of the first five lines start with a dot. In" that case it is probably an nroff file: 'filetype' is set and 1 is returned.fun! FTCheck_nroff() if getline(1)[0] . getline(2)[0] . getline(3)[0] . getline(4)[0] . getline(5)[0] =~ '\.' set ft=nroff return 1 endif return 0endfun" Not Quite Cau BufNewFile,BufRead *.nqc set ft=nqc" OCAMLau BufNewFile,BufRead *.ml,*.mli,*.mll,*.mly set ft=ocaml" Omnimarkau BufNewFile,BufRead *.xom,*.xin set ft=omnimark" OpenROADau BufNewFile,BufRead *.or set ft=openroad" OPLau BufNewFile,BufRead *.[Oo][Pp][Ll] set ft=opl" Oracle config fileau BufNewFile,BufRead *.ora set ft=ora" PAppau BufNewFile,BufRead *.papp,*.pxml,*.pxsl set ft=papp" Pascalau BufNewFile,BufRead *.pas set ft=pascal" Delphi project fileau BufNewFile,BufRead *.dpr set ft=pascal" Perlif has("fname_case") au BufNewFile,BufRead *.pl,*.PL set ft=perlelse au BufNewFile,BufRead *.pl set ft=perlendif" Perl, XPM or XPM2au BufNewFile,BufRead *.pm if getline(1) =~ "XPM2"|set ft=xpm2|elseif getline(1) =~ "XPM"|set ft=xpm|else|set ft=perl|endif" Perl PODau BufNewFile,BufRead *.pod set ft=pod" Php3au BufNewFile,BufRead *.php,*.php3 set ft=php" Phtmlau BufNewFile,BufRead *.phtml set ft=phtml" Pikeau BufNewFile,BufRead *.pike,*.lpc,*.ulpc,*.pmod set ft=pike" Pine configau BufNewFile,BufRead .pinerc,pinerc set ft=pine" PL/SQLau BufNewFile,BufRead *.pls,*.plsql set ft=plsql" PO (GNU gettext)au BufNewFile,BufRead *.po set ft=po" Postfix main configau BufNewFile,BufRead main.cf set ft=pfmain" PostScriptau BufNewFile,BufRead *.ps,*.eps set ft=postscr" Povrayau BufNewFile,BufRead *.pov set ft=pov" Povray or IA64au BufNewFile,BufRead *.inc call FTCheck_inc()fun! FTCheck_inc() if exists("g:filetype_inc") exe "set ft=" . g:filetype_inc elseif getline(1).getline(2).getline(3) =~ "<?" set ft=php else call FTCheck_asmsyntax() if exists("b:asmsyntax") exe "set ft=" . b:asmsyntax else set ft=pov endif endifendfun" Printcap and Termcapau BufNewFile,BufRead *printcap let b:ptcap_type = "print"|set ft=ptcapau BufNewFile,BufRead *termcap let b:ptcap_type = "term"|set ft=ptcap" PCCTS / ANTRL"au BufNewFile,BufRead *.g set ft=antrlau BufNewFile,BufRead *.g set ft=pccts" PPWizardau BufNewFile,BufRead *.it,*.ih set ft=ppwiz" Procmailau BufNewFile,BufRead .procmail,.procmailrc set ft=procmail" Progress or CWEBau BufNewFile,BufRead *.w call FTCheck_progress_cweb()function! FTCheck_progress_cweb() if exists("g:filetype_w") exe "set ft=" . g:filetype_w return endif if getline(1) =~ '&ANALYZE' || getline(3) =~ '&GLOBAL-DEFINE' set ft=progress else set ft=cweb endifendfun" Progress or assemblyau BufNewFile,BufRead *.i call FTCheck_progress_asm()function! FTCheck_progress_asm() if exists("g:filetype_i") exe "set ft=" . g:filetype_i return endif " This function checks for an assembly comment the first ten lines. " If not found, assume Progress. let lnum = 1 while lnum <= 10 let line = getline(lnum) if line =~ '^\s*;' || line =~ '^\*' call FTCheck_asm() return elseif line !~ '^\s*$' || line =~ '^/\*' " Not an empty line: Doesn't look like valid assembly code. " Or it looks like a Progress /* comment break endif let lnum = lnum + 1 endw set ft=progressendfun" Progress or Pascalau BufNewFile,BufRead *.p call FTCheck_progress_pascal()function! FTCheck_progress_pascal() if exists("g:filetype_p") exe "set ft=" . g:filetype_p return endif " This function checks for valid Pascal syntax in the first ten lines. " Look for either an opening comment or a program start. " If not found, assume Progress. let lnum = 1 while lnum <= 10 let line = getline(lnum) if line =~ '^\s*\(program\|procedure\|function\|const\|type\|var\)\>' \ || line =~ '^\s*{' set ft=pascal return elseif line !~ '^\s*$' || line =~ '^/\*' " Not an empty line: Doesn't look like valid Pascal code. " Or it looks like a Progress /* comment break endif let lnum = lnum + 1 endw set ft=progressendfun" Software Distributor Product Specification File (POSIX 1387.2-1995)au BufNewFile,BufRead *.psf set ft=psfau BufNewFile,BufRead INDEX,INFO \ if getline(1) =~ '^\s*\(distribution\|installed_software\|root\|bundle\|product\)\s*$' | \ set ft=psf | \ endif" Prologau BufNewFile,BufRead *.pdb set ft=prolog" Pythonau BufNewFile,BufRead *.py set ft=python" Radianceau BufNewFile,BufRead *.rad,*.mat set ft=radiance" Registry for MS-Windowsau BufNewFile,BufRead *.reg \ if getline(1) =~? '^REGEDIT[0-9]*\s*$' | set ft=registry | endif" Rexxau BufNewFile,BufRead *.rexx,*.rex set ft=rexx" Rexx or Rebolau BufNewFile,BufRead *.r \ if getline(1) =~ '^REBOL'|set ft=rebol|else|set ft=rexx|endif" Remindau BufNewFile,BufRead .reminders* set ft=remind" Robots.txtau BufNewFile,BufRead robots.txt set ft=robots" Rpcgenau BufNewFile,BufRead *.x set ft=rpcgen" RTFau BufNewFile,BufRead *.rtf set ft=rtf" Rubyau BufNewFile,BufRead *.rb set ft=ruby" S-lang (or shader language!)au BufNewFile,BufRead *.sl set ft=slang" Samba configau BufNewFile,BufRead smb.conf set ft=samba" SAS scriptau BufNewFile,BufRead *.sas set ft=sas" Satherau BufNewFile,BufRead *.sa set ft=sather" SDLau BufNewFile,BufRead *.sdl,*.pr set ft=sdl" sedau BufNewFile,BufRead *.sed set ft=sed" Sendmailau BufNewFile,BufRead sendmail.cf set ft=sm" SETLau BufNewFile,BufRead *.setl,*.stl set ft=setl" SGMLau BufNewFile,BufRead *.sgm,*.sgml \ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'linuxdoc'| \ set ft=sgmllnx | \ elseif getline(1) =~ '<!DOCTYPE.*DocBook' || getline(2) =~ '<!DOCTYPE.*DocBook' | \ let b:docbk_type="sgml" | \ set ft=docbk | \ else | \ set ft=sgml | \ endif" SGMLDECLau BufNewFile,BufRead *.decl,*.dcl,*.dec \ if getline(1).getline(2).getline(3) =~? '^<!SGML' | \ set ft=sgmldecl | \ endif" Shell scripts (sh, ksh, bash, bash2, csh); Allow .profile_foo etc.au BufNewFile,BufRead .bashrc*,bashrc,bash.bashrc,.bash_profile*,*.bash call SetFileTypeSH("bash")au BufNewFile,BufRead .kshrc*,*.ksh call SetFileTypeSH("ksh")au BufNewFile,BufRead /etc/profile,.profile*,*.sh,*.env call SetFileTypeSH(getline(1))au BufNewFile,BufRead .login*,.cshrc*,csh.cshrc,csh.login,csh.logout,.tcshrc*,*.csh,*.tcsh,.alias set ft=cshfun! SetFileTypeSH(name) if a:name =~ '\<ksh\>' let b:is_kornshell = 1 if exists("b:is_bash") unlet b:is_bash endif elseif exists("g:bash_is_sh") || a:name =~ '\<bash\>' || a:name =~ '\<bash2\>' let b:is_bash = 1 if exists("b:is_kornshell") unlet b:is_kornshell endif endif set ft=shendfun" Z-Shell scriptau BufNewFile,BufRead .zsh*,.zlog*,.zprofile,.zfbfmarks,.zcompdump*,zsh*,zlog* set ft=zsh" Schemeau BufNewFile,BufRead *.scm set ft=scheme" Simulaau BufNewFile,BufRead *.sim set ft=simula" SINDAau BufNewFile,BufRead *.sin,*.s85 set ft=sinda" SKILLau BufNewFile,BufRead *.il set ft=skill" SLRNau BufNewFile,BufRead .slrnrc set ft=slrnrcau BufNewFile,BufRead *.score set ft=slrnsc" Smalltalkau BufNewFile,BufRead *.st set ft=st" Smalltalk or Texau BufNewFile,BufRead *.cls \ if getline(1) =~ "^%" | \ set ft=tex | \ else | \ set ft=st | \ endif" SMIL or XMLau BufNewFile,BufRead *.smil \ if getline(1) =~ '<?\s*xml.*?>'| \ set ft=xml| \ else| \ set ft=smil| \ endif" SMIL or SNMP MIB fileau BufNewFile,BufRead *.smi if getline(1) =~ '\<smil\>'|set ft=smil|else|set ft=mib|endif" SMITHau BufNewFile,BufRead *.smt,*.smith set ft=smith" Snobol4au BufNewFile,BufRead *.sno set ft=snobol4" SNMP MIB filesau BufNewFile,BufRead *.mib set ft=mib" Snort Configurationau BufNewFile,BufRead *.hog,snort.conf,vision.conf,*.rules set ft=hog" Spec (Linux RPM)au BufNewFile,BufRead *.spec set ft=spec" Speedup (AspenTech plant simulator)au BufNewFile,BufRead *.speedup,*.spdata,*.spd set ft=spup" Spiceau BufNewFile,BufRead *.sp,*.spice set ft=spice" Squidau BufNewFile,BufRead squid.conf set ft=squid" SQL (all but the first one for Oracle Designer)au BufNewFile,BufRead *.sql,*.tyb,*.typ,*.tyc,*.pkb,*.pks set ft=sql" SQRau BufNewFile,BufRead *.sqr,*.sqi set ft=sqr" Stored Proceduresau BufNewFile,BufRead *.stp set ft=stp" Standard MLau BufNewFile,BufRead *.sml set ft=sml" Tadsau BufNewFile,BufRead *.t set ft=tads" Tagsau BufNewFile,BufRead tags set ft=tags" TAKau BufNewFile,BufRead *.tak set ft=tak" Tclau BufNewFile,BufRead *.tcl,*.tk,*.itcl,*.itk set ft=tcl" TealInfoau BufNewFile,BufRead *.tli set ft=tli" Telix Saltau BufNewFile,BufRead *.slt set ft=tsalt" TeXau BufNewFile,BufRead *.tex,*.latex,*.sty,*.dtx,*.ltx set ft=tex" Texinfoau BufNewFile,BufRead *.texinfo,*.texi,*.txi set ft=texinfo" TeX configurationau BufNewFile,BufRead texmf.cnf set ft=texmf" TSS - Geometryau BufNewFile,BufReadPost *.tssgm set ft=tssgm" TSS - Opticsau BufNewFile,BufReadPost *.tssop set ft=tssop" TSS - Command Line (temporary)au BufNewFile,BufReadPost *.tsscl set ft=tsscl" TF mud clientau BufNewFile,BufRead *.tf set ft=tf" Motif UIT/UIL filesau BufNewFile,BufRead *.uit,*.uil set ft=uil" UnrealScriptau BufNewFile,BufRead *.uc set ft=uc" Verilog HDLau BufNewFile,BufRead *.v set ft=verilog" VHDLau BufNewFile,BufRead *.hdl,*.vhd,*.vhdl,*.vhdl_[0-9]*,*.vbe,*.vst set ft=vhdl" Vim Help fileif has("mac") au BufNewFile,BufRead *[/:]vim*[/:]doc[/:]*.txt,*[/:]runtime[/:]doc[/:]*.txt set ft=helpelse au BufNewFile,BufRead */vim*/doc/*.txt,*/runtime/doc/*.txt set ft=helpendif" Vim scriptau BufNewFile,BufRead *vimrc*,*.vim,.exrc,_exrc set ft=vim" Viminfo fileau BufNewFile,BufRead .viminfo,_viminfo set ft=viminfo" Virata Config Script Fileau BufRead,BufNewFile *.hw,*.module,*.pkg set ft=virata" Visual Basic (also uses *.bas) or FORMau BufNewFile,BufRead *.frm call FTCheck_VB("form")" Vgrindefs fileau BufNewFile,BufRead vgrindefs set ft=vgrindefs" VRML V1.0cau BufNewFile,BufRead *.wrl set ft=vrml" Webmacroau BufNewFile,BufRead *.wm set ft=webmacro" Website MetaLanguageau BufNewFile,BufRead *.wml set ft=wml" Winbatchau BufNewFile,BufRead *.wbt set ft=winbatch" CVS commit fileau BufNewFile,BufRead cvs\d\+ set ft=cvs" WEB (*.web is also used for Winbatch: Guess, based on expecting "%" comment" lines in a WEB file).au BufNewFile,BufRead *.web if getline(1)[0].getline(2)[0].getline(3)[0].getline(4)[0].getline(5)[0] =~ "%" | set ft=web | else | set ft=winbatch | endif" Windows Scripting Host and Windows Script Componentau BufNewFile,BufRead *.ws[fc] set ft=wsh" X Pixmap (dynamically sets colors, use BufEnter to make it work better)au BufEnter *.xpm if getline(1) =~ "XPM2"|set ft=xpm2|else|set ft=xpm|endifau BufEnter *.xpm2 set ft=xpm2" XS Perl extension interface languageau BufEnter *.xs set ft=xs" X Keyboard Extensionsau BufNewFile,BufRead *X11*/xkb/* \ if expand("<afile>:t") !~ '\.' | \ set ft=xkb | \ endif" X resources fileau BufNewFile,BufRead .Xdefaults,.Xresources,Xresources*,*/app-defaults/*,*/Xresources/*,xdm-config set ft=xdefaults" Xmathau BufNewFile,BufRead *.msc,*.msf set ft=xmathau BufNewFile,BufRead *.ms if !FTCheck_nroff() | set ft=xmath | endif" vim: ts=8" XMLau BufNewFile,BufRead *.xsl set ft=xmlau BufNewFile,BufRead *.xml \ if getline(1) =~ '<!DOCTYPE.*DocBook' || getline(2) =~ '<!DOCTYPE.*DocBook' | \ let b:docbk_type="xml" | \ set ft=docbk | \ else | \ set ft=xml | \ endif" Yaccau BufNewFile,BufRead *.y set ft=yacc" Z80 assembler asz80au BufNewFile,BufRead *.z8a set ft=z8aaugroup END" Source the user-specified filetype fileif exists("myfiletypefile") && file_readable(expand(myfiletypefile)) execute "source " . myfiletypefileendif" Check for "*" after loading myfiletypefile, so that scripts.vim is only used" when there are no matching file name extensions.augroup filetype au BufNewFile,BufRead,StdinReadPost * if !did_filetype()|so <sfile>:p:h/scripts.vim|endif" Extra checks for when no filetype has been detected now" Printcap and Termcapau BufNewFile,BufRead *printcap* if !did_filetype()|let b:ptcap_type = "print"|set ft=ptcap|endifau BufNewFile,BufRead *termcap* if !did_filetype()|let b:ptcap_type = "term"|set ft=ptcap|endif" Crontabau BufNewFile,BufRead crontab.* if !did_filetype()|set ft=crontab|endif" GTK RCau BufNewFile,BufRead .gtkrc*,gtkrc* set ft=gtkrcaugroup END" If the GUI is already running, may still need to install the Syntax menu." Don't do it when the 'M' flag is included in 'guioptions'if has("gui_running") && !exists("did_install_syntax_menu") && &guioptions !~# "M" source <sfile>:p:h/menu.vimendif" Restore 'cpoptions'let &cpo = ft_cpo_saveunlet ft_cpo_saveendif " !exists("did_load_filetypes")" vim: ts=8
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -