Current Path: > > usr > share > vim > vim80 > syntax
Operation : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 Software : Apache Server IP : 162.0.232.56 | Your IP: 216.73.216.111 Domains : 1034 Domain(s) Permission : [ 0755 ]
Name | Type | Size | Last Modified | Actions |
---|---|---|---|---|
2html.vim | File | 69175 bytes | August 02 2022 16:56:59. | |
README.txt | File | 1403 bytes | August 02 2022 16:56:59. | |
a2ps.vim | File | 2426 bytes | August 02 2022 16:56:59. | |
a65.vim | File | 6394 bytes | August 02 2022 16:56:59. | |
aap.vim | File | 5697 bytes | August 02 2022 16:56:59. | |
abap.vim | File | 9030 bytes | August 02 2022 16:56:59. | |
abaqus.vim | File | 1094 bytes | August 02 2022 16:56:59. | |
abc.vim | File | 1842 bytes | August 02 2022 16:56:59. | |
abel.vim | File | 5114 bytes | August 02 2022 16:56:59. | |
acedb.vim | File | 4871 bytes | August 02 2022 16:56:59. | |
ada.vim | File | 13050 bytes | August 02 2022 16:56:59. | |
aflex.vim | File | 4368 bytes | August 02 2022 16:56:59. | |
ahdl.vim | File | 2771 bytes | August 02 2022 16:56:59. | |
alsaconf.vim | File | 1546 bytes | August 02 2022 16:56:59. | |
amiga.vim | File | 2967 bytes | August 02 2022 16:56:59. | |
aml.vim | File | 24137 bytes | August 02 2022 16:56:59. | |
ampl.vim | File | 4108 bytes | August 02 2022 16:56:59. | |
ant.vim | File | 5816 bytes | August 02 2022 16:56:59. | |
antlr.vim | File | 1793 bytes | August 02 2022 16:56:59. | |
apache.vim | File | 14969 bytes | August 02 2022 16:56:59. | |
apachestyle.vim | File | 1417 bytes | August 02 2022 16:56:59. | |
aptconf.vim | File | 22228 bytes | August 02 2022 16:56:59. | |
arch.vim | File | 1149 bytes | August 02 2022 16:56:59. | |
arduino.vim | File | 2031 bytes | August 02 2022 16:56:59. | |
art.vim | File | 1297 bytes | August 02 2022 16:56:59. | |
asciidoc.vim | File | 10998 bytes | August 02 2022 16:56:59. | |
asm.vim | File | 4338 bytes | August 02 2022 16:56:59. | |
asm68k.vim | File | 14280 bytes | August 02 2022 16:56:59. | |
asmh8300.vim | File | 1994 bytes | August 02 2022 16:56:59. | |
asn.vim | File | 2578 bytes | August 02 2022 16:56:59. | |
aspperl.vim | File | 811 bytes | August 02 2022 16:56:59. | |
aspvbs.vim | File | 9099 bytes | August 02 2022 16:56:59. | |
asterisk.vim | File | 5524 bytes | August 02 2022 16:56:59. | |
asteriskvm.vim | File | 2332 bytes | August 02 2022 16:56:59. | |
atlas.vim | File | 2602 bytes | August 02 2022 16:56:59. | |
autodoc.vim | File | 3730 bytes | August 02 2022 16:56:59. | |
autohotkey.vim | File | 11861 bytes | August 02 2022 16:56:59. | |
autoit.vim | File | 48014 bytes | August 02 2022 16:56:59. | |
automake.vim | File | 3972 bytes | August 02 2022 16:56:59. | |
ave.vim | File | 1900 bytes | August 02 2022 16:56:59. | |
avra.vim | File | 2683 bytes | August 02 2022 16:56:59. | |
awk.vim | File | 7839 bytes | August 02 2022 16:56:59. | |
ayacc.vim | File | 2585 bytes | August 02 2022 16:56:59. | |
b.vim | File | 4902 bytes | August 02 2022 16:56:59. | |
baan.vim | File | 73595 bytes | August 02 2022 16:56:59. | |
basic.vim | File | 8128 bytes | August 02 2022 16:56:59. | |
bc.vim | File | 1791 bytes | August 02 2022 16:56:59. | |
bdf.vim | File | 3841 bytes | August 02 2022 16:56:59. | |
bib.vim | File | 6004 bytes | August 02 2022 16:56:59. | |
bindzone.vim | File | 4826 bytes | August 02 2022 16:56:59. | |
blank.vim | File | 794 bytes | August 02 2022 16:56:59. | |
bst.vim | File | 2825 bytes | August 02 2022 16:56:59. | |
btm.vim | File | 9285 bytes | August 02 2022 16:56:59. | |
bzl.vim | File | 374 bytes | August 02 2022 16:56:59. | |
bzr.vim | File | 1560 bytes | August 02 2022 16:56:59. | |
c.vim | File | 26366 bytes | August 02 2022 16:56:59. | |
cabal.vim | File | 4310 bytes | August 02 2022 16:56:59. | |
calendar.vim | File | 5042 bytes | August 02 2022 16:56:59. | |
catalog.vim | File | 921 bytes | August 02 2022 16:56:59. | |
cdl.vim | File | 3092 bytes | August 02 2022 16:56:59. | |
cdrdaoconf.vim | File | 3647 bytes | August 02 2022 16:56:59. | |
cdrtoc.vim | File | 22756 bytes | August 02 2022 16:56:59. | |
cf.vim | File | 18644 bytes | August 02 2022 16:56:59. | |
cfg.vim | File | 1351 bytes | August 02 2022 16:56:59. | |
ch.vim | File | 922 bytes | August 02 2022 16:56:59. | |
chaiscript.vim | File | 2887 bytes | August 02 2022 16:56:59. | |
change.vim | File | 901 bytes | August 02 2022 16:56:59. | |
changelog.vim | File | 2097 bytes | August 02 2022 16:56:59. | |
chaskell.vim | File | 333 bytes | August 02 2022 16:56:59. | |
cheetah.vim | File | 1752 bytes | August 02 2022 16:56:59. | |
chicken.vim | File | 2618 bytes | August 02 2022 16:56:59. | |
chill.vim | File | 8024 bytes | August 02 2022 16:56:59. | |
chordpro.vim | File | 2521 bytes | August 02 2022 16:56:59. | |
cl.vim | File | 3905 bytes | August 02 2022 16:56:59. | |
clean.vim | File | 3151 bytes | August 02 2022 16:56:59. | |
clipper.vim | File | 5576 bytes | August 02 2022 16:56:59. | |
clojure.vim | File | 41933 bytes | August 02 2022 16:56:59. | |
cmake.vim | File | 42148 bytes | August 02 2022 16:56:59. | |
cmod.vim | File | 6271 bytes | August 02 2022 16:56:59. | |
cmusrc.vim | File | 12921 bytes | August 02 2022 16:56:59. | |
cobol.vim | File | 9920 bytes | August 02 2022 16:56:59. | |
coco.vim | File | 1300 bytes | August 02 2022 16:56:59. | |
colortest.vim | File | 3201 bytes | August 02 2022 16:56:59. | |
conaryrecipe.vim | File | 8036 bytes | August 02 2022 16:56:59. | |
conf.vim | File | 799 bytes | August 02 2022 16:56:59. | |
config.vim | File | 2074 bytes | August 02 2022 16:56:59. | |
context.vim | File | 6199 bytes | August 02 2022 16:56:59. | |
cpp.vim | File | 2869 bytes | August 02 2022 16:56:59. | |
crm.vim | File | 1197 bytes | August 02 2022 16:56:59. | |
crontab.vim | File | 2215 bytes | August 02 2022 16:56:59. | |
cs.vim | File | 6090 bytes | August 02 2022 16:56:59. | |
csc.vim | File | 8449 bytes | August 02 2022 16:56:59. | |
csdl.vim | File | 23755 bytes | August 02 2022 16:56:59. | |
csh.vim | File | 6459 bytes | August 02 2022 16:56:59. | |
csp.vim | File | 7152 bytes | August 02 2022 16:56:59. | |
css.vim | File | 31941 bytes | August 02 2022 16:56:59. | |
cterm.vim | File | 6406 bytes | August 02 2022 16:56:59. | |
ctrlh.vim | File | 688 bytes | August 02 2022 16:56:59. | |
cucumber.vim | File | 31887 bytes | August 02 2022 16:56:59. | |
cuda.vim | File | 2691 bytes | August 02 2022 16:56:59. | |
cupl.vim | File | 3873 bytes | August 02 2022 16:56:59. | |
cuplsim.vim | File | 1916 bytes | August 02 2022 16:56:59. | |
cvs.vim | File | 929 bytes | August 02 2022 16:56:59. | |
cvsrc.vim | File | 1254 bytes | August 02 2022 16:56:59. | |
cweb.vim | File | 2892 bytes | August 02 2022 16:56:59. | |
cynlib.vim | File | 2548 bytes | August 02 2022 16:56:59. | |
cynpp.vim | File | 1263 bytes | August 02 2022 16:56:59. | |
d.vim | File | 28631 bytes | August 02 2022 16:56:59. | |
datascript.vim | File | 3807 bytes | August 02 2022 16:56:59. | |
dcd.vim | File | 1803 bytes | August 02 2022 16:56:59. | |
dcl.vim | File | 6343 bytes | August 02 2022 16:56:59. | |
debchangelog.vim | File | 2592 bytes | August 02 2022 16:56:59. | |
debcontrol.vim | File | 8492 bytes | August 02 2022 16:56:59. | |
debsources.vim | File | 2088 bytes | August 02 2022 16:56:59. | |
def.vim | File | 1097 bytes | August 02 2022 16:56:59. | |
denyhosts.vim | File | 7365 bytes | August 02 2022 16:56:59. | |
desc.vim | File | 3077 bytes | August 02 2022 16:56:59. | |
desktop.vim | File | 4144 bytes | August 02 2022 16:56:59. | |
dictconf.vim | File | 3118 bytes | August 02 2022 16:56:59. | |
dictdconf.vim | File | 6465 bytes | August 02 2022 16:56:59. | |
diff.vim | File | 17282 bytes | August 02 2022 16:56:59. | |
dircolors.vim | File | 6946 bytes | August 02 2022 16:56:59. | |
dirpager.vim | File | 1787 bytes | August 02 2022 16:56:59. | |
diva.vim | File | 4736 bytes | August 02 2022 16:56:59. | |
django.vim | File | 3934 bytes | August 02 2022 16:56:59. | |
dns.vim | File | 132 bytes | August 02 2022 16:56:59. | |
dnsmasq.vim | File | 10067 bytes | August 02 2022 16:56:59. | |
docbk.vim | File | 10321 bytes | August 02 2022 16:56:59. | |
docbksgml.vim | File | 193 bytes | August 02 2022 16:56:59. | |
docbkxml.vim | File | 191 bytes | August 02 2022 16:56:59. | |
dockerfile.vim | File | 673 bytes | August 02 2022 16:56:59. | |
dosbatch.vim | File | 6260 bytes | August 02 2022 16:56:59. | |
dosini.vim | File | 1138 bytes | August 02 2022 16:56:59. | |
dot.vim | File | 3018 bytes | August 02 2022 16:56:59. | |
doxygen.vim | File | 38642 bytes | August 02 2022 16:56:59. | |
dracula.vim | File | 2668 bytes | August 02 2022 16:56:59. | |
dsl.vim | File | 1312 bytes | August 02 2022 16:56:59. | |
dtd.vim | File | 4934 bytes | August 02 2022 16:56:59. | |
dtml.vim | File | 16613 bytes | August 02 2022 16:56:59. | |
dtrace.vim | File | 6442 bytes | August 02 2022 16:56:59. | |
dts.vim | File | 1210 bytes | August 02 2022 16:56:59. | |
dylan.vim | File | 3414 bytes | August 02 2022 16:56:59. | |
dylanintr.vim | File | 1078 bytes | August 02 2022 16:56:59. | |
dylanlid.vim | File | 664 bytes | August 02 2022 16:56:59. | |
ecd.vim | File | 1229 bytes | August 02 2022 16:56:59. | |
edif.vim | File | 1278 bytes | August 02 2022 16:56:59. | |
eiffel.vim | File | 6926 bytes | August 02 2022 16:56:59. | |
elf.vim | File | 2348 bytes | August 02 2022 16:56:59. | |
elinks.vim | File | 10494 bytes | August 02 2022 16:56:59. | |
elmfilt.vim | File | 2892 bytes | August 02 2022 16:56:59. | |
erlang.vim | File | 10911 bytes | August 02 2022 16:56:59. | |
eruby.vim | File | 2908 bytes | August 02 2022 16:56:59. | |
esmtprc.vim | File | 938 bytes | August 02 2022 16:56:59. | |
esqlc.vim | File | 2094 bytes | August 02 2022 16:56:59. | |
esterel.vim | File | 3053 bytes | August 02 2022 16:56:59. | |
eterm.vim | File | 19172 bytes | August 02 2022 16:56:59. | |
euphoria3.vim | File | 6103 bytes | August 02 2022 16:56:59. | |
euphoria4.vim | File | 14537 bytes | August 02 2022 16:56:59. | |
eviews.vim | File | 5004 bytes | August 02 2022 16:56:59. | |
exim.vim | File | 18085 bytes | August 02 2022 16:56:59. | |
expect.vim | File | 3734 bytes | August 02 2022 16:56:59. | |
exports.vim | File | 1747 bytes | August 02 2022 16:56:59. | |
falcon.vim | File | 12013 bytes | August 02 2022 16:56:59. | |
fan.vim | File | 5445 bytes | August 02 2022 16:56:59. | |
fasm.vim | File | 8757 bytes | August 02 2022 16:56:59. | |
fdcc.vim | File | 5648 bytes | August 02 2022 16:56:59. | |
fetchmail.vim | File | 3308 bytes | August 02 2022 16:56:59. | |
fgl.vim | File | 7274 bytes | August 02 2022 16:56:59. | |
flexwiki.vim | File | 5435 bytes | August 02 2022 16:56:59. | |
focexec.vim | File | 3525 bytes | August 02 2022 16:56:59. | |
form.vim | File | 6385 bytes | August 02 2022 16:56:59. | |
forth.vim | File | 10669 bytes | August 02 2022 16:56:59. | |
fortran.vim | File | 32566 bytes | August 02 2022 16:56:59. | |
foxpro.vim | File | 32856 bytes | August 02 2022 16:56:59. | |
framescript.vim | File | 11679 bytes | August 02 2022 16:56:59. | |
freebasic.vim | File | 10512 bytes | August 02 2022 16:56:59. | |
fstab.vim | File | 15888 bytes | August 02 2022 16:56:59. | |
fvwm.vim | File | 25026 bytes | August 02 2022 16:56:59. | |
fvwm2m4.vim | File | 711 bytes | August 02 2022 16:56:59. | |
gdb.vim | File | 4366 bytes | August 02 2022 16:56:59. | |
gdmo.vim | File | 3299 bytes | August 02 2022 16:56:59. | |
gedcom.vim | File | 2275 bytes | August 02 2022 16:56:59. | |
git.vim | File | 4156 bytes | August 02 2022 16:56:59. | |
gitcommit.vim | File | 4867 bytes | August 02 2022 16:56:59. | |
gitconfig.vim | File | 1616 bytes | August 02 2022 16:56:59. | |
gitolite.vim | File | 4454 bytes | August 02 2022 16:56:59. | |
gitrebase.vim | File | 1852 bytes | August 02 2022 16:56:59. | |
gitsendemail.vim | File | 580 bytes | August 02 2022 16:56:59. | |
gkrellmrc.vim | File | 4116 bytes | August 02 2022 16:56:59. | |
gnash.vim | File | 3462 bytes | August 02 2022 16:56:59. | |
gnuplot.vim | File | 23663 bytes | August 02 2022 16:56:59. | |
go.vim | File | 7904 bytes | August 02 2022 16:56:59. | |
godoc.vim | File | 352 bytes | August 02 2022 16:56:59. | |
gp.vim | File | 2965 bytes | August 02 2022 16:56:59. | |
gpg.vim | File | 5591 bytes | August 02 2022 16:56:59. | |
gprof.vim | File | 2117 bytes | August 02 2022 16:56:59. | |
grads.vim | File | 1742 bytes | August 02 2022 16:56:59. | |
gretl.vim | File | 3730 bytes | August 02 2022 16:56:59. | |
groff.vim | File | 292 bytes | August 02 2022 16:56:59. | |
groovy.vim | File | 22290 bytes | August 02 2022 16:56:59. | |
group.vim | File | 1719 bytes | August 02 2022 16:56:59. | |
grub.vim | File | 3882 bytes | August 02 2022 16:56:59. | |
gsp.vim | File | 2031 bytes | August 02 2022 16:56:59. | |
gtkrc.vim | File | 9318 bytes | August 02 2022 16:56:59. | |
haml.vim | File | 7067 bytes | August 02 2022 16:56:59. | |
hamster.vim | File | 13840 bytes | August 02 2022 16:56:59. | |
haskell.vim | File | 8907 bytes | August 02 2022 16:56:59. | |
haste.vim | File | 4994 bytes | August 02 2022 16:56:59. | |
hastepreproc.vim | File | 1422 bytes | August 02 2022 16:56:59. | |
hb.vim | File | 3158 bytes | August 02 2022 16:56:59. | |
help.vim | File | 8348 bytes | August 02 2022 16:56:59. | |
hercules.vim | File | 5720 bytes | August 02 2022 16:56:59. | |
hex.vim | File | 4011 bytes | August 02 2022 16:56:59. | |
hgcommit.vim | File | 1114 bytes | August 02 2022 16:56:59. | |
hitest.vim | File | 3294 bytes | August 02 2022 16:56:59. | |
hog.vim | File | 10672 bytes | August 02 2022 16:56:59. | |
hostconf.vim | File | 3870 bytes | August 02 2022 16:56:59. | |
hostsaccess.vim | File | 549 bytes | August 02 2022 16:56:59. | |
html.vim | File | 17240 bytes | August 02 2022 16:56:59. | |
htmlcheetah.vim | File | 488 bytes | August 02 2022 16:56:59. | |
htmldjango.vim | File | 1011 bytes | August 02 2022 16:56:59. | |
htmlm4.vim | File | 670 bytes | August 02 2022 16:56:59. | |
htmlos.vim | File | 8313 bytes | August 02 2022 16:56:59. | |
ia64.vim | File | 10547 bytes | August 02 2022 16:56:59. | |
ibasic.vim | File | 7036 bytes | August 02 2022 16:56:59. | |
icemenu.vim | File | 824 bytes | August 02 2022 16:56:59. | |
icon.vim | File | 6976 bytes | August 02 2022 16:56:59. | |
idl.vim | File | 19901 bytes | August 02 2022 16:56:59. | |
idlang.vim | File | 13462 bytes | August 02 2022 16:56:59. | |
indent.vim | File | 7171 bytes | August 02 2022 16:56:59. | |
inform.vim | File | 19483 bytes | August 02 2022 16:56:59. | |
initex.vim | File | 19224 bytes | August 02 2022 16:56:59. | |
initng.vim | File | 3398 bytes | August 02 2022 16:56:59. | |
inittab.vim | File | 2619 bytes | August 02 2022 16:56:59. | |
ipfilter.vim | File | 1622 bytes | August 02 2022 16:56:59. | |
ishd.vim | File | 27057 bytes | August 02 2022 16:56:59. | |
iss.vim | File | 4988 bytes | August 02 2022 16:56:59. | |
ist.vim | File | 2000 bytes | August 02 2022 16:56:59. | |
j.vim | File | 9375 bytes | August 02 2022 16:56:59. | |
jal.vim | File | 8963 bytes | August 02 2022 16:56:59. | |
jam.vim | File | 26711 bytes | August 02 2022 16:56:59. | |
jargon.vim | File | 611 bytes | August 02 2022 16:56:59. | |
java.vim | File | 17979 bytes | August 02 2022 16:56:59. | |
javacc.vim | File | 2256 bytes | August 02 2022 16:56:59. | |
javascript.vim | File | 5084 bytes | August 02 2022 16:56:59. | |
jess.vim | File | 6230 bytes | August 02 2022 16:56:59. | |
jgraph.vim | File | 1212 bytes | August 02 2022 16:56:59. | |
jovial.vim | File | 4107 bytes | August 02 2022 16:56:59. | |
jproperties.vim | File | 5496 bytes | August 02 2022 16:56:59. | |
json.vim | File | 6018 bytes | August 02 2022 16:56:59. | |
jsp.vim | File | 2678 bytes | August 02 2022 16:56:59. | |
kconfig.vim | File | 36304 bytes | August 02 2022 16:56:59. | |
kivy.vim | File | 986 bytes | August 02 2022 16:56:59. | |
kix.vim | File | 6329 bytes | August 02 2022 16:56:59. | |
kscript.vim | File | 1985 bytes | August 02 2022 16:56:59. | |
kwt.vim | File | 2454 bytes | August 02 2022 16:56:59. | |
lace.vim | File | 4075 bytes | August 02 2022 16:56:59. | |
latte.vim | File | 3511 bytes | August 02 2022 16:56:59. | |
ld.vim | File | 2902 bytes | August 02 2022 16:56:59. | |
ldapconf.vim | File | 13302 bytes | August 02 2022 16:56:59. | |
ldif.vim | File | 1014 bytes | August 02 2022 16:56:59. | |
less.vim | File | 4230 bytes | August 02 2022 16:56:59. | |
lex.vim | File | 6728 bytes | August 02 2022 16:56:59. | |
lftp.vim | File | 7471 bytes | August 02 2022 16:56:59. | |
lhaskell.vim | File | 4435 bytes | August 02 2022 16:56:59. | |
libao.vim | File | 636 bytes | August 02 2022 16:56:59. | |
lifelines.vim | File | 6640 bytes | August 02 2022 16:56:59. | |
lilo.vim | File | 10427 bytes | August 02 2022 16:56:59. | |
limits.vim | File | 1317 bytes | August 02 2022 16:56:59. | |
liquid.vim | File | 6184 bytes | August 02 2022 16:56:59. | |
lisp.vim | File | 35810 bytes | August 02 2022 16:56:59. | |
lite.vim | File | 4845 bytes | August 02 2022 16:56:59. | |
litestep.vim | File | 6676 bytes | August 02 2022 16:56:59. | |
loginaccess.vim | File | 4197 bytes | August 02 2022 16:56:59. | |
logindefs.vim | File | 7537 bytes | August 02 2022 16:56:59. | |
logtalk.vim | File | 16039 bytes | August 02 2022 16:56:59. | |
lotos.vim | File | 2361 bytes | August 02 2022 16:56:59. | |
lout.vim | File | 4325 bytes | August 02 2022 16:56:59. | |
lpc.vim | File | 23138 bytes | August 02 2022 16:56:59. | |
lprolog.vim | File | 3979 bytes | August 02 2022 16:56:59. | |
lscript.vim | File | 12099 bytes | August 02 2022 16:56:59. | |
lsl.vim | File | 15800 bytes | August 02 2022 16:56:59. | |
lss.vim | File | 4870 bytes | August 02 2022 16:56:59. | |
lua.vim | File | 14052 bytes | August 02 2022 16:56:59. | |
lynx.vim | File | 6579 bytes | August 02 2022 16:56:59. | |
m4.vim | File | 2693 bytes | August 02 2022 16:56:59. | |
mail.vim | File | 6069 bytes | August 02 2022 16:56:59. | |
mailaliases.vim | File | 2767 bytes | August 02 2022 16:56:59. | |
mailcap.vim | File | 1135 bytes | August 02 2022 16:56:59. | |
make.vim | File | 6197 bytes | August 02 2022 16:56:59. | |
mallard.vim | File | 1726 bytes | August 02 2022 16:56:59. | |
man.vim | File | 1590 bytes | August 02 2022 16:56:59. | |
manconf.vim | File | 4344 bytes | August 02 2022 16:56:59. | |
manual.vim | File | 909 bytes | August 02 2022 16:56:59. | |
maple.vim | File | 28529 bytes | August 02 2022 16:56:59. | |
markdown.vim | File | 8052 bytes | August 02 2022 16:56:59. | |
masm.vim | File | 17225 bytes | August 02 2022 16:56:59. | |
mason.vim | File | 3818 bytes | August 02 2022 16:56:59. | |
master.vim | File | 1022 bytes | August 02 2022 16:56:59. | |
matlab.vim | File | 4133 bytes | August 02 2022 16:56:59. | |
maxima.vim | File | 18802 bytes | August 02 2022 16:56:59. | |
mel.vim | File | 3406 bytes | August 02 2022 16:56:59. | |
messages.vim | File | 2653 bytes | August 02 2022 16:56:59. | |
mf.vim | File | 15423 bytes | August 02 2022 16:56:59. | |
mgl.vim | File | 3724 bytes | August 02 2022 16:56:59. | |
mgp.vim | File | 2000 bytes | August 02 2022 16:56:59. | |
mib.vim | File | 2696 bytes | August 02 2022 16:56:59. | |
mix.vim | File | 2942 bytes | August 02 2022 16:56:59. | |
mma.vim | File | 11799 bytes | August 02 2022 16:56:59. | |
mmix.vim | File | 4968 bytes | August 02 2022 16:56:59. | |
mmp.vim | File | 1486 bytes | August 02 2022 16:56:59. | |
modconf.vim | File | 1419 bytes | August 02 2022 16:56:59. | |
model.vim | File | 1469 bytes | August 02 2022 16:56:59. | |
modsim3.vim | File | 3623 bytes | August 02 2022 16:56:59. | |
modula2.vim | File | 3225 bytes | August 02 2022 16:56:59. | |
modula3.vim | File | 2012 bytes | August 02 2022 16:56:59. | |
monk.vim | File | 10219 bytes | August 02 2022 16:56:59. | |
moo.vim | File | 9234 bytes | August 02 2022 16:56:59. | |
mp.vim | File | 44530 bytes | August 02 2022 16:56:59. | |
mplayerconf.vim | File | 7487 bytes | August 02 2022 16:56:59. | |
mrxvtrc.vim | File | 9603 bytes | August 02 2022 16:56:59. | |
msidl.vim | File | 3464 bytes | August 02 2022 16:56:59. | |
msmessages.vim | File | 6318 bytes | August 02 2022 16:56:59. | |
msql.vim | File | 2390 bytes | August 02 2022 16:56:59. | |
mupad.vim | File | 15476 bytes | August 02 2022 16:56:59. | |
murphi.vim | File | 4619 bytes | August 02 2022 16:56:59. | |
mush.vim | File | 13187 bytes | August 02 2022 16:56:59. | |
muttrc.vim | File | 64055 bytes | August 02 2022 16:56:59. | |
mysql.vim | File | 17609 bytes | August 02 2022 16:56:59. | |
n1ql.vim | File | 12899 bytes | August 02 2022 16:56:59. | |
named.vim | File | 9991 bytes | August 02 2022 16:56:59. | |
nanorc.vim | File | 10620 bytes | August 02 2022 16:56:59. | |
nasm.vim | File | 26285 bytes | August 02 2022 16:56:59. | |
nastran.vim | File | 8504 bytes | August 02 2022 16:56:59. | |
natural.vim | File | 6977 bytes | August 02 2022 16:56:59. | |
ncf.vim | File | 13416 bytes | August 02 2022 16:56:59. | |
neomuttrc.vim | File | 79227 bytes | August 02 2022 16:56:59. | |
netrc.vim | File | 1934 bytes | August 02 2022 16:56:59. | |
netrw.vim | File | 7219 bytes | August 02 2022 16:56:59. | |
ninja.vim | File | 2889 bytes | August 02 2022 16:56:59. | |
nosyntax.vim | File | 755 bytes | August 02 2022 16:56:59. | |
nqc.vim | File | 14068 bytes | August 02 2022 16:56:59. | |
nroff.vim | File | 7775 bytes | August 02 2022 16:56:59. | |
nsis.vim | File | 33906 bytes | August 02 2022 16:56:59. | |
obj.vim | File | 2786 bytes | August 02 2022 16:56:59. | |
objc.vim | File | 41720 bytes | August 02 2022 16:56:59. | |
objcpp.vim | File | 600 bytes | August 02 2022 16:56:59. | |
ocaml.vim | File | 13541 bytes | August 02 2022 16:56:59. | |
occam.vim | File | 4316 bytes | August 02 2022 16:56:59. | |
omnimark.vim | File | 6377 bytes | August 02 2022 16:56:59. | |
openroad.vim | File | 13979 bytes | August 02 2022 16:56:59. | |
opl.vim | File | 4128 bytes | August 02 2022 16:56:59. | |
ora.vim | File | 27141 bytes | August 02 2022 16:56:59. | |
pamconf.vim | File | 5546 bytes | August 02 2022 16:56:59. | |
papp.vim | File | 3789 bytes | August 02 2022 16:56:59. | |
pascal.vim | File | 15008 bytes | August 02 2022 16:56:59. | |
passwd.vim | File | 2443 bytes | August 02 2022 16:56:59. | |
pcap.vim | File | 1496 bytes | August 02 2022 16:56:59. | |
pccts.vim | File | 4093 bytes | August 02 2022 16:56:59. | |
pdf.vim | File | 3539 bytes | August 02 2022 16:56:59. | |
perl.vim | File | 38470 bytes | August 02 2022 16:56:59. | |
perl6.vim | File | 74127 bytes | August 02 2022 16:56:59. | |
pf.vim | File | 5294 bytes | August 02 2022 16:56:59. | |
pfmain.vim | File | 92737 bytes | August 02 2022 16:56:59. | |
php.vim | File | 80429 bytes | August 02 2022 16:56:59. | |
phtml.vim | File | 151 bytes | August 02 2022 16:56:59. | |
pic.vim | File | 3333 bytes | August 02 2022 16:56:59. | |
pike.vim | File | 21807 bytes | August 02 2022 16:56:59. | |
pilrc.vim | File | 5311 bytes | August 02 2022 16:56:59. | |
pine.vim | File | 15411 bytes | August 02 2022 16:56:59. | |
pinfo.vim | File | 5296 bytes | August 02 2022 16:56:59. | |
plaintex.vim | File | 10301 bytes | August 02 2022 16:56:59. | |
pli.vim | File | 13222 bytes | August 02 2022 16:56:59. | |
plm.vim | File | 5361 bytes | August 02 2022 16:56:59. | |
plp.vim | File | 1267 bytes | August 02 2022 16:56:59. | |
plsql.vim | File | 12918 bytes | August 02 2022 16:56:59. | |
po.vim | File | 6393 bytes | August 02 2022 16:56:59. | |
pod.vim | File | 7283 bytes | August 02 2022 16:56:59. | |
postscr.vim | File | 46133 bytes | August 02 2022 16:56:59. | |
pov.vim | File | 9057 bytes | August 02 2022 16:56:59. | |
povini.vim | File | 3488 bytes | August 02 2022 16:56:59. | |
ppd.vim | File | 868 bytes | August 02 2022 16:56:59. | |
ppwiz.vim | File | 2780 bytes | August 02 2022 16:56:59. | |
prescribe.vim | File | 2383 bytes | August 02 2022 16:56:59. | |
privoxy.vim | File | 3579 bytes | August 02 2022 16:56:59. | |
procmail.vim | File | 2019 bytes | August 02 2022 16:56:59. | |
progress.vim | File | 31748 bytes | August 02 2022 16:56:59. | |
prolog.vim | File | 4360 bytes | August 02 2022 16:56:59. | |
promela.vim | File | 1728 bytes | August 02 2022 16:56:59. | |
proto.vim | File | 2933 bytes | August 02 2022 16:56:59. | |
protocols.vim | File | 1429 bytes | August 02 2022 16:56:59. | |
psf.vim | File | 4290 bytes | August 02 2022 16:56:59. | |
ptcap.vim | File | 4128 bytes | August 02 2022 16:56:59. | |
purifylog.vim | File | 3357 bytes | August 02 2022 16:56:59. | |
pyrex.vim | File | 1663 bytes | August 02 2022 16:56:59. | |
python.vim | File | 14280 bytes | August 02 2022 16:56:59. | |
qf.vim | File | 596 bytes | August 02 2022 16:56:59. | |
quake.vim | File | 8554 bytes | August 02 2022 16:56:59. | |
r.vim | File | 14316 bytes | August 02 2022 16:56:59. | |
racc.vim | File | 5619 bytes | August 02 2022 16:56:59. | |
radiance.vim | File | 7155 bytes | August 02 2022 16:56:59. | |
ratpoison.vim | File | 17221 bytes | August 02 2022 16:56:59. | |
rc.vim | File | 10217 bytes | August 02 2022 16:56:59. | |
rcs.vim | File | 2133 bytes | August 02 2022 16:56:59. | |
rcslog.vim | File | 557 bytes | August 02 2022 16:56:59. | |
readline.vim | File | 16999 bytes | August 02 2022 16:56:59. | |
rebol.vim | File | 7167 bytes | August 02 2022 16:56:59. | |
redif.vim | File | 87942 bytes | August 02 2022 16:56:59. | |
registry.vim | File | 3355 bytes | August 02 2022 16:56:59. | |
remind.vim | File | 2713 bytes | August 02 2022 16:56:59. | |
resolv.vim | File | 3019 bytes | August 02 2022 16:56:59. | |
reva.vim | File | 7581 bytes | August 02 2022 16:56:59. | |
rexx.vim | File | 15331 bytes | August 02 2022 16:56:59. | |
rhelp.vim | File | 12134 bytes | August 02 2022 16:56:59. | |
rib.vim | File | 2192 bytes | August 02 2022 16:56:59. | |
rmd.vim | File | 4406 bytes | August 02 2022 16:56:59. | |
rnc.vim | File | 2263 bytes | August 02 2022 16:56:59. | |
rng.vim | File | 817 bytes | August 02 2022 16:56:59. | |
rnoweb.vim | File | 1908 bytes | August 02 2022 16:56:59. | |
robots.vim | File | 1529 bytes | August 02 2022 16:56:59. | |
rpcgen.vim | File | 1666 bytes | August 02 2022 16:56:59. | |
rpl.vim | File | 25699 bytes | August 02 2022 16:56:59. | |
rrst.vim | File | 1305 bytes | August 02 2022 16:56:59. | |
rst.vim | File | 8834 bytes | August 02 2022 16:56:59. | |
rtf.vim | File | 2330 bytes | August 02 2022 16:56:59. | |
ruby.vim | File | 40643 bytes | August 02 2022 16:56:59. | |
rust.vim | File | 16612 bytes | August 02 2022 16:56:59. | |
samba.vim | File | 6131 bytes | August 02 2022 16:56:59. | |
sas.vim | File | 34087 bytes | August 02 2022 16:56:59. | |
sass.vim | File | 6323 bytes | August 02 2022 16:56:59. | |
sather.vim | File | 3490 bytes | August 02 2022 16:56:59. | |
sbt.vim | File | 880 bytes | August 02 2022 16:56:59. | |
scala.vim | File | 11307 bytes | August 02 2022 16:56:59. | |
scheme.vim | File | 19330 bytes | August 02 2022 16:56:59. | |
scilab.vim | File | 3210 bytes | August 02 2022 16:56:59. | |
screen.vim | File | 9104 bytes | August 02 2022 16:56:59. | |
scss.vim | File | 409 bytes | August 02 2022 16:56:59. | |
sd.vim | File | 2223 bytes | August 02 2022 16:56:59. | |
sdc.vim | File | 1391 bytes | August 02 2022 16:56:59. | |
sdl.vim | File | 6563 bytes | August 02 2022 16:56:59. | |
sed.vim | File | 5033 bytes | August 02 2022 16:56:59. | |
sendpr.vim | File | 905 bytes | August 02 2022 16:56:59. | |
sensors.vim | File | 1513 bytes | August 02 2022 16:56:59. | |
services.vim | File | 1823 bytes | August 02 2022 16:56:59. | |
setserial.vim | File | 5229 bytes | August 02 2022 16:56:59. | |
sgml.vim | File | 8866 bytes | August 02 2022 16:56:59. | |
sgmldecl.vim | File | 2041 bytes | August 02 2022 16:56:59. | |
sgmllnx.vim | File | 1851 bytes | August 02 2022 16:56:59. | |
sh.vim | File | 40497 bytes | August 02 2022 16:56:59. | |
sicad.vim | File | 18475 bytes | August 02 2022 16:56:59. | |
sieve.vim | File | 1671 bytes | August 02 2022 16:56:59. | |
simula.vim | File | 3371 bytes | August 02 2022 16:56:59. | |
sinda.vim | File | 3666 bytes | August 02 2022 16:56:59. | |
sindacmp.vim | File | 1274 bytes | August 02 2022 16:56:59. | |
sindaout.vim | File | 1961 bytes | August 02 2022 16:56:59. | |
sisu.vim | File | 22180 bytes | August 02 2022 16:56:59. | |
skill.vim | File | 25769 bytes | August 02 2022 16:56:59. | |
sl.vim | File | 4084 bytes | August 02 2022 16:56:59. | |
slang.vim | File | 3302 bytes | August 02 2022 16:56:59. | |
slice.vim | File | 2928 bytes | August 02 2022 16:56:59. | |
slpconf.vim | File | 11791 bytes | August 02 2022 16:56:59. | |
slpreg.vim | File | 5346 bytes | August 02 2022 16:56:59. | |
slpspi.vim | File | 1181 bytes | August 02 2022 16:56:59. | |
slrnrc.vim | File | 12811 bytes | August 02 2022 16:56:59. | |
slrnsc.vim | File | 3098 bytes | August 02 2022 16:56:59. | |
sm.vim | File | 2850 bytes | August 02 2022 16:56:59. | |
smarty.vim | File | 2883 bytes | August 02 2022 16:56:59. | |
smcl.vim | File | 12043 bytes | August 02 2022 16:56:59. | |
smil.vim | File | 5616 bytes | August 02 2022 16:56:59. | |
smith.vim | File | 793 bytes | August 02 2022 16:56:59. | |
sml.vim | File | 9328 bytes | August 02 2022 16:56:59. | |
snnsnet.vim | File | 2482 bytes | August 02 2022 16:56:59. | |
snnspat.vim | File | 2228 bytes | August 02 2022 16:56:59. | |
snnsres.vim | File | 1933 bytes | August 02 2022 16:56:59. | |
snobol4.vim | File | 5334 bytes | August 02 2022 16:56:59. | |
spec.vim | File | 12628 bytes | August 02 2022 16:56:59. | |
specman.vim | File | 7345 bytes | August 02 2022 16:56:59. | |
spice.vim | File | 2243 bytes | August 02 2022 16:56:59. | |
splint.vim | File | 15786 bytes | August 02 2022 16:56:59. | |
spup.vim | File | 13926 bytes | August 02 2022 16:56:59. | |
spyce.vim | File | 4455 bytes | August 02 2022 16:56:59. | |
sql.vim | File | 1120 bytes | August 02 2022 16:56:59. | |
sqlanywhere.vim | File | 41929 bytes | August 02 2022 16:56:59. | |
sqlforms.vim | File | 6734 bytes | August 02 2022 16:56:59. | |
sqlhana.vim | File | 11027 bytes | August 02 2022 16:56:59. | |
sqlinformix.vim | File | 5901 bytes | August 02 2022 16:56:59. | |
sqlj.vim | File | 2970 bytes | August 02 2022 16:56:59. | |
sqloracle.vim | File | 7243 bytes | August 02 2022 16:56:59. | |
sqr.vim | File | 13012 bytes | August 02 2022 16:56:59. | |
squid.vim | File | 6931 bytes | August 02 2022 16:56:59. | |
srec.vim | File | 3815 bytes | August 02 2022 16:56:59. | |
sshconfig.vim | File | 10579 bytes | August 02 2022 16:56:59. | |
sshdconfig.vim | File | 11092 bytes | August 02 2022 16:56:59. | |
st.vim | File | 2752 bytes | August 02 2022 16:56:59. | |
stata.vim | File | 27056 bytes | August 02 2022 16:56:59. | |
stp.vim | File | 5427 bytes | August 02 2022 16:56:59. | |
strace.vim | File | 1970 bytes | August 02 2022 16:56:59. | |
sudoers.vim | File | 22053 bytes | August 02 2022 16:56:59. | |
svg.vim | File | 436 bytes | August 02 2022 16:56:59. | |
svn.vim | File | 1852 bytes | August 02 2022 16:56:59. | |
syncolor.vim | File | 4093 bytes | August 02 2022 16:56:59. | |
synload.vim | File | 1984 bytes | August 02 2022 16:56:59. | |
syntax.vim | File | 1228 bytes | August 02 2022 16:56:59. | |
sysctl.vim | File | 1153 bytes | August 02 2022 16:56:59. | |
systemd.vim | File | 184 bytes | August 02 2022 16:56:59. | |
systemverilog.vim | File | 3539 bytes | August 02 2022 16:56:59. | |
tads.vim | File | 6862 bytes | August 02 2022 16:56:59. | |
tags.vim | File | 1155 bytes | August 02 2022 16:56:59. | |
tak.vim | File | 2920 bytes | August 02 2022 16:56:59. | |
takcmp.vim | File | 1593 bytes | August 02 2022 16:56:59. | |
takout.vim | File | 2000 bytes | August 02 2022 16:56:59. | |
tap.vim | File | 4362 bytes | August 02 2022 16:56:59. | |
tar.vim | File | 373 bytes | August 02 2022 16:56:59. | |
taskdata.vim | File | 1207 bytes | August 02 2022 16:56:59. | |
taskedit.vim | File | 1130 bytes | August 02 2022 16:56:59. | |
tasm.vim | File | 5672 bytes | August 02 2022 16:56:59. | |
tcl.vim | File | 17286 bytes | August 02 2022 16:56:59. | |
tcsh.vim | File | 13269 bytes | August 02 2022 16:56:59. | |
teraterm.vim | File | 4938 bytes | August 02 2022 16:56:59. | |
terminfo.vim | File | 4803 bytes | August 02 2022 16:56:59. | |
tex.vim | File | 66689 bytes | August 02 2022 16:56:59. | |
texinfo.vim | File | 25568 bytes | August 02 2022 16:56:59. | |
texmf.vim | File | 2281 bytes | August 02 2022 16:56:59. | |
tf.vim | File | 6904 bytes | August 02 2022 16:56:59. | |
tidy.vim | File | 5927 bytes | August 02 2022 16:56:59. | |
tilde.vim | File | 1538 bytes | August 02 2022 16:56:59. | |
tli.vim | File | 1658 bytes | August 02 2022 16:56:59. | |
tmux.vim | File | 6413 bytes | August 02 2022 16:56:59. | |
tpp.vim | File | 3481 bytes | August 02 2022 16:56:59. | |
trasys.vim | File | 5033 bytes | August 02 2022 16:56:59. | |
treetop.vim | File | 3668 bytes | August 02 2022 16:56:59. | |
trustees.vim | File | 1546 bytes | August 02 2022 16:56:59. | |
tsalt.vim | File | 8325 bytes | August 02 2022 16:56:59. | |
tsscl.vim | File | 5120 bytes | August 02 2022 16:56:59. | |
tssgm.vim | File | 2787 bytes | August 02 2022 16:56:59. | |
tssop.vim | File | 1785 bytes | August 02 2022 16:56:59. | |
tt2.vim | File | 7923 bytes | August 02 2022 16:56:59. | |
tt2html.vim | File | 516 bytes | August 02 2022 16:56:59. | |
tt2js.vim | File | 522 bytes | August 02 2022 16:56:59. | |
uc.vim | File | 6634 bytes | August 02 2022 16:56:59. | |
udevconf.vim | File | 1227 bytes | August 02 2022 16:56:59. | |
udevperm.vim | File | 2409 bytes | August 02 2022 16:56:59. | |
udevrules.vim | File | 6960 bytes | August 02 2022 16:56:59. | |
uil.vim | File | 2821 bytes | August 02 2022 16:56:59. | |
updatedb.vim | File | 1220 bytes | August 02 2022 16:56:59. | |
upstart.vim | File | 3151 bytes | August 02 2022 16:56:59. | |
upstreamdat.vim | File | 14048 bytes | August 02 2022 16:56:59. | |
upstreaminstalllog.vim | File | 971 bytes | August 02 2022 16:56:59. | |
upstreamlog.vim | File | 2620 bytes | August 02 2022 16:56:59. | |
upstreamrpt.vim | File | 14197 bytes | August 02 2022 16:56:59. | |
usserverlog.vim | File | 3118 bytes | August 02 2022 16:56:59. | |
usw2kagtlog.vim | File | 2702 bytes | August 02 2022 16:56:59. | |
valgrind.vim | File | 3250 bytes | August 02 2022 16:56:59. | |
vb.vim | File | 20299 bytes | August 02 2022 16:56:59. | |
vera.vim | File | 19552 bytes | August 02 2022 16:56:59. | |
verilog.vim | File | 5055 bytes | August 02 2022 16:56:59. | |
verilogams.vim | File | 6083 bytes | August 02 2022 16:56:59. | |
vgrindefs.vim | File | 1214 bytes | August 02 2022 16:56:59. | |
vhdl.vim | File | 9389 bytes | August 02 2022 16:56:59. | |
vim.vim | File | 68220 bytes | August 02 2022 16:56:59. | |
viminfo.vim | File | 1241 bytes | August 02 2022 16:56:59. | |
virata.vim | File | 11613 bytes | August 02 2022 16:56:59. | |
vmasm.vim | File | 8512 bytes | August 02 2022 16:56:59. | |
voscm.vim | File | 6975 bytes | August 02 2022 16:56:59. | |
vrml.vim | File | 12788 bytes | August 02 2022 16:56:59. | |
vroom.vim | File | 3492 bytes | August 02 2022 16:56:59. | |
vsejcl.vim | File | 1004 bytes | August 02 2022 16:56:59. | |
wdiff.vim | File | 716 bytes | August 02 2022 16:56:59. | |
web.vim | File | 1114 bytes | August 02 2022 16:56:59. | |
webmacro.vim | File | 3130 bytes | August 02 2022 16:56:59. | |
wget.vim | File | 3961 bytes | August 02 2022 16:56:59. | |
whitespace.vim | File | 357 bytes | August 02 2022 16:56:59. | |
winbatch.vim | File | 12152 bytes | August 02 2022 16:56:59. | |
wml.vim | File | 5731 bytes | August 02 2022 16:56:59. | |
wsh.vim | File | 1242 bytes | August 02 2022 16:56:59. | |
wsml.vim | File | 5400 bytes | August 02 2022 16:56:59. | |
wvdial.vim | File | 1093 bytes | August 02 2022 16:56:59. | |
xbl.vim | File | 568 bytes | August 02 2022 16:56:59. | |
xdefaults.vim | File | 5887 bytes | August 02 2022 16:56:59. | |
xf86conf.vim | File | 14725 bytes | August 02 2022 16:56:59. | |
xhtml.vim | File | 186 bytes | August 02 2022 16:56:59. | |
xinetd.vim | File | 14208 bytes | August 02 2022 16:56:59. | |
xkb.vim | File | 3320 bytes | August 02 2022 16:56:59. | |
xmath.vim | File | 10829 bytes | August 02 2022 16:56:59. | |
xml.vim | File | 8609 bytes | August 02 2022 16:56:59. | |
xmodmap.vim | File | 46511 bytes | August 02 2022 16:56:59. | |
xpm.vim | File | 4403 bytes | August 02 2022 16:56:59. | |
xpm2.vim | File | 4697 bytes | August 02 2022 16:56:59. | |
xquery.vim | File | 7191 bytes | August 02 2022 16:56:59. | |
xs.vim | File | 246745 bytes | August 02 2022 16:56:59. | |
xsd.vim | File | 2125 bytes | August 02 2022 16:56:59. | |
xslt.vim | File | 2166 bytes | August 02 2022 16:56:59. | |
xxd.vim | File | 766 bytes | August 02 2022 16:56:59. | |
yacc.vim | File | 5513 bytes | August 02 2022 16:56:59. | |
yaml.vim | File | 12864 bytes | August 02 2022 16:56:59. | |
z8a.vim | File | 2894 bytes | August 02 2022 16:56:59. | |
zimbu.vim | File | 6446 bytes | August 02 2022 16:56:59. | |
zsh.vim | File | 23489 bytes | August 02 2022 16:56:59. |
" Vim syntax file " Language: shell (sh) Korn shell (ksh) bash (sh) " Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz> " Previous Maintainer: Lennart Schultz <Lennart.Schultz@ecmwf.int> " Last Change: Mar 19, 2018 " Version: 174 " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SH " For options and settings, please use: :help ft-sh-syntax " This file includes many ideas from Eric Brunet (eric.brunet@ens.fr) " quit when a syntax file was already loaded {{{1 if exists("b:current_syntax") finish endif " trying to answer the question: which shell is /bin/sh, really? " If the user has not specified any of g:is_kornshell, g:is_bash, g:is_posix, g:is_sh, then guess. if getline(1) =~ '\<ksh$' let b:is_kornshell = 1 elseif getline(1) =~ '\<bash$' let b:is_bash = 1 elseif getline(1) =~ '\<dash$' let b:is_posix = 1 elseif !exists("g:is_kornshell") && !exists("g:is_bash") && !exists("g:is_posix") && !exists("g:is_sh") let s:shell = "" if executable("/bin/sh") let s:shell = resolve("/bin/sh") elseif executable("/usr/bin/sh") let s:shell = resolve("/usr/bin/sh") endif if s:shell =~ 'ksh$' let b:is_kornshell= 1 elseif s:shell =~ 'bash$' let b:is_bash = 1 elseif s:shell =~ 'dash$' let b:is_posix = 1 endif unlet s:shell endif " handling /bin/sh with is_kornshell/is_sh {{{1 " b:is_sh is set when "#! /bin/sh" is found; " However, it often is just a masquerade by bash (typically Linux) " or kornshell (typically workstations with Posix "sh"). " So, when the user sets "g:is_bash", "g:is_kornshell", " or "g:is_posix", a b:is_sh is converted into b:is_bash/b:is_kornshell, " respectively. if !exists("b:is_kornshell") && !exists("b:is_bash") if exists("g:is_posix") && !exists("g:is_kornshell") let g:is_kornshell= g:is_posix endif if exists("g:is_kornshell") let b:is_kornshell= 1 if exists("b:is_sh") unlet b:is_sh endif elseif exists("g:is_bash") let b:is_bash= 1 if exists("b:is_sh") unlet b:is_sh endif else let b:is_sh= 1 endif endif " set up default g:sh_fold_enabled {{{1 " ================================ if !exists("g:sh_fold_enabled") let g:sh_fold_enabled= 0 elseif g:sh_fold_enabled != 0 && !has("folding") let g:sh_fold_enabled= 0 echomsg "Ignoring g:sh_fold_enabled=".g:sh_fold_enabled."; need to re-compile vim for +fold support" endif if !exists("s:sh_fold_functions") let s:sh_fold_functions= and(g:sh_fold_enabled,1) endif if !exists("s:sh_fold_heredoc") let s:sh_fold_heredoc = and(g:sh_fold_enabled,2) endif if !exists("s:sh_fold_ifdofor") let s:sh_fold_ifdofor = and(g:sh_fold_enabled,4) endif if g:sh_fold_enabled && &fdm == "manual" " Given that the user provided g:sh_fold_enabled " AND g:sh_fold_enabled is manual (usual default) " implies a desire for syntax-based folding setl fdm=syntax endif " set up the syntax-highlighting iskeyword if has("patch-7.4.1142") if exists("b:is_bash") exe "syn iskeyword ".&iskeyword.",-,:" else exe "syn iskeyword ".&iskeyword.",-" endif endif " Set up folding commands for shell {{{1 " ================================= if s:sh_fold_functions com! -nargs=* ShFoldFunctions <args> fold else com! -nargs=* ShFoldFunctions <args> endif if s:sh_fold_heredoc com! -nargs=* ShFoldHereDoc <args> fold else com! -nargs=* ShFoldHereDoc <args> endif if s:sh_fold_ifdofor com! -nargs=* ShFoldIfDoFor <args> fold else com! -nargs=* ShFoldIfDoFor <args> endif " sh syntax is case sensitive {{{1 syn case match " Clusters: contains=@... clusters {{{1 "================================== syn cluster shErrorList contains=shDoError,shIfError,shInError,shCaseError,shEsacError,shCurlyError,shParenError,shTestError,shOK if exists("b:is_kornshell") || exists("b:is_bash") syn cluster ErrorList add=shDTestError endif syn cluster shArithParenList contains=shArithmetic,shCaseEsac,shComment,shDeref,shDo,shDerefSimple,shEcho,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shExDoubleQuote,shHereString,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement,shIf,shFor syn cluster shArithList contains=@shArithParenList,shParenError syn cluster shCaseEsacList contains=shCaseStart,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial,shCaseRange syn cluster shCaseList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq syn cluster shCommandSubList contains=shAlias,shArithmetic,shCmdParenRegion,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shEcho,shEscape,shExDoubleQuote,shExpr,shExSingleQuote,shHereDoc,shNumber,shOperator,shOption,shPosnParm,shHereString,shRedir,shSingleQuote,shSpecial,shStatement,shSubSh,shTest,shVariable syn cluster shCurlyList contains=shNumber,shComma,shDeref,shDerefSimple,shDerefSpecial syn cluster shDblQuoteList contains=shCommandSub,shDeref,shDerefSimple,shEscape,shPosnParm,shCtrlSeq,shSpecial syn cluster shDerefList contains=shDeref,shDerefSimple,shDerefVar,shDerefSpecial,shDerefWordError,shDerefPSR,shDerefPPS syn cluster shDerefVarList contains=shDerefOff,shDerefOp,shDerefVarArray,shDerefOpError syn cluster shEchoList contains=shArithmetic,shCommandSub,shDeref,shDerefSimple,shEscape,shExpr,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shCtrlSeq,shEchoQuote syn cluster shExprList1 contains=shCharClass,shNumber,shOperator,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shDblBrace,shDeref,shDerefSimple,shCtrlSeq syn cluster shExprList2 contains=@shExprList1,@shCaseList,shTest syn cluster shFunctionList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shOption,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shCtrlSeq if exists("b:is_kornshell") || exists("b:is_bash") syn cluster shFunctionList add=shRepeat syn cluster shFunctionList add=shDblBrace,shDblParen endif syn cluster shHereBeginList contains=@shCommandSubList syn cluster shHereList contains=shBeginHere,shHerePayload syn cluster shHereListDQ contains=shBeginHere,@shDblQuoteList,shHerePayload syn cluster shIdList contains=shCommandSub,shWrapLineOperator,shSetOption,shDeref,shDerefSimple,shHereString,shRedir,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shCtrlSeq,shStringSpecial,shAtExpr syn cluster shIfList contains=@shLoopList,shDblBrace,shDblParen,shFunctionKey,shFunctionOne,shFunctionTwo syn cluster shLoopList contains=@shCaseList,@shErrorList,shCaseEsac,shConditional,shDblBrace,shExpr,shFor,shForPP,shIf,shOption,shSet,shTest,shTestOpr,shTouch syn cluster shPPSRightList contains=shComment,shDeref,shDerefSimple,shEscape,shPosnParm syn cluster shSubShList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shIf,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq,shOperator syn cluster shTestList contains=shCharClass,shCommandSub,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shExDoubleQuote,shExpr,shExSingleQuote,shNumber,shOperator,shSingleQuote,shTest,shTestOpr syn cluster shNoZSList contains=shSpecialNoZS " Echo: {{{1 " ==== " This one is needed INSIDE a CommandSub, so that `echo bla` be correct syn region shEcho matchgroup=shStatement start="\<echo\>" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|()`]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=@shEchoList skipwhite nextgroup=shQuickComment syn region shEcho matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|()`]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=@shEchoList skipwhite nextgroup=shQuickComment syn match shEchoQuote contained '\%(\\\\\)*\\["`'()]' " This must be after the strings, so that ... \" will be correct syn region shEmbeddedEcho contained matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|`)]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=shNumber,shExSingleQuote,shSingleQuote,shDeref,shDerefSimple,shSpecialVar,shOperator,shExDoubleQuote,shDoubleQuote,shCharClass,shCtrlSeq " Alias: {{{1 " ===== if exists("b:is_kornshell") || exists("b:is_bash") || exists("b:is_posix") syn match shStatement "\<alias\>" syn region shAlias matchgroup=shStatement start="\<alias\>\s\+\(\h[-._[:alnum:]]\+\)\@=" skip="\\$" end="\>\|`" syn region shAlias matchgroup=shStatement start="\<alias\>\s\+\(\h[-._[:alnum:]]\+=\)\@=" skip="\\$" end="=" " Touch: {{{1 " ===== syn match shTouch '\<touch\>[^;#]*' skipwhite nextgroup=shComment contains=shTouchCmd,shDoubleQuote,shSingleQuote,shDeref,shDerefSimple syn match shTouchCmd '\<touch\>' contained endif " Error Codes: {{{1 " ============ if !exists("g:sh_no_error") syn match shDoError "\<done\>" syn match shIfError "\<fi\>" syn match shInError "\<in\>" syn match shCaseError ";;" syn match shEsacError "\<esac\>" syn match shCurlyError "}" syn match shParenError ")" syn match shOK '\.\(done\|fi\|in\|esac\)' if exists("b:is_kornshell") || exists("b:is_bash") syn match shDTestError "]]" endif syn match shTestError "]" endif " Options: {{{1 " ==================== syn match shOption "\s\zs[-+][-_a-zA-Z#@]\+" syn match shOption "\s\zs--[^ \t$`'"|);]\+" " File Redirection Highlighted As Operators: {{{1 "=========================================== syn match shRedir "\d\=>\(&[-0-9]\)\=" syn match shRedir "\d\=>>-\=" syn match shRedir "\d\=<\(&[-0-9]\)\=" syn match shRedir "\d<<-\=" " Operators: {{{1 " ========== syn match shOperator "<<\|>>" contained syn match shOperator "[!&;|]" contained syn match shOperator "\[[[^:]\|\]]" contained syn match shOperator "[-=/*+%]\==" skipwhite nextgroup=shPattern syn match shPattern "\<\S\+\())\)\@=" contained contains=shExSingleQuote,shSingleQuote,shExDoubleQuote,shDoubleQuote,shDeref " Subshells: {{{1 " ========== syn region shExpr transparent matchgroup=shExprRegion start="{" end="}" contains=@shExprList2 nextgroup=shSpecialNxt syn region shSubSh transparent matchgroup=shSubShRegion start="[^(]\zs(" end=")" contains=@shSubShList nextgroup=shSpecialNxt " Tests: {{{1 "======= syn region shExpr matchgroup=shRange start="\[" skip=+\\\\\|\\$\|\[+ end="\]" contains=@shTestList,shSpecial syn region shTest transparent matchgroup=shStatement start="\<test\s" skip=+\\\\\|\\$+ matchgroup=NONE end="[;&|]"me=e-1 end="$" contains=@shExprList1 syn region shNoQuote start='\S' skip='\%(\\\\\)*\\.' end='\ze\s' end="\ze['"]" contained contains=shDerefSimple,shDeref syn match shAstQuote contained '\*\ze"' nextgroup=shString syn match shTestOpr contained '[^-+/%]\zs=' skipwhite nextgroup=shTestDoubleQuote,shTestSingleQuote,shTestPattern syn match shTestOpr contained "<=\|>=\|!=\|==\|=\~\|-.\>\|-\(nt\|ot\|ef\|eq\|ne\|lt\|le\|gt\|ge\)\>\|[!<>]" syn match shTestPattern contained '\w\+' syn region shTestDoubleQuote contained start='\%(\%(\\\\\)*\\\)\@<!"' skip=+\\\\\|\\"+ end='"' contains=shDeref,shDerefSimple,shDerefSpecial syn match shTestSingleQuote contained '\\.' nextgroup=shTestSingleQuote syn match shTestSingleQuote contained "'[^']*'" if exists("b:is_kornshell") || exists("b:is_bash") syn region shDblBrace matchgroup=Delimiter start="\[\[" skip=+\%(\\\\\)*\\$+ end="\]\]" contains=@shTestList,shAstQuote,shNoQuote,shComment syn region shDblParen matchgroup=Delimiter start="((" skip=+\%(\\\\\)*\\$+ end="))" contains=@shTestList,shComment endif " Character Class In Range: {{{1 " ========================= syn match shCharClass contained "\[:\(backspace\|escape\|return\|xdigit\|alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|tab\):\]" " Loops: do, if, while, until {{{1 " ====== ShFoldIfDoFor syn region shDo transparent matchgroup=shConditional start="\<do\>" matchgroup=shConditional end="\<done\>" contains=@shLoopList ShFoldIfDoFor syn region shIf transparent matchgroup=shConditional start="\<if\_s" matchgroup=shConditional skip=+-fi\>+ end="\<;\_s*then\>" end="\<fi\>" contains=@shIfList ShFoldIfDoFor syn region shFor matchgroup=shLoop start="\<for\ze\_s\s*\%(((\)\@!" end="\<in\>" end="\<do\>"me=e-2 contains=@shLoopList,shDblParen skipwhite nextgroup=shCurlyIn ShFoldIfDoFor syn region shForPP matchgroup=shLoop start='\<for\>\_s*((' end='))' contains=shTestOpr if exists("b:is_kornshell") || exists("b:is_bash") || exists("b:is_posix") syn cluster shCaseList add=shRepeat syn cluster shFunctionList add=shRepeat syn region shRepeat matchgroup=shLoop start="\<while\_s" end="\<do\>"me=e-2 contains=@shLoopList,shDblParen,shDblBrace syn region shRepeat matchgroup=shLoop start="\<until\_s" end="\<do\>"me=e-2 contains=@shLoopList,shDblParen,shDblBrace if !exists("b:is_posix") syn region shCaseEsac matchgroup=shConditional start="\<select\s" matchgroup=shConditional end="\<in\>" end="\<do\>" contains=@shLoopList endif else syn region shRepeat matchgroup=shLoop start="\<while\_s" end="\<do\>"me=e-2 contains=@shLoopList syn region shRepeat matchgroup=shLoop start="\<until\_s" end="\<do\>"me=e-2 contains=@shLoopList endif syn region shCurlyIn contained matchgroup=Delimiter start="{" end="}" contains=@shCurlyList syn match shComma contained "," " Case: case...esac {{{1 " ==== syn match shCaseBar contained skipwhite "\(^\|[^\\]\)\(\\\\\)*\zs|" nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote syn match shCaseStart contained skipwhite skipnl "(" nextgroup=shCase,shCaseBar if exists("b:is_bash") ShFoldIfDoFor syn region shCase contained skipwhite skipnl matchgroup=shSnglCase start="\%(\\.\|[^#$()'" \t]\)\{-}\zs)" end=";;" end=";&" end=";;&" end="esac"me=s-1 contains=@shCaseList nextgroup=shCaseStart,shCase,shComment else ShFoldIfDoFor syn region shCase contained skipwhite skipnl matchgroup=shSnglCase start="\%(\\.\|[^#$()'" \t]\)\{-}\zs)" end=";;" end="esac"me=s-1 contains=@shCaseList nextgroup=shCaseStart,shCase,shComment endif ShFoldIfDoFor syn region shCaseEsac matchgroup=shConditional start="\<case\>" end="\<esac\>" contains=@shCaseEsacList syn keyword shCaseIn contained skipwhite skipnl in nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote if exists("b:is_bash") syn region shCaseExSingleQuote matchgroup=shQuote start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial,shSpecial skipwhite skipnl nextgroup=shCaseBar contained elseif !exists("g:sh_no_error") syn region shCaseExSingleQuote matchgroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial skipwhite skipnl nextgroup=shCaseBar contained endif syn region shCaseSingleQuote matchgroup=shQuote start=+'+ end=+'+ contains=shStringSpecial skipwhite skipnl nextgroup=shCaseBar contained syn region shCaseDoubleQuote matchgroup=shQuote start=+"+ skip=+\\\\\|\\.+ end=+"+ contains=@shDblQuoteList,shStringSpecial skipwhite skipnl nextgroup=shCaseBar contained syn region shCaseCommandSub start=+`+ skip=+\\\\\|\\.+ end=+`+ contains=@shCommandSubList skipwhite skipnl nextgroup=shCaseBar contained if exists("b:is_bash") syn region shCaseRange matchgroup=Delimiter start=+\[+ skip=+\\\\+ end=+\]+ contained contains=shCharClass syn match shCharClass '\[:\%(alnum\|alpha\|ascii\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|word\|or\|xdigit\):\]' contained else syn region shCaseRange matchgroup=Delimiter start=+\[+ skip=+\\\\+ end=+\]+ contained endif " Misc: {{{1 "====== syn match shWrapLineOperator "\\$" syn region shCommandSub start="`" skip="\\\\\|\\." end="`" contains=@shCommandSubList syn match shEscape contained '\%(^\)\@!\%(\\\\\)*\\.' " $() and $(()): {{{1 " $(..) is not supported by sh (Bourne shell). However, apparently " some systems (HP?) have as their /bin/sh a (link to) Korn shell " (ie. Posix compliant shell). /bin/ksh should work for those " systems too, however, so the following syntax will flag $(..) as " an Error under /bin/sh. By consensus of vimdev'ers! if exists("b:is_kornshell") || exists("b:is_bash") || exists("b:is_posix") syn region shCommandSub matchgroup=shCmdSubRegion start="\$(" skip='\\\\\|\\.' end=")" contains=@shCommandSubList syn region shArithmetic matchgroup=shArithRegion start="\$((" skip='\\\\\|\\.' end="))" contains=@shArithList syn region shArithmetic matchgroup=shArithRegion start="\$\[" skip='\\\\\|\\.' end="\]" contains=@shArithList syn match shSkipInitWS contained "^\s\+" elseif !exists("g:sh_no_error") syn region shCommandSub matchgroup=Error start="\$(" end=")" contains=@shCommandSubList endif syn region shCmdParenRegion matchgroup=shCmdSubRegion start="(\ze[^(]" skip='\\\\\|\\.' end=")" contains=@shCommandSubList if exists("b:is_bash") syn cluster shCommandSubList add=bashSpecialVariables,bashStatement syn cluster shCaseList add=bashAdminStatement,bashStatement syn keyword bashSpecialVariables contained auto_resume BASH BASH_ALIASES BASH_ALIASES BASH_ARGC BASH_ARGC BASH_ARGV BASH_ARGV BASH_CMDS BASH_CMDS BASH_COMMAND BASH_COMMAND BASH_ENV BASH_EXECUTION_STRING BASH_EXECUTION_STRING BASH_LINENO BASH_LINENO BASHOPTS BASHOPTS BASHPID BASHPID BASH_REMATCH BASH_REMATCH BASH_SOURCE BASH_SOURCE BASH_SUBSHELL BASH_SUBSHELL BASH_VERSINFO BASH_VERSION BASH_XTRACEFD BASH_XTRACEFD CDPATH COLUMNS COLUMNS COMP_CWORD COMP_CWORD COMP_KEY COMP_KEY COMP_LINE COMP_LINE COMP_POINT COMP_POINT COMPREPLY COMPREPLY COMP_TYPE COMP_TYPE COMP_WORDBREAKS COMP_WORDBREAKS COMP_WORDS COMP_WORDS COPROC COPROC DIRSTACK EMACS EMACS ENV ENV EUID FCEDIT FIGNORE FUNCNAME FUNCNAME FUNCNEST FUNCNEST GLOBIGNORE GROUPS histchars HISTCMD HISTCONTROL HISTFILE HISTFILESIZE HISTIGNORE HISTSIZE HISTTIMEFORMAT HISTTIMEFORMAT HOME HOSTFILE HOSTNAME HOSTTYPE IFS IGNOREEOF INPUTRC LANG LC_ALL LC_COLLATE LC_CTYPE LC_CTYPE LC_MESSAGES LC_NUMERIC LC_NUMERIC LINENO LINES LINES MACHTYPE MAIL MAILCHECK MAILPATH MAPFILE MAPFILE OLDPWD OPTARG OPTERR OPTIND OSTYPE PATH PIPESTATUS POSIXLY_CORRECT POSIXLY_CORRECT PPID PROMPT_COMMAND PS1 PS2 PS3 PS4 PWD RANDOM READLINE_LINE READLINE_LINE READLINE_POINT READLINE_POINT REPLY SECONDS SHELL SHELL SHELLOPTS SHLVL TIMEFORMAT TIMEOUT TMPDIR TMPDIR UID syn keyword bashStatement chmod clear complete du egrep expr fgrep find gnufind gnugrep grep less ls mkdir mv rm rmdir rpm sed sleep sort strip tail syn keyword bashAdminStatement daemon killall killproc nice reload restart start status stop syn keyword bashStatement command compgen endif if exists("b:is_kornshell") || exists("b:is_posix") syn cluster shCommandSubList add=kshSpecialVariables,kshStatement syn cluster shCaseList add=kshStatement syn keyword kshSpecialVariables contained CDPATH COLUMNS EDITOR ENV ERRNO FCEDIT FPATH HISTFILE HISTSIZE HOME IFS LINENO LINES MAIL MAILCHECK MAILPATH OLDPWD OPTARG OPTIND PATH PPID PS1 PS2 PS3 PS4 PWD RANDOM REPLY SECONDS SHELL TMOUT VISUAL syn keyword kshStatement cat chmod clear cp du egrep expr fgrep find grep killall less ls mkdir mv nice printenv rm rmdir sed sort strip stty tail tput syn keyword kshStatement command setgroups setsenv endif syn match shSource "^\.\s" syn match shSource "\s\.\s" "syn region shColon start="^\s*:" end="$" end="\s#"me=e-2 contains=@shColonList "syn region shColon start="^\s*\zs:" end="$" end="\s#"me=e-2 if exists("b:is_kornshell") || exists("b:is_posix") syn match shColon '^\s*\zs:' endif " String And Character Constants: {{{1 "================================ syn match shNumber "\<\d\+\>#\=" syn match shNumber "\<-\=\.\=\d\+\>#\=" syn match shCtrlSeq "\\\d\d\d\|\\[abcfnrtv0]" contained if exists("b:is_bash") syn match shSpecial "[^\\]\(\\\\\)*\zs\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[abefnrtv]" contained syn match shSpecial "^\(\\\\\)*\zs\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[abefnrtv]" contained syn region shExSingleQuote matchgroup=shQuote start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial,shSpecial nextgroup=shSpecialNxt syn region shExDoubleQuote matchgroup=shQuote start=+\$"+ skip=+\\\\\|\\.\|\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial,shSpecial nextgroup=shSpecialNxt elseif !exists("g:sh_no_error") syn region shExSingleQuote matchGroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial syn region shExDoubleQuote matchGroup=Error start=+\$"+ skip=+\\\\\|\\.+ end=+"+ contains=shStringSpecial endif syn region shSingleQuote matchgroup=shQuote start=+'+ end=+'+ contains=@Spell nextgroup=shSpecialStart syn region shDoubleQuote matchgroup=shQuote start=+\%(\%(\\\\\)*\\\)\@<!"+ skip=+\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial,@Spell nextgroup=shSpecialStart syn match shStringSpecial "[^[:print:] \t]" contained syn match shStringSpecial "[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]" syn match shSpecial "[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]" nextgroup=shBkslshSnglQuote,shBkslshDblQuote,@shNoZSList syn match shSpecialStart "\%(\\\\\)*\\[\\"'`$()#]" contained nextgroup=shBkslshSnglQuote,shBkslshDblQuote,@shNoZSList syn match shSpecial "^\%(\\\\\)*\\[\\"'`$()#]" syn match shSpecialNoZS contained "\%(\\\\\)*\\[\\"'`$()#]" syn match shSpecialNxt contained "\\[\\"'`$()#]" syn region shBkslshSnglQuote contained matchgroup=shQuote start=+'+ end=+'+ contains=@Spell syn region shBkslshDblQuote contained matchgroup=shQuote start=+"+ skip=+\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial,@Spell " Comments: {{{1 "========== syn cluster shCommentGroup contains=shTodo,@Spell if exists("b:is_bash") syn match shTodo contained "\<\%(COMBAK\|FIXME\|TODO\|XXX\)\ze:\=\>" else syn keyword shTodo contained COMBAK FIXME TODO XXX endif syn match shComment "^\s*\zs#.*$" contains=@shCommentGroup syn match shComment "\s\zs#.*$" contains=@shCommentGroup syn match shComment contained "#.*$" contains=@shCommentGroup syn match shQuickComment contained "#.*$" " Here Documents: {{{1 " ========================================= ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc01 start="<<\s*\\\=\z([^ \t0-9|>]\+\)" matchgroup=shHereDoc01 end="^\z1\s*$" contains=@shDblQuoteList ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc02 start="<<\s*\"\z([^ \t0-9|>]\+\)\"" matchgroup=shHereDoc02 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc03 start="<<-\s*\z([^ \t0-9|>]\+\)" matchgroup=shHereDoc03 end="^\s*\z1\s*$" contains=@shDblQuoteList ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc04 start="<<-\s*'\z([^'0-9]\+\)'" matchgroup=shHereDoc04 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc05 start="<<\s*'\z([^'0-9]\+\)'" matchgroup=shHereDoc05 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc06 start="<<-\s*\"\z([^ \t0-9|>]\+\)\"" matchgroup=shHereDoc06 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc07 start="<<\s*\\\_$\_s*\z([^ \t0-9|>]\+\)" matchgroup=shHereDoc07 end="^\z1\s*$" contains=@shDblQuoteList ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc08 start="<<\s*\\\_$\_s*'\z([^ \t0-9|>]\+\)'" matchgroup=shHereDoc08 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc09 start="<<\s*\\\_$\_s*\"\z([^ \t0-9|>]\+\)\"" matchgroup=shHereDoc09 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc10 start="<<-\s*\\\_$\_s*\z([^ \t0-9|>]\+\)" matchgroup=shHereDoc10 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc11 start="<<-\s*\\\_$\_s*\\\z([^ \t0-9|>]\+\)" matchgroup=shHereDoc11 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc12 start="<<-\s*\\\_$\_s*'\z([^ \t0-9|>]\+\)'" matchgroup=shHereDoc12 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc13 start="<<-\s*\\\_$\_s*\"\z([^ \t0-9|>]\+\)\"" matchgroup=shHereDoc13 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc14 start="<<\\\z([^ \t0-9|>]\+\)" matchgroup=shHereDoc14 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc15 start="<<-\s*\\\z([^ \t0-9|>]\+\)" matchgroup=shHereDoc15 end="^\s*\z1\s*$" " Here Strings: {{{1 " ============= " available for: bash; ksh (really should be ksh93 only) but not if its a posix if exists("b:is_bash") || (exists("b:is_kornshell") && !exists("b:is_posix")) syn match shHereString "<<<" skipwhite nextgroup=shCmdParenRegion endif " Identifiers: {{{1 "============= syn match shSetOption "\s\zs[-+][a-zA-Z0-9]\+\>" contained syn match shVariable "\<\([bwglsav]:\)\=[a-zA-Z0-9.!@_%+,]*\ze=" nextgroup=shVarAssign syn match shVarAssign "=" contained nextgroup=shCmdParenRegion,shPattern,shDeref,shDerefSimple,shDoubleQuote,shExDoubleQuote,shSingleQuote,shExSingleQuote syn region shAtExpr contained start="@(" end=")" contains=@shIdList if exists("b:is_bash") syn region shSetList oneline matchgroup=shSet start="\<\(declare\|typeset\|local\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+#\|=" contains=@shIdList syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="\ze[;|)]\|$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+=" contains=@shIdList elseif exists("b:is_kornshell") || exists("b:is_posix") syn region shSetList oneline matchgroup=shSet start="\<\(typeset\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList else syn region shSetList oneline matchgroup=shSet start="\<\(set\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList endif " Functions: {{{1 if !exists("b:is_posix") syn keyword shFunctionKey function skipwhite skipnl nextgroup=shFunctionTwo endif if exists("b:is_bash") ShFoldFunctions syn region shFunctionOne matchgroup=shFunction start="^\s*[A-Za-z_0-9:][-a-zA-Z_0-9:]*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment ShFoldFunctions syn region shFunctionTwo matchgroup=shFunction start="\%(do\)\@!\&\<[A-Za-z_0-9:][-a-zA-Z_0-9:]*\>\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment ShFoldFunctions syn region shFunctionThree matchgroup=shFunction start="^\s*[A-Za-z_0-9:][-a-zA-Z_0-9:]*\s*()\_s*(" end=")" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment ShFoldFunctions syn region shFunctionFour matchgroup=shFunction start="\%(do\)\@!\&\<[A-Za-z_0-9:][-a-zA-Z_0-9:]*\>\s*\%(()\)\=\_s*)" end=")" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment else ShFoldFunctions syn region shFunctionOne matchgroup=shFunction start="^\s*\h\w*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment ShFoldFunctions syn region shFunctionTwo matchgroup=shFunction start="\%(do\)\@!\&\<\h\w*\>\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment ShFoldFunctions syn region shFunctionThree matchgroup=shFunction start="^\s*\h\w*\s*()\_s*(" end=")" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment ShFoldFunctions syn region shFunctionFour matchgroup=shFunction start="\%(do\)\@!\&\<\h\w*\>\s*\%(()\)\=\_s*(" end=")" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment endif " Parameter Dereferencing: {{{1 " ======================== if !exists("g:sh_no_error") syn match shDerefWordError "[^}$[~]" contained endif syn match shDerefSimple "\$\%(\h\w*\|\d\)" nextgroup=@shNoZSList syn region shDeref matchgroup=PreProc start="\${" end="}" contains=@shDerefList,shDerefVarArray syn match shDerefSimple "\$[-#*@!?]" nextgroup=@shNoZSList syn match shDerefSimple "\$\$" nextgroup=@shNoZSList syn match shDerefSimple "\${\d}" nextgroup=@shNoZSList if exists("b:is_bash") || exists("b:is_kornshell") || exists("b:is_posix") syn region shDeref matchgroup=PreProc start="\${##\=" end="}" contains=@shDerefList nextgroup=@shSpecialNoZS syn region shDeref matchgroup=PreProc start="\${\$\$" end="}" contains=@shDerefList nextgroup=@shSpecialNoZS endif " ksh: ${!var[*]} array index list syntax: {{{1 " ======================================== if exists("b:is_kornshell") || exists("b:is_posix") syn region shDeref matchgroup=PreProc start="\${!" end="}" contains=@shDerefVarArray endif " bash: ${!prefix*} and ${#parameter}: {{{1 " ==================================== if exists("b:is_bash") syn region shDeref matchgroup=PreProc start="\${!" end="\*\=}" contains=@shDerefList,shDerefOff syn match shDerefVar contained "{\@<=!\h\w*" nextgroup=@shDerefVarList endif if exists("b:is_kornshell") syn match shDerefVar contained "{\@<=!\h\w*[[:alnum:]_.]*" nextgroup=@shDerefVarList endif syn match shDerefSpecial contained "{\@<=[-*@?0]" nextgroup=shDerefOp,shDerefOpError syn match shDerefSpecial contained "\({[#!]\)\@<=[[:alnum:]*@_]\+" nextgroup=@shDerefVarList,shDerefOp syn match shDerefVar contained "{\@<=\h\w*" nextgroup=@shDerefVarList syn match shDerefVar contained '\d' nextgroup=@shDerefVarList if exists("b:is_kornshell") || exists("b:is_posix") syn match shDerefVar contained "{\@<=\h\w*[[:alnum:]_.]*" nextgroup=@shDerefVarList endif " sh ksh bash : ${var[... ]...} array reference: {{{1 syn region shDerefVarArray contained matchgroup=shDeref start="\[" end="]" contains=@shCommandSubList nextgroup=shDerefOp,shDerefOpError " Special ${parameter OPERATOR word} handling: {{{1 " sh ksh bash : ${parameter:-word} word is default value " sh ksh bash : ${parameter:=word} assign word as default value " sh ksh bash : ${parameter:?word} display word if parameter is null " sh ksh bash : ${parameter:+word} use word if parameter is not null, otherwise nothing " ksh bash : ${parameter#pattern} remove small left pattern " ksh bash : ${parameter##pattern} remove large left pattern " ksh bash : ${parameter%pattern} remove small right pattern " ksh bash : ${parameter%%pattern} remove large right pattern " bash : ${parameter^pattern} Case modification " bash : ${parameter^^pattern} Case modification " bash : ${parameter,pattern} Case modification " bash : ${parameter,,pattern} Case modification syn cluster shDerefPatternList contains=shDerefPattern,shDerefString if !exists("g:sh_no_error") syn match shDerefOpError contained ":[[:punct:]]" endif syn match shDerefOp contained ":\=[-=?]" nextgroup=@shDerefPatternList syn match shDerefOp contained ":\=+" nextgroup=@shDerefPatternList if exists("b:is_bash") || exists("b:is_kornshell") || exists("b:is_posix") syn match shDerefOp contained "#\{1,2}" nextgroup=@shDerefPatternList syn match shDerefOp contained "%\{1,2}" nextgroup=@shDerefPatternList syn match shDerefPattern contained "[^{}]\+" contains=shDeref,shDerefSimple,shDerefPattern,shDerefString,shCommandSub,shDerefEscape nextgroup=shDerefPattern syn region shDerefPattern contained start="{" end="}" contains=shDeref,shDerefSimple,shDerefString,shCommandSub nextgroup=shDerefPattern syn match shDerefEscape contained '\%(\\\\\)*\\.' endif if exists("b:is_bash") syn match shDerefOp contained "[,^]\{1,2}" nextgroup=@shDerefPatternList endif syn region shDerefString contained matchgroup=shDerefDelim start=+\%(\\\)\@<!'+ end=+'+ contains=shStringSpecial syn region shDerefString contained matchgroup=shDerefDelim start=+\%(\\\)\@<!"+ skip=+\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial syn match shDerefString contained "\\["']" nextgroup=shDerefPattern if exists("b:is_bash") " bash : ${parameter:offset} " bash : ${parameter:offset:length} syn region shDerefOff contained start=':' end='\ze:' end='\ze}' contains=shDeref,shDerefSimple,shDerefEscape nextgroup=shDerefLen,shDeref,shDerefSimple syn region shDerefOff contained start=':\s-' end='\ze:' end='\ze}' contains=shDeref,shDerefSimple,shDerefEscape nextgroup=shDerefLen,shDeref,shDerefSimple syn match shDerefLen contained ":[^}]\+" contains=shDeref,shDerefSimple " bash : ${parameter//pattern/string} " bash : ${parameter//pattern} syn match shDerefPPS contained '/\{1,2}' nextgroup=shDerefPPSleft syn region shDerefPPSleft contained start='.' skip=@\%(\\\\\)*\\/@ matchgroup=shDerefOp end='/' end='\ze}' nextgroup=shDerefPPSright contains=@shCommandSubList syn region shDerefPPSright contained start='.' skip=@\%(\\\\\)\+@ end='\ze}' contains=@shPPSRightList " bash : ${parameter/#substring/replacement} syn match shDerefPSR contained '/#' nextgroup=shDerefPSRleft syn region shDerefPSRleft contained start='.' skip=@\%(\\\\\)*\\/@ matchgroup=shDerefOp end='/' end='\ze}' nextgroup=shDerefPSRright syn region shDerefPSRright contained start='.' skip=@\%(\\\\\)\+@ end='\ze}' endif " Arithmetic Parenthesized Expressions: {{{1 "syn region shParen matchgroup=shArithRegion start='[^$]\zs(\%(\ze[^(]\|$\)' end=')' contains=@shArithParenList syn region shParen matchgroup=shArithRegion start='\$\@!(\%(\ze[^(]\|$\)' end=')' contains=@shArithParenList " Useful sh Keywords: {{{1 " =================== syn keyword shStatement break cd chdir continue eval exec exit kill newgrp pwd read readonly return shift test trap ulimit umask wait syn keyword shConditional contained elif else then if !exists("g:sh_no_error") syn keyword shCondError elif else then endif " Useful ksh Keywords: {{{1 " ==================== if exists("b:is_kornshell") || exists("b:is_bash") || exists("b:is_posix") syn keyword shStatement autoload bg false fc fg functions getopts hash history integer jobs let nohup printf r stop suspend times true type unalias whence if exists("b:is_posix") syn keyword shStatement command else syn keyword shStatement time endif " Useful bash Keywords: {{{1 " ===================== if exists("b:is_bash") syn keyword shStatement bind builtin dirs disown enable help logout popd pushd shopt source else syn keyword shStatement login newgrp endif endif " Synchronization: {{{1 " ================ if !exists("g:sh_minlines") let s:sh_minlines = 200 else let s:sh_minlines= g:sh_minlines endif if !exists("g:sh_maxlines") let s:sh_maxlines = 2*s:sh_minlines if s:sh_maxlines < 25 let s:sh_maxlines= 25 endif else let s:sh_maxlines= g:sh_maxlines endif exec "syn sync minlines=" . s:sh_minlines . " maxlines=" . s:sh_maxlines syn sync match shCaseEsacSync grouphere shCaseEsac "\<case\>" syn sync match shCaseEsacSync groupthere shCaseEsac "\<esac\>" syn sync match shDoSync grouphere shDo "\<do\>" syn sync match shDoSync groupthere shDo "\<done\>" syn sync match shForSync grouphere shFor "\<for\>" syn sync match shForSync groupthere shFor "\<in\>" syn sync match shIfSync grouphere shIf "\<if\>" syn sync match shIfSync groupthere shIf "\<fi\>" syn sync match shUntilSync grouphere shRepeat "\<until\>" syn sync match shWhileSync grouphere shRepeat "\<while\>" " Default Highlighting: {{{1 " ===================== if !exists("skip_sh_syntax_inits") hi def link shArithRegion shShellVariables hi def link shAstQuote shDoubleQuote hi def link shAtExpr shSetList hi def link shBeginHere shRedir hi def link shCaseBar shConditional hi def link shCaseCommandSub shCommandSub hi def link shCaseDoubleQuote shDoubleQuote hi def link shCaseIn shConditional hi def link shQuote shOperator hi def link shCaseSingleQuote shSingleQuote hi def link shCaseStart shConditional hi def link shCmdSubRegion shShellVariables hi def link shColon shComment hi def link shDerefOp shOperator hi def link shDerefPOL shDerefOp hi def link shDerefPPS shDerefOp hi def link shDerefPSR shDerefOp hi def link shDeref shShellVariables hi def link shDerefDelim shOperator hi def link shDerefSimple shDeref hi def link shDerefSpecial shDeref hi def link shDerefString shDoubleQuote hi def link shDerefVar shDeref hi def link shDoubleQuote shString hi def link shEcho shString hi def link shEchoDelim shOperator hi def link shEchoQuote shString hi def link shForPP shLoop hi def link shFunction Function hi def link shEmbeddedEcho shString hi def link shEscape shCommandSub hi def link shExDoubleQuote shDoubleQuote hi def link shExSingleQuote shSingleQuote hi def link shHereDoc shString hi def link shHereString shRedir hi def link shHerePayload shHereDoc hi def link shLoop shStatement hi def link shSpecialNxt shSpecial hi def link shNoQuote shDoubleQuote hi def link shOption shCommandSub hi def link shPattern shString hi def link shParen shArithmetic hi def link shPosnParm shShellVariables hi def link shQuickComment shComment hi def link shRange shOperator hi def link shRedir shOperator hi def link shSetListDelim shOperator hi def link shSetOption shOption hi def link shSingleQuote shString hi def link shSource shOperator hi def link shStringSpecial shSpecial hi def link shSpecialStart shSpecial hi def link shSubShRegion shOperator hi def link shTestOpr shConditional hi def link shTestPattern shString hi def link shTestDoubleQuote shString hi def link shTestSingleQuote shString hi def link shTouchCmd shStatement hi def link shVariable shSetList hi def link shWrapLineOperator shOperator if exists("b:is_bash") hi def link bashAdminStatement shStatement hi def link bashSpecialVariables shShellVariables hi def link bashStatement shStatement hi def link shCharClass shSpecial hi def link shDerefOff shDerefOp hi def link shDerefLen shDerefOff endif if exists("b:is_kornshell") || exists("b:is_posix") hi def link kshSpecialVariables shShellVariables hi def link kshStatement shStatement endif if !exists("g:sh_no_error") hi def link shCaseError Error hi def link shCondError Error hi def link shCurlyError Error hi def link shDerefOpError Error hi def link shDerefWordError Error hi def link shDoError Error hi def link shEsacError Error hi def link shIfError Error hi def link shInError Error hi def link shParenError Error hi def link shTestError Error if exists("b:is_kornshell") || exists("b:is_posix") hi def link shDTestError Error endif endif hi def link shArithmetic Special hi def link shCharClass Identifier hi def link shSnglCase Statement hi def link shCommandSub Special hi def link shComment Comment hi def link shConditional Conditional hi def link shCtrlSeq Special hi def link shExprRegion Delimiter hi def link shFunctionKey Function hi def link shFunctionName Function hi def link shNumber Number hi def link shOperator Operator hi def link shRepeat Repeat hi def link shSet Statement hi def link shSetList Identifier hi def link shShellVariables PreProc hi def link shSpecial Special hi def link shSpecialNoZS shSpecial hi def link shStatement Statement hi def link shString String hi def link shTodo Todo hi def link shAlias Identifier hi def link shHereDoc01 shRedir hi def link shHereDoc02 shRedir hi def link shHereDoc03 shRedir hi def link shHereDoc04 shRedir hi def link shHereDoc05 shRedir hi def link shHereDoc06 shRedir hi def link shHereDoc07 shRedir hi def link shHereDoc08 shRedir hi def link shHereDoc09 shRedir hi def link shHereDoc10 shRedir hi def link shHereDoc11 shRedir hi def link shHereDoc12 shRedir hi def link shHereDoc13 shRedir hi def link shHereDoc14 shRedir hi def link shHereDoc15 shRedir endif " Delete shell folding commands {{{1 " ============================= delc ShFoldFunctions delc ShFoldHereDoc delc ShFoldIfDoFor " Set Current Syntax: {{{1 " =================== if exists("b:is_bash") let b:current_syntax = "bash" elseif exists("b:is_kornshell") let b:current_syntax = "ksh" elseif exists("b:is_posix") let b:current_syntax = "posix" else let b:current_syntax = "sh" endif " vim: ts=16 fdm=marker
SILENT KILLER Tool