/
usr
/
share
/
vim
/
vim82
/
syntax
/
/usr/share/vim/vim82/syntax
mkdir
upload
Name
Size
Mode
Actions
2html.vim
75419
0644
edit
dl
rm
8th.vim
28688
0644
edit
dl
rm
a2ps.vim
2426
0644
edit
dl
rm
a65.vim
6394
0644
edit
dl
rm
aap.vim
5697
0644
edit
dl
rm
abap.vim
9155
0644
edit
dl
rm
abaqus.vim
1094
0644
edit
dl
rm
abc.vim
1842
0644
edit
dl
rm
abel.vim
5114
0644
edit
dl
rm
acedb.vim
4871
0644
edit
dl
rm
ada.vim
13050
0644
edit
dl
rm
aflex.vim
4368
0644
edit
dl
rm
ahdl.vim
2771
0644
edit
dl
rm
aidl.vim
629
0644
edit
dl
rm
alsaconf.vim
1546
0644
edit
dl
rm
amiga.vim
2969
0644
edit
dl
rm
aml.vim
24137
0644
edit
dl
rm
ampl.vim
4108
0644
edit
dl
rm
ant.vim
5816
0644
edit
dl
rm
antlr.vim
1793
0644
edit
dl
rm
apache.vim
15374
0644
edit
dl
rm
apachestyle.vim
1417
0644
edit
dl
rm
aptconf.vim
22228
0644
edit
dl
rm
arch.vim
1149
0644
edit
dl
rm
arduino.vim
2031
0644
edit
dl
rm
art.vim
1297
0644
edit
dl
rm
asciidoc.vim
11146
0644
edit
dl
rm
asm.vim
6037
0644
edit
dl
rm
asm68k.vim
14280
0644
edit
dl
rm
asmh8300.vim
1718
0644
edit
dl
rm
asn.vim
2578
0644
edit
dl
rm
aspperl.vim
811
0644
edit
dl
rm
aspvbs.vim
9099
0644
edit
dl
rm
asterisk.vim
5629
0644
edit
dl
rm
asteriskvm.vim
2332
0644
edit
dl
rm
atlas.vim
2602
0644
edit
dl
rm
autodoc.vim
3730
0644
edit
dl
rm
autohotkey.vim
11861
0644
edit
dl
rm
autoit.vim
48014
0644
edit
dl
rm
automake.vim
3938
0644
edit
dl
rm
ave.vim
1900
0644
edit
dl
rm
avra.vim
2683
0644
edit
dl
rm
awk.vim
8191
0644
edit
dl
rm
ayacc.vim
2585
0644
edit
dl
rm
b.vim
4902
0644
edit
dl
rm
baan.vim
73595
0644
edit
dl
rm
bash.vim
371
0644
edit
dl
rm
basic.vim
8306
0644
edit
dl
rm
bc.vim
1791
0644
edit
dl
rm
bdf.vim
3841
0644
edit
dl
rm
bib.vim
6004
0644
edit
dl
rm
bindzone.vim
4906
0644
edit
dl
rm
blank.vim
794
0644
edit
dl
rm
bsdl.vim
377
0644
edit
dl
rm
bst.vim
2825
0644
edit
dl
rm
btm.vim
9285
0644
edit
dl
rm
bzl.vim
374
0644
edit
dl
rm
bzr.vim
1560
0644
edit
dl
rm
c.vim
27638
0644
edit
dl
rm
cabal.vim
7363
0644
edit
dl
rm
cabalconfig.vim
1179
0644
edit
dl
rm
cabalproject.vim
944
0644
edit
dl
rm
calendar.vim
5042
0644
edit
dl
rm
catalog.vim
921
0644
edit
dl
rm
cdl.vim
3092
0644
edit
dl
rm
cdrdaoconf.vim
3647
0644
edit
dl
rm
cdrtoc.vim
22756
0644
edit
dl
rm
cf.vim
18644
0644
edit
dl
rm
cfg.vim
1351
0644
edit
dl
rm
ch.vim
922
0644
edit
dl
rm
chaiscript.vim
2887
0644
edit
dl
rm
change.vim
901
0644
edit
dl
rm
changelog.vim
2097
0644
edit
dl
rm
chaskell.vim
333
0644
edit
dl
rm
cheetah.vim
1752
0644
edit
dl
rm
chicken.vim
2618
0644
edit
dl
rm
chill.vim
8024
0644
edit
dl
rm
chordpro.vim
2521
0644
edit
dl
rm
cl.vim
3905
0644
edit
dl
rm
clean.vim
3151
0644
edit
dl
rm
clipper.vim
5576
0644
edit
dl
rm
clojure.vim
46489
0644
edit
dl
rm
cmake.vim
42148
0644
edit
dl
rm
cmod.vim
6271
0644
edit
dl
rm
cmusrc.vim
12921
0644
edit
dl
rm
cobol.vim
13592
0644
edit
dl
rm
coco.vim
1300
0644
edit
dl
rm
colortest.vim
3201
0644
edit
dl
rm
conaryrecipe.vim
8036
0644
edit
dl
rm
conf.vim
799
0644
edit
dl
rm
config.vim
2074
0644
edit
dl
rm
context.vim
6199
0644
edit
dl
rm
cpp.vim
3584
0644
edit
dl
rm
crm.vim
1197
0644
edit
dl
rm
crontab.vim
2215
0644
edit
dl
rm
cs.vim
10947
0644
edit
dl
rm
csc.vim
8449
0644
edit
dl
rm
csdl.vim
23755
0644
edit
dl
rm
csh.vim
6460
0644
edit
dl
rm
csp.vim
7152
0644
edit
dl
rm
css.vim
32938
0644
edit
dl
rm
cterm.vim
6406
0644
edit
dl
rm
ctrlh.vim
688
0644
edit
dl
rm
cucumber.vim
31887
0644
edit
dl
rm
cuda.vim
2691
0644
edit
dl
rm
cupl.vim
3873
0644
edit
dl
rm
cuplsim.vim
1916
0644
edit
dl
rm
cvs.vim
882
0644
edit
dl
rm
cvsrc.vim
1254
0644
edit
dl
rm
cweb.vim
2892
0644
edit
dl
rm
cynlib.vim
2548
0644
edit
dl
rm
cynpp.vim
1263
0644
edit
dl
rm
d.vim
28631
0644
edit
dl
rm
dart.vim
3292
0644
edit
dl
rm
datascript.vim
3807
0644
edit
dl
rm
dcd.vim
1803
0644
edit
dl
rm
dcl.vim
6383
0644
edit
dl
rm
debchangelog.vim
3434
0644
edit
dl
rm
debcontrol.vim
8722
0644
edit
dl
rm
debcopyright.vim
1137
0644
edit
dl
rm
debsources.vim
2205
0644
edit
dl
rm
def.vim
1097
0644
edit
dl
rm
denyhosts.vim
7365
0644
edit
dl
rm
desc.vim
3077
0644
edit
dl
rm
desktop.vim
9348
0644
edit
dl
rm
dictconf.vim
3118
0644
edit
dl
rm
dictdconf.vim
6465
0644
edit
dl
rm
diff.vim
17420
0644
edit
dl
rm
dircolors.vim
6946
0644
edit
dl
rm
dirpager.vim
1787
0644
edit
dl
rm
diva.vim
4736
0644
edit
dl
rm
django.vim
3934
0644
edit
dl
rm
dns.vim
132
0644
edit
dl
rm
dnsmasq.vim
10067
0644
edit
dl
rm
docbk.vim
10321
0644
edit
dl
rm
docbksgml.vim
193
0644
edit
dl
rm
docbkxml.vim
191
0644
edit
dl
rm
dockerfile.vim
2474
0644
edit
dl
rm
dosbatch.vim
6260
0644
edit
dl
rm
dosini.vim
1266
0644
edit
dl
rm
dot.vim
3018
0644
edit
dl
rm
doxygen.vim
38914
0644
edit
dl
rm
dracula.vim
2668
0644
edit
dl
rm
dsl.vim
1312
0644
edit
dl
rm
dtd.vim
5007
0644
edit
dl
rm
dtml.vim
16613
0644
edit
dl
rm
dtrace.vim
6442
0644
edit
dl
rm
dts.vim
1210
0644
edit
dl
rm
dune.vim
1949
0644
edit
dl
rm
dylan.vim
3414
0644
edit
dl
rm
dylanintr.vim
1078
0644
edit
dl
rm
dylanlid.vim
664
0644
edit
dl
rm
ecd.vim
1229
0644
edit
dl
rm
edif.vim
1278
0644
edit
dl
rm
eiffel.vim
6926
0644
edit
dl
rm
elf.vim
2349
0644
edit
dl
rm
elinks.vim
10494
0644
edit
dl
rm
elm.vim
3651
0644
edit
dl
rm
elmfilt.vim
2893
0644
edit
dl
rm
erlang.vim
11134
0644
edit
dl
rm
eruby.vim
3299
0644
edit
dl
rm
esmtprc.vim
938
0644
edit
dl
rm
esqlc.vim
2094
0644
edit
dl
rm
esterel.vim
3053
0644
edit
dl
rm
eterm.vim
19172
0644
edit
dl
rm
euphoria3.vim
6103
0644
edit
dl
rm
euphoria4.vim
14537
0644
edit
dl
rm
eviews.vim
5004
0644
edit
dl
rm
exim.vim
18085
0644
edit
dl
rm
expect.vim
3734
0644
edit
dl
rm
exports.vim
1748
0644
edit
dl
rm
falcon.vim
12013
0644
edit
dl
rm
fan.vim
5445
0644
edit
dl
rm
fasm.vim
8757
0644
edit
dl
rm
fdcc.vim
5648
0644
edit
dl
rm
fetchmail.vim
3308
0644
edit
dl
rm
fgl.vim
7274
0644
edit
dl
rm
flexwiki.vim
5435
0644
edit
dl
rm
focexec.vim
3525
0644
edit
dl
rm
form.vim
6385
0644
edit
dl
rm
forth.vim
10670
0644
edit
dl
rm
fortran.vim
33054
0644
edit
dl
rm
foxpro.vim
32856
0644
edit
dl
rm
framescript.vim
11679
0644
edit
dl
rm
freebasic.vim
10835
0644
edit
dl
rm
fstab.vim
15902
0644
edit
dl
rm
fvwm.vim
25026
0644
edit
dl
rm
fvwm2m4.vim
711
0644
edit
dl
rm
gdb.vim
4366
0644
edit
dl
rm
gdmo.vim
3299
0644
edit
dl
rm
gedcom.vim
2275
0644
edit
dl
rm
gift.vim
10239
0644
edit
dl
rm
git.vim
4297
0644
edit
dl
rm
gitcommit.vim
5083
0644
edit
dl
rm
gitconfig.vim
1596
0644
edit
dl
rm
gitolite.vim
4454
0644
edit
dl
rm
gitrebase.vim
2950
0644
edit
dl
rm
gitsendemail.vim
580
0644
edit
dl
rm
gkrellmrc.vim
4116
0644
edit
dl
rm
gnash.vim
3462
0644
edit
dl
rm
gnuplot.vim
23662
0644
edit
dl
rm
go.vim
7904
0644
edit
dl
rm
godoc.vim
352
0644
edit
dl
rm
gp.vim
2965
0644
edit
dl
rm
gpg.vim
5591
0644
edit
dl
rm
gprof.vim
2117
0644
edit
dl
rm
grads.vim
1742
0644
edit
dl
rm
gretl.vim
3730
0644
edit
dl
rm
groff.vim
293
0644
edit
dl
rm
groovy.vim
22484
0644
edit
dl
rm
group.vim
1719
0644
edit
dl
rm
grub.vim
3882
0644
edit
dl
rm
gsp.vim
2031
0644
edit
dl
rm
gtkrc.vim
9318
0644
edit
dl
rm
haml.vim
7071
0644
edit
dl
rm
hamster.vim
13840
0644
edit
dl
rm
haskell.vim
9242
0644
edit
dl
rm
haste.vim
4994
0644
edit
dl
rm
hastepreproc.vim
1422
0644
edit
dl
rm
hb.vim
3158
0644
edit
dl
rm
help.vim
8388
0644
edit
dl
rm
help_ru.vim
3513
0644
edit
dl
rm
hercules.vim
5720
0644
edit
dl
rm
hex.vim
4011
0644
edit
dl
rm
hgcommit.vim
1114
0644
edit
dl
rm
hitest.vim
3643
0644
edit
dl
rm
hog.vim
12112
0644
edit
dl
rm
hollywood.vim
44450
0644
edit
dl
rm
hostconf.vim
3870
0644
edit
dl
rm
hostsaccess.vim
549
0644
edit
dl
rm
html.vim
18544
0644
edit
dl
rm
htmlcheetah.vim
488
0644
edit
dl
rm
htmldjango.vim
1011
0644
edit
dl
rm
htmlm4.vim
670
0644
edit
dl
rm
htmlos.vim
8313
0644
edit
dl
rm
ia64.vim
10472
0644
edit
dl
rm
ibasic.vim
7036
0644
edit
dl
rm
icemenu.vim
824
0644
edit
dl
rm
icon.vim
6976
0644
edit
dl
rm
idl.vim
19901
0644
edit
dl
rm
idlang.vim
13462
0644
edit
dl
rm
indent.vim
7171
0644
edit
dl
rm
inform.vim
19483
0644
edit
dl
rm
initex.vim
19224
0644
edit
dl
rm
initng.vim
3399
0644
edit
dl
rm
inittab.vim
2541
0644
edit
dl
rm
ipfilter.vim
1622
0644
edit
dl
rm
ishd.vim
27057
0644
edit
dl
rm
iss.vim
5030
0644
edit
dl
rm
ist.vim
2000
0644
edit
dl
rm
j.vim
9441
0644
edit
dl
rm
jal.vim
8963
0644
edit
dl
rm
jam.vim
26711
0644
edit
dl
rm
jargon.vim
740
0644
edit
dl
rm
java.vim
18581
0644
edit
dl
rm
javacc.vim
2256
0644
edit
dl
rm
javascript.vim
5616
0644
edit
dl
rm
javascriptreact.vim
133
0644
edit
dl
rm
jess.vim
6230
0644
edit
dl
rm
jgraph.vim
1212
0644
edit
dl
rm
jovial.vim
4107
0644
edit
dl
rm
jproperties.vim
5496
0644
edit
dl
rm
json.vim
6255
0644
edit
dl
rm
jsp.vim
2678
0644
edit
dl
rm
kconfig.vim
36304
0644
edit
dl
rm
kivy.vim
986
0644
edit
dl
rm
kix.vim
6329
0644
edit
dl
rm
kscript.vim
1985
0644
edit
dl
rm
kwt.vim
2454
0644
edit
dl
rm
lace.vim
4075
0644
edit
dl
rm
latte.vim
3511
0644
edit
dl
rm
ld.vim
2914
0644
edit
dl
rm
ldapconf.vim
13302
0644
edit
dl
rm
ldif.vim
1014
0644
edit
dl
rm
less.vim
4195
0644
edit
dl
rm
lex.vim
8651
0644
edit
dl
rm
lftp.vim
7471
0644
edit
dl
rm
lhaskell.vim
4936
0644
edit
dl
rm
libao.vim
636
0644
edit
dl
rm
lifelines.vim
6640
0644
edit
dl
rm
lilo.vim
10427
0644
edit
dl
rm
limits.vim
1317
0644
edit
dl
rm
liquid.vim
6184
0644
edit
dl
rm
lisp.vim
35894
0644
edit
dl
rm
lite.vim
4845
0644
edit
dl
rm
litestep.vim
6676
0644
edit
dl
rm
loginaccess.vim
4197
0644
edit
dl
rm
logindefs.vim
7537
0644
edit
dl
rm
logtalk.vim
16849
0644
edit
dl
rm
lotos.vim
2361
0644
edit
dl
rm
lout.vim
4326
0644
edit
dl
rm
lpc.vim
23138
0644
edit
dl
rm
lprolog.vim
3979
0644
edit
dl
rm
lscript.vim
12099
0644
edit
dl
rm
lsl.vim
15800
0644
edit
dl
rm
lss.vim
4870
0644
edit
dl
rm
lua.vim
14052
0644
edit
dl
rm
lynx.vim
6579
0644
edit
dl
rm
m4.vim
2693
0644
edit
dl
rm
mail.vim
6069
0644
edit
dl
rm
mailaliases.vim
2767
0644
edit
dl
rm
mailcap.vim
1135
0644
edit
dl
rm
make.vim
6199
0644
edit
dl
rm
mallard.vim
1726
0644
edit
dl
rm
man.vim
1680
0644
edit
dl
rm
manconf.vim
4344
0644
edit
dl
rm
manual.vim
909
0644
edit
dl
rm
maple.vim
28570
0644
edit
dl
rm
markdown.vim
9126
0644
edit
dl
rm
masm.vim
17245
0644
edit
dl
rm
mason.vim
3818
0644
edit
dl
rm
master.vim
1022
0644
edit
dl
rm
matlab.vim
4316
0644
edit
dl
rm
maxima.vim
18802
0644
edit
dl
rm
mel.vim
3406
0644
edit
dl
rm
meson.vim
4112
0644
edit
dl
rm
messages.vim
2715
0644
edit
dl
rm
mf.vim
15423
0644
edit
dl
rm
mgl.vim
3724
0644
edit
dl
rm
mgp.vim
2000
0644
edit
dl
rm
mib.vim
2696
0644
edit
dl
rm
mix.vim
2942
0644
edit
dl
rm
mma.vim
11799
0644
edit
dl
rm
mmix.vim
4969
0644
edit
dl
rm
mmp.vim
1486
0644
edit
dl
rm
modconf.vim
1419
0644
edit
dl
rm
model.vim
1469
0644
edit
dl
rm
modsim3.vim
3623
0644
edit
dl
rm
modula2.vim
3225
0644
edit
dl
rm
modula3.vim
2012
0644
edit
dl
rm
monk.vim
10219
0644
edit
dl
rm
moo.vim
9234
0644
edit
dl
rm
mp.vim
44530
0644
edit
dl
rm
mplayerconf.vim
7487
0644
edit
dl
rm
mrxvtrc.vim
9603
0644
edit
dl
rm
msidl.vim
3464
0644
edit
dl
rm
msmessages.vim
6318
0644
edit
dl
rm
msql.vim
2390
0644
edit
dl
rm
mupad.vim
15476
0644
edit
dl
rm
murphi.vim
4579
0644
edit
dl
rm
mush.vim
13187
0644
edit
dl
rm
muttrc.vim
65812
0644
edit
dl
rm
mysql.vim
17609
0644
edit
dl
rm
n1ql.vim
12899
0644
edit
dl
rm
named.vim
10005
0644
edit
dl
rm
nanorc.vim
10620
0644
edit
dl
rm
nasm.vim
26285
0644
edit
dl
rm
nastran.vim
8504
0644
edit
dl
rm
natural.vim
6977
0644
edit
dl
rm
ncf.vim
13416
0644
edit
dl
rm
neomuttrc.vim
65537
0644
edit
dl
rm
netrc.vim
1934
0644
edit
dl
rm
netrw.vim
7202
0644
edit
dl
rm
ninja.vim
2889
0644
edit
dl
rm
nosyntax.vim
755
0644
edit
dl
rm
nqc.vim
14068
0644
edit
dl
rm
nroff.vim
7779
0644
edit
dl
rm
nsis.vim
34057
0644
edit
dl
rm
obj.vim
2786
0644
edit
dl
rm
objc.vim
41764
0644
edit
dl
rm
objcpp.vim
600
0644
edit
dl
rm
ocaml.vim
16953
0644
edit
dl
rm
occam.vim
4316
0644
edit
dl
rm
omnimark.vim
6377
0644
edit
dl
rm
opam.vim
1403
0644
edit
dl
rm
openroad.vim
13979
0644
edit
dl
rm
opl.vim
4128
0644
edit
dl
rm
ora.vim
27141
0644
edit
dl
rm
pamconf.vim
5952
0644
edit
dl
rm
pamenv.vim
1135
0644
edit
dl
rm
papp.vim
3789
0644
edit
dl
rm
pascal.vim
15009
0644
edit
dl
rm
passwd.vim
2443
0644
edit
dl
rm
pbtxt.vim
1373
0644
edit
dl
rm
pcap.vim
1496
0644
edit
dl
rm
pccts.vim
4093
0644
edit
dl
rm
pdf.vim
3539
0644
edit
dl
rm
perl.vim
38473
0644
edit
dl
rm
perl6.vim
74130
0644
edit
dl
rm
pf.vim
10371
0644
edit
dl
rm
pfmain.vim
92737
0644
edit
dl
rm
php.vim
97885
0644
edit
dl
rm
phtml.vim
151
0644
edit
dl
rm
pic.vim
3333
0644
edit
dl
rm
pike.vim
21807
0644
edit
dl
rm
pilrc.vim
5311
0644
edit
dl
rm
pine.vim
15411
0644
edit
dl
rm
pinfo.vim
5296
0644
edit
dl
rm
plaintex.vim
10301
0644
edit
dl
rm
pli.vim
13222
0644
edit
dl
rm
plm.vim
5361
0644
edit
dl
rm
plp.vim
1267
0644
edit
dl
rm
plsql.vim
12918
0644
edit
dl
rm
po.vim
6393
0644
edit
dl
rm
pod.vim
7283
0644
edit
dl
rm
poke.vim
5189
0644
edit
dl
rm
postscr.vim
46133
0644
edit
dl
rm
pov.vim
9057
0644
edit
dl
rm
povini.vim
3488
0644
edit
dl
rm
ppd.vim
868
0644
edit
dl
rm
ppwiz.vim
2780
0644
edit
dl
rm
prescribe.vim
2383
0644
edit
dl
rm
privoxy.vim
3579
0644
edit
dl
rm
procmail.vim
2019
0644
edit
dl
rm
progress.vim
31748
0644
edit
dl
rm
prolog.vim
4494
0644
edit
dl
rm
promela.vim
1728
0644
edit
dl
rm
proto.vim
3543
0644
edit
dl
rm
protocols.vim
1429
0644
edit
dl
rm
psf.vim
4290
0644
edit
dl
rm
ptcap.vim
4128
0644
edit
dl
rm
purifylog.vim
3357
0644
edit
dl
rm
pyrex.vim
1663
0644
edit
dl
rm
python.vim
13082
0644
edit
dl
rm
qf.vim
596
0644
edit
dl
rm
quake.vim
8554
0644
edit
dl
rm
r.vim
14730
0644
edit
dl
rm
racc.vim
5619
0644
edit
dl
rm
radiance.vim
7155
0644
edit
dl
rm
raml.vim
4450
0644
edit
dl
rm
ratpoison.vim
17221
0644
edit
dl
rm
rc.vim
10217
0644
edit
dl
rm
rcs.vim
2133
0644
edit
dl
rm
rcslog.vim
557
0644
edit
dl
rm
readline.vim
17487
0644
edit
dl
rm
README.txt
1403
0644
edit
dl
rm
rebol.vim
7167
0644
edit
dl
rm
redif.vim
87942
0644
edit
dl
rm
registry.vim
3355
0644
edit
dl
rm
rego.vim
3832
0644
edit
dl
rm
remind.vim
2713
0644
edit
dl
rm
resolv.vim
6361
0644
edit
dl
rm
reva.vim
7583
0644
edit
dl
rm
rexx.vim
15331
0644
edit
dl
rm
rhelp.vim
12134
0644
edit
dl
rm
rib.vim
2192
0644
edit
dl
rm
rmd.vim
5382
0644
edit
dl
rm
rnc.vim
2263
0644
edit
dl
rm
rng.vim
817
0644
edit
dl
rm
rnoweb.vim
1909
0644
edit
dl
rm
robots.vim
1530
0644
edit
dl
rm
rpcgen.vim
1667
0644
edit
dl
rm
rpl.vim
25700
0644
edit
dl
rm
rrst.vim
1306
0644
edit
dl
rm
rst.vim
11779
0644
edit
dl
rm
rtf.vim
2331
0644
edit
dl
rm
ruby.vim
41112
0644
edit
dl
rm
rust.vim
16612
0644
edit
dl
rm
samba.vim
6131
0644
edit
dl
rm
sas.vim
34087
0644
edit
dl
rm
sass.vim
6263
0644
edit
dl
rm
sather.vim
3490
0644
edit
dl
rm
sbt.vim
880
0644
edit
dl
rm
scala.vim
11307
0644
edit
dl
rm
scheme.vim
19330
0644
edit
dl
rm
scilab.vim
3210
0644
edit
dl
rm
screen.vim
9104
0644
edit
dl
rm
scss.vim
526
0644
edit
dl
rm
sd.vim
2223
0644
edit
dl
rm
sdc.vim
1391
0644
edit
dl
rm
sdl.vim
6563
0644
edit
dl
rm
sed.vim
5033
0644
edit
dl
rm
sendpr.vim
905
0644
edit
dl
rm
sensors.vim
1513
0644
edit
dl
rm
services.vim
1823
0644
edit
dl
rm
setserial.vim
5229
0644
edit
dl
rm
sexplib.vim
3685
0644
edit
dl
rm
sgml.vim
8866
0644
edit
dl
rm
sgmldecl.vim
2041
0644
edit
dl
rm
sgmllnx.vim
1851
0644
edit
dl
rm
sh.vim
44261
0644
edit
dl
rm
sicad.vim
18475
0644
edit
dl
rm
sieve.vim
1671
0644
edit
dl
rm
sil.vim
8541
0644
edit
dl
rm
simula.vim
3371
0644
edit
dl
rm
sinda.vim
3666
0644
edit
dl
rm
sindacmp.vim
1274
0644
edit
dl
rm
sindaout.vim
1961
0644
edit
dl
rm
sisu.vim
22180
0644
edit
dl
rm
skill.vim
25769
0644
edit
dl
rm
sl.vim
4084
0644
edit
dl
rm
slang.vim
3302
0644
edit
dl
rm
slice.vim
2928
0644
edit
dl
rm
slpconf.vim
11791
0644
edit
dl
rm
slpreg.vim
5346
0644
edit
dl
rm
slpspi.vim
1181
0644
edit
dl
rm
slrnrc.vim
12811
0644
edit
dl
rm
slrnsc.vim
3098
0644
edit
dl
rm
sm.vim
2851
0644
edit
dl
rm
smarty.vim
2883
0644
edit
dl
rm
smcl.vim
12043
0644
edit
dl
rm
smil.vim
5616
0644
edit
dl
rm
smith.vim
793
0644
edit
dl
rm
sml.vim
9518
0644
edit
dl
rm
snnsnet.vim
2482
0644
edit
dl
rm
snnspat.vim
2228
0644
edit
dl
rm
snnsres.vim
1933
0644
edit
dl
rm
snobol4.vim
5334
0644
edit
dl
rm
spec.vim
12763
0644
edit
dl
rm
specman.vim
7345
0644
edit
dl
rm
spice.vim
2243
0644
edit
dl
rm
splint.vim
15786
0644
edit
dl
rm
spup.vim
13926
0644
edit
dl
rm
spyce.vim
4455
0644
edit
dl
rm
sql.vim
1120
0644
edit
dl
rm
sqlanywhere.vim
41929
0644
edit
dl
rm
sqlforms.vim
6734
0644
edit
dl
rm
sqlhana.vim
11027
0644
edit
dl
rm
sqlinformix.vim
5901
0644
edit
dl
rm
sqlj.vim
2970
0644
edit
dl
rm
sqloracle.vim
7649
0644
edit
dl
rm
sqr.vim
13012
0644
edit
dl
rm
squid.vim
6931
0644
edit
dl
rm
srec.vim
3815
0644
edit
dl
rm
sshconfig.vim
11441
0644
edit
dl
rm
sshdconfig.vim
12927
0644
edit
dl
rm
st.vim
2752
0644
edit
dl
rm
stata.vim
27056
0644
edit
dl
rm
stp.vim
5427
0644
edit
dl
rm
strace.vim
1970
0644
edit
dl
rm
sudoers.vim
24450
0644
edit
dl
rm
svg.vim
436
0644
edit
dl
rm
svn.vim
1852
0644
edit
dl
rm
swift.vim
8828
0644
edit
dl
rm
swiftgyb.vim
822
0644
edit
dl
rm
syncolor.vim
4139
0644
edit
dl
rm
synload.vim
2034
0644
edit
dl
rm
syntax.vim
1228
0644
edit
dl
rm
sysctl.vim
1153
0644
edit
dl
rm
systemd.vim
184
0644
edit
dl
rm
systemverilog.vim
3539
0644
edit
dl
rm
tads.vim
6862
0644
edit
dl
rm
tags.vim
1156
0644
edit
dl
rm
tak.vim
2920
0644
edit
dl
rm
takcmp.vim
1593
0644
edit
dl
rm
takout.vim
2000
0644
edit
dl
rm
tap.vim
4362
0644
edit
dl
rm
tar.vim
373
0644
edit
dl
rm
taskdata.vim
1207
0644
edit
dl
rm
taskedit.vim
1130
0644
edit
dl
rm
tasm.vim
5691
0644
edit
dl
rm
tcl.vim
17286
0644
edit
dl
rm
tcsh.vim
13269
0644
edit
dl
rm
template.vim
449
0644
edit
dl
rm
teraterm.vim
4980
0644
edit
dl
rm
terminfo.vim
4803
0644
edit
dl
rm
tex.vim
65043
0644
edit
dl
rm
texinfo.vim
25568
0644
edit
dl
rm
texmf.vim
2281
0644
edit
dl
rm
tf.vim
6904
0644
edit
dl
rm
tidy.vim
13559
0644
edit
dl
rm
tilde.vim
1539
0644
edit
dl
rm
tli.vim
1658
0644
edit
dl
rm
tmux.vim
5949
0644
edit
dl
rm
tpp.vim
3413
0644
edit
dl
rm
trasys.vim
5033
0644
edit
dl
rm
treetop.vim
3668
0644
edit
dl
rm
trustees.vim
1546
0644
edit
dl
rm
tsalt.vim
8325
0644
edit
dl
rm
tsscl.vim
5120
0644
edit
dl
rm
tssgm.vim
2787
0644
edit
dl
rm
tssop.vim
1785
0644
edit
dl
rm
tt2.vim
7923
0644
edit
dl
rm
tt2html.vim
516
0644
edit
dl
rm
tt2js.vim
522
0644
edit
dl
rm
typescript.vim
1423
0644
edit
dl
rm
typescriptcommon.vim
134384
0644
edit
dl
rm
typescriptreact.vim
3924
0644
edit
dl
rm
uc.vim
6634
0644
edit
dl
rm
udevconf.vim
1227
0644
edit
dl
rm
udevperm.vim
2409
0644
edit
dl
rm
udevrules.vim
6960
0644
edit
dl
rm
uil.vim
2821
0644
edit
dl
rm
updatedb.vim
1220
0644
edit
dl
rm
upstart.vim
3151
0644
edit
dl
rm
upstreamdat.vim
14048
0644
edit
dl
rm
upstreaminstalllog.vim
971
0644
edit
dl
rm
upstreamlog.vim
2620
0644
edit
dl
rm
upstreamrpt.vim
14197
0644
edit
dl
rm
usserverlog.vim
3118
0644
edit
dl
rm
usw2kagtlog.vim
2702
0644
edit
dl
rm
valgrind.vim
3216
0644
edit
dl
rm
vb.vim
20299
0644
edit
dl
rm
vera.vim
19552
0644
edit
dl
rm
verilog.vim
5055
0644
edit
dl
rm
verilogams.vim
6083
0644
edit
dl
rm
vgrindefs.vim
1214
0644
edit
dl
rm
vhdl.vim
9658
0644
edit
dl
rm
vim.vim
74949
0644
edit
dl
rm
viminfo.vim
1241
0644
edit
dl
rm
virata.vim
11613
0644
edit
dl
rm
vmasm.vim
8512
0644
edit
dl
rm
voscm.vim
6975
0644
edit
dl
rm
vrml.vim
12788
0644
edit
dl
rm
vroom.vim
3492
0644
edit
dl
rm
vsejcl.vim
1004
0644
edit
dl
rm
vue.vim
433
0644
edit
dl
rm
wast.vim
3926
0644
edit
dl
rm
wdiff.vim
716
0644
edit
dl
rm
web.vim
1114
0644
edit
dl
rm
webmacro.vim
3130
0644
edit
dl
rm
wget.vim
3961
0644
edit
dl
rm
whitespace.vim
357
0644
edit
dl
rm
winbatch.vim
12152
0644
edit
dl
rm
wml.vim
5731
0644
edit
dl
rm
wsh.vim
1242
0644
edit
dl
rm
wsml.vim
5400
0644
edit
dl
rm
wvdial.vim
1093
0644
edit
dl
rm
xbl.vim
568
0644
edit
dl
rm
xdefaults.vim
5887
0644
edit
dl
rm
xf86conf.vim
14725
0644
edit
dl
rm
xhtml.vim
186
0644
edit
dl
rm
xinetd.vim
14208
0644
edit
dl
rm
xkb.vim
3313
0644
edit
dl
rm
xmath.vim
10831
0644
edit
dl
rm
xml.vim
9129
0644
edit
dl
rm
xmodmap.vim
46511
0644
edit
dl
rm
xpm.vim
4403
0644
edit
dl
rm
xpm2.vim
4697
0644
edit
dl
rm
xquery.vim
7191
0644
edit
dl
rm
xs.vim
246745
0644
edit
dl
rm
xsd.vim
2125
0644
edit
dl
rm
xslt.vim
2654
0644
edit
dl
rm
xxd.vim
767
0644
edit
dl
rm
yacc.vim
5656
0644
edit
dl
rm
yaml.vim
12874
0644
edit
dl
rm
z8a.vim
2894
0644
edit
dl
rm
zimbu.vim
6446
0644
edit
dl
rm
zsh.vim
25170
0644
edit
dl
rm
Edit:
/usr/share/vim/vim82/syntax/sh.vim
(44261B)
" Vim syntax file " Language: shell (sh) Korn shell (ksh) bash (sh) " Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM> " Previous Maintainer: Lennart Schultz <Lennart.Schultz@ecmwf.int> " Last Change: Nov 24, 2020 " Version: 196 " 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) and heredoc fixes from Felipe Contreras " 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_dash = 1 elseif !exists("g:is_kornshell") && !exists("g:is_bash") && !exists("g:is_posix") && !exists("g:is_sh") && !exists("g:is_dash") 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_dash = 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") && !exists("b:is_dash") 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 elseif exists("g:is_dash") let b:is_dash= 1 if exists("b:is_sh") unlet b:is_sh endif else let b:is_sh= 1 endif endif " if b:is_dash, set b:is_posix too if exists("b:is_dash") let b:is_posix= 1 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 (v:version == 704 && has("patch-7.4.1142")) || v:version > 704 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,shFunctionKey,shFunctionOne,shFunctionTwo syn cluster shArithList contains=@shArithParenList,shParenError syn cluster shCaseEsacList contains=shCaseStart,shCaseLabel,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial,shCaseRange syn cluster shCaseList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSubBQ,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq if exists("b:is_kornshell") || exists("b:is_bash") syn cluster shCaseList add=shForPP endif syn cluster shCommandSubList contains=shAlias,shArithmetic,shCmdParenRegion,shCommandSub,shComment,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 " COMBAK: removing shEscape fromshDblQuoteList fails ksh04:43 syn cluster shDblQuoteList contains=shArithmetic,shCommandSub,shCommandSubBQ,shDeref,shDerefSimple,shPosnParm,shCtrlSeq,shSpecial,shSpecialDQ syn cluster shDerefList contains=shDeref,shDerefSimple,shDerefVar,shDerefSpecial,shDerefWordError,shDerefPSR,shDerefPPS syn cluster shDerefVarList contains=shDerefOffset,shDerefOp,shDerefVarArray,shDerefOpError syn cluster shEchoList contains=shArithmetic,shCommandSub,shCommandSubBQ,shDeref,shDerefSimple,shEscape,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,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,shDblBrace,shDblParen,shForPP endif syn cluster shHereBeginList contains=@shCommandSubList syn cluster shHereList contains=shBeginHere,shHerePayload syn cluster shHereListDQ contains=shBeginHere,@shDblQuoteList,shHerePayload syn cluster shIdList contains=shCommandSub,shCommandSubBQ,shWrapLineOperator,shSetOption,shComment,shDeref,shDerefSimple,shHereString,shNumber,shOperator,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,shIf,shOption,shSet,shTest,shTestOpr,shTouch if exists("b:is_kornshell") || exists("b:is_bash") syn cluster shLoopoList add=shForPP endif syn cluster shPPSLeftList contains=shAlias,shArithmetic,shCmdParenRegion,shCommandSub,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shEcho,shEscape,shExDoubleQuote,shExpr,shExSingleQuote,shHereDoc,shNumber,shOperator,shOption,shPosnParm,shHereString,shRedir,shSingleQuote,shSpecial,shStatement,shSubSh,shTest,shVariable syn cluster shPPSRightList contains=shComment,shDeref,shDerefSimple,shEscape,shPosnParm syn cluster shSubShList contains=@shCommandSubList,shCommandSubBQ,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shIf,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq,shOperator syn cluster shTestList contains=shArithmetic,shCharClass,shCommandSub,shCommandSubBQ,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shSpecialDQ,shExDoubleQuote,shExpr,shExSingleQuote,shNumber,shOperator,shSingleQuote,shTest,shTestOpr syn cluster shNoZSList contains=shSpecialNoZS syn cluster shForList contains=shTestOpr,shNumber,shDerefSimple,shDeref,shCommandSub,shCommandSubBQ,shArithmetic " 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="#"me=e-1 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="#"me=e-1 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 if exists("b:is_kornshell") || exists("b:is_bash") ShFoldIfDoFor syn region shForPP matchgroup=shLoop start='\<for\>\_s*((' end='))' contains=@shForList endif 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 syn match shCaseLabel contained skipwhite "\%(\\.\|[-a-zA-Z0-9_*.]\)\+" contains=shCharClass 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 shCommandSubBQ start="`" skip="\\\\\|\\." end="`" contains=shBQComment,@shCommandSubList "COMBAK: see ksh13:50 "syn match shEscape contained '\%(^\)\@!\%(\\\\\)*\\.' nextgroup=shSingleQuote,shDoubleQuote,shComment "COMBAK: see sh11:27 syn match shEscape contained '\%(^\)\@!\%(\\\\\)*\\.' nextgroup=shComment "COMBAK: see ksh13:53 "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,shSpecialSQ syn region shDoubleQuote matchgroup=shQuote start=+\%(\%(\\\\\)*\\\)\@<!"+ skip=+\\.+ end=+"+ contains=@shDblQuoteList,shStringSpecial,@Spell nextgroup=shSpecialStart syn region shDoubleQuote matchgroup=shQuote start=+"+ matchgroup=shSpecial skip=+\\"+ matchgroup=shQuote end=+"+ contained contains=@shDblQuoteList,shStringSpecial,@Spell nextgroup=shSpecialStart syn match shStringSpecial "[^[:print:] \t]" contained syn match shStringSpecial "[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]" nextgroup=shComment syn match shSpecialSQ "[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]" contained nextgroup=shBkslshSnglQuote,@shNoZSList syn match shSpecialDQ "[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]" contained nextgroup=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 nextgroup=shSpecialStart "syn region shBkslshDblQuote contained matchgroup=shQuote start=+"+ skip=+\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial,@Spell nextgroup=shSpecialStart " 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 "#.*$" syn match shBQComment contained "#.\{-}\ze`" contains=@shCommentGroup " Here Documents: {{{1 " ========================================= ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc01 start="<<\s*\z([^ \t|>]\+\)" matchgroup=shHereDoc01 end="^\z1\s*$" contains=@shDblQuoteList ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc02 start="<<-\s*\z([^ \t|>]\+\)" matchgroup=shHereDoc02 end="^\s*\z1\s*$" contains=@shDblQuoteList ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc03 start="<<\s*\\\z([^ \t|>]\+\)" matchgroup=shHereDoc03 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc04 start="<<-\s*\\\z([^ \t|>]\+\)" matchgroup=shHereDoc04 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc05 start="<<\s*'\z([^']\+\)'" matchgroup=shHereDoc05 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc06 start="<<-\s*'\z([^']\+\)'" matchgroup=shHereDoc06 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc07 start="<<\s*\"\z([^"]\+\)\"" matchgroup=shHereDoc07 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc08 start="<<-\s*\"\z([^"]\+\)\"" matchgroup=shHereDoc08 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc09 start="<<\s*\\\_$\_s*\z([^ \t|>]\+\)" matchgroup=shHereDoc09 end="^\z1\s*$" contains=@shDblQuoteList ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc10 start="<<-\s*\\\_$\_s*\z([^ \t|>]\+\)" matchgroup=shHereDoc10 end="^\s*\z1\s*$" contains=@shDblQuoteList ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc11 start="<<\s*\\\_$\_s*\\\z([^ \t|>]\+\)" matchgroup=shHereDoc11 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc12 start="<<-\s*\\\_$\_s*\\\z([^ \t|>]\+\)" matchgroup=shHereDoc12 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc13 start="<<\s*\\\_$\_s*'\z([^']\+\)'" matchgroup=shHereDoc13 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc14 start="<<-\s*\\\_$\_s*'\z([^']\+\)'" matchgroup=shHereDoc14 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc15 start="<<\s*\\\_$\_s*\"\z([^"]\+\)\"" matchgroup=shHereDoc15 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc16 start="<<-\s*\\\_$\_s*\"\z([^"]\+\)\"" matchgroup=shHereDoc16 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 "\<\h\w*\ze=" nextgroup=shVarAssign syn match shVarAssign "=" contained nextgroup=shCmdParenRegion,shPattern,shDeref,shDerefSimple,shDoubleQuote,shExDoubleQuote,shSingleQuote,shExSingleQuote,shVar syn match shVar contained "\h\w*" syn region shAtExpr contained start="@(" end=")" contains=@shIdList if exists("b:is_bash") syn match shSet "^\s*set\ze\s\+$" syn region shSetList oneline matchgroup=shSet start="\<\%(declare\|local\|export\)\>\ze[/a-zA-Z_]\@!" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+#\|=" contains=@shIdList syn region shSetList oneline matchgroup=shSet start="\<\%(set\|unset\)\>[/a-zA-Z_]\@!" end="\ze[;|#)]\|$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+=" contains=@shIdList nextgroup=shComment elseif exists("b:is_kornshell") || exists("b:is_posix") syn match shSet "^\s*set\ze\s\+$" if exists("b:is_dash") syn region shSetList oneline matchgroup=shSet start="\<\%(local\)\>\ze[/]\@!" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList endif syn region shSetList oneline matchgroup=shSet start="\<\(export\)\>\ze[/]\@!" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList syn region shSetList oneline matchgroup=shSet start="\<\%(set\|unset\>\)\ze[/a-zA-Z_]\@!" end="\ze[;|#)]\|$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList nextgroup=shComment else syn region shSetList oneline matchgroup=shSet start="\<\(set\|export\|unset\)\>\ze[/a-zA-Z_]\@!" end="\ze[;|#)]\|$" 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 nextgroup=shSpecialStart syn match shDerefSimple "\$[-#*@!?]" nextgroup=@shNoZSList syn match shDerefSimple "\$\$" nextgroup=@shNoZSList syn match shDerefSimple "\${\d}" nextgroup=@shNoZSList nextgroup=shSpecialStart if exists("b:is_bash") || exists("b:is_kornshell") || exists("b:is_posix") syn region shDeref matchgroup=PreProc start="\${##\=" end="}" contains=@shDerefList nextgroup=@shSpecialNoZS,shSpecialStart syn region shDeref matchgroup=PreProc start="\${\$\$" end="}" contains=@shDerefList nextgroup=@shSpecialNoZS,shSpecialStart 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,shDerefOffset 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,shDerefOffset,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 " bash : ${@:start:qty} display command line arguments from start to start+qty-1 (inferred) 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") || exists("b:is_kornshell") || exists("b:is_posix") " bash ksh posix : ${parameter:offset} " bash ksh posix : ${parameter:offset:length} syn region shDerefOffset contained start=':[^-=?+]' end='\ze:' end='\ze}' contains=shDeref,shDerefSimple,shDerefEscape nextgroup=shDerefLen,shDeref,shDerefSimple syn region shDerefOffset contained start=':\s-' end='\ze:' end='\ze}' contains=shDeref,shDerefSimple,shDerefEscape nextgroup=shDerefLen,shDeref,shDerefSimple syn match shDerefLen contained ":[^}]\+" contains=shDeref,shDerefSimple,shArithmetic endif if exists("b:is_bash") " 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}' end='"' nextgroup=shDerefPPSright contains=@shPPSLeftList syn region shDerefPPSright contained start='.' skip=@\%(\\\\\)\+@ end='\ze}' contains=@shPPSRightList " bash : ${parameter/#substring/replacement} syn match shDerefPSR contained '/#' nextgroup=shDerefPSRleft,shDoubleQuote,shSingleQuote 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 " Additional 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 " Additional ksh Keywords and Aliases: {{{1 " =================================== if exists("b:is_kornshell") || exists("b:is_posix") syn keyword shStatement bg builtin disown enum export false fg getconf getopts hist jobs let printf sleep true unalias whence syn keyword shStatement typeset skipwhite nextgroup=shSetOption syn keyword shStatement autoload compound fc float functions hash history integer nameref nohup r redirect source stop suspend times type if exists("b:is_posix") syn keyword shStatement command else syn keyword shStatement time endif " Additional bash Keywords: {{{1 " ===================== elseif exists("b:is_bash") syn keyword shStatement bg builtin disown export false fg getopts jobs let printf sleep true unalias syn keyword shStatement typeset nextgroup=shSetOption syn keyword shStatement fc hash history source suspend times type syn keyword shStatement bind builtin caller compopt declare dirs disown enable export help logout mapfile popd pushd readarray shopt source typeset else syn keyword shStatement login newgrp 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 shBkslshSnglQuote shSingleQuote hi def link shBkslshDblQuote shDOubleQuote 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 shBQComment 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 shDerefOffset shDerefOp hi def link shDerefLen shDerefOffset 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 shCommandSubBQ shCommandSub 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 shSpecialDQ Special hi def link shSpecialSQ 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 hi def link shHereDoc16 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
Save
cmd:
run