" Try to determine filetype by examining actual file contents; read as little " as possible, and try to keep things simple and specific to what I typically " work on, and will expect to be syntax-highlighted. " Read first line let s:line = getline(1) " If it's not a shebang, we're done if stridx(s:line, '#!') != 0 finish endif " AWK if s:line =~# '\<[gm]\=awk\>' setfiletype awk " Perl 5 elseif s:line =~# '\' setfiletype perl " Perl 6 elseif s:line =~# '\' setfiletype perl6 " PHP elseif s:line =~# '\' setfiletype php " Python elseif s:line =~# '\' setfiletype python " Ruby elseif s:line =~# '\' setfiletype ruby " sed elseif s:line =~# '\' setfiletype sed " Bash elseif s:line =~# '\' let b:is_bash = 1 setfiletype sh " Korn shell elseif s:line =~# '\<\%(\ksh\|ksh93\|mksh\|pdksh\)\>' let b:is_kornshell = 1 setfiletype sh " POSIX/Bourne shell elseif s:line =~# '\' let b:is_posix = 1 setfiletype sh " TCL elseif s:line =~# '\<\%(tcl\|wish\)\>' setfiletype tcl endif