Linux jobworks 6.8.0-136-generic #136-Ubuntu SMP PREEMPT_DYNAMIC Wed Jul 1 21:53:05 UTC 2026 x86_64
Apache/2.4.58 (Ubuntu)
Server IP : 10.0.1.5 & Your IP : 216.73.217.52
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
share /
vim /
vim91 /
ftplugin /
Delete
Unzip
Name
Size
Permission
Date
Action
8th.vim
833
B
-rw-r--r--
2026-07-13 17:17
a2ps.vim
470
B
-rw-r--r--
2026-07-13 17:17
aap.vim
1.02
KB
-rw-r--r--
2026-07-13 17:17
abap.vim
955
B
-rw-r--r--
2026-07-13 17:17
abaqus.vim
4
KB
-rw-r--r--
2026-07-13 17:17
ada.vim
6.35
KB
-rw-r--r--
2026-07-13 17:17
alsaconf.vim
438
B
-rw-r--r--
2026-07-13 17:17
ant.vim
1.27
KB
-rw-r--r--
2026-07-13 17:17
apache.vim
361
B
-rw-r--r--
2026-07-13 17:17
arch.vim
431
B
-rw-r--r--
2026-07-13 17:17
art.vim
509
B
-rw-r--r--
2026-07-13 17:17
asm.vim
372
B
-rw-r--r--
2026-07-13 17:17
aspvbs.vim
1.83
KB
-rw-r--r--
2026-07-13 17:17
automake.vim
337
B
-rw-r--r--
2026-07-13 17:17
awk.vim
1.57
KB
-rw-r--r--
2026-07-13 17:17
bash.vim
504
B
-rw-r--r--
2026-07-13 17:17
basic.vim
2.02
KB
-rw-r--r--
2026-07-13 17:17
bdf.vim
449
B
-rw-r--r--
2026-07-13 17:17
bitbake.vim
375
B
-rw-r--r--
2026-07-13 17:17
bst.vim
333
B
-rw-r--r--
2026-07-13 17:17
btm.vim
382
B
-rw-r--r--
2026-07-13 17:17
bzl.vim
3.22
KB
-rw-r--r--
2026-07-13 17:17
c.vim
2.32
KB
-rw-r--r--
2026-07-13 17:17
calendar.vim
462
B
-rw-r--r--
2026-07-13 17:17
cdrdaoconf.vim
383
B
-rw-r--r--
2026-07-13 17:17
cfg.vim
388
B
-rw-r--r--
2026-07-13 17:17
ch.vim
472
B
-rw-r--r--
2026-07-13 17:17
changelog.vim
9.28
KB
-rw-r--r--
2026-07-13 17:17
chatito.vim
383
B
-rw-r--r--
2026-07-13 17:17
chicken.vim
1.68
KB
-rw-r--r--
2026-07-13 17:17
clojure.vim
3.24
KB
-rw-r--r--
2026-07-13 17:17
cmake.vim
867
B
-rw-r--r--
2026-07-13 17:17
cobol.vim
9.35
KB
-rw-r--r--
2026-07-13 17:17
conf.vim
434
B
-rw-r--r--
2026-07-13 17:17
config.vim
1.21
KB
-rw-r--r--
2026-07-13 17:17
confini.vim
206
B
-rw-r--r--
2026-07-13 17:17
context.vim
4.34
KB
-rw-r--r--
2026-07-13 17:17
corn.vim
457
B
-rw-r--r--
2026-07-13 17:17
cpp.vim
534
B
-rw-r--r--
2026-07-13 17:17
crm.vim
414
B
-rw-r--r--
2026-07-13 17:17
crontab.vim
361
B
-rw-r--r--
2026-07-13 17:17
cs.vim
1.47
KB
-rw-r--r--
2026-07-13 17:17
csc.vim
697
B
-rw-r--r--
2026-07-13 17:17
csh.vim
1.75
KB
-rw-r--r--
2026-07-13 17:17
css.vim
586
B
-rw-r--r--
2026-07-13 17:17
cucumber.vim
5.07
KB
-rw-r--r--
2026-07-13 17:17
cvsrc.vim
399
B
-rw-r--r--
2026-07-13 17:17
debchangelog.vim
11.71
KB
-rw-r--r--
2026-07-13 17:17
debcontrol.vim
1.8
KB
-rw-r--r--
2026-07-13 17:17
debsources.vim
470
B
-rw-r--r--
2026-07-13 17:17
denyhosts.vim
383
B
-rw-r--r--
2026-07-13 17:17
desktop.vim
300
B
-rw-r--r--
2026-07-13 17:17
dictconf.vim
434
B
-rw-r--r--
2026-07-13 17:17
dictdconf.vim
435
B
-rw-r--r--
2026-07-13 17:17
diff.vim
743
B
-rw-r--r--
2026-07-13 17:17
dircolors.vim
431
B
-rw-r--r--
2026-07-13 17:17
docbk.vim
530
B
-rw-r--r--
2026-07-13 17:17
dockerfile.vim
356
B
-rw-r--r--
2026-07-13 17:17
dosbatch.vim
1.19
KB
-rw-r--r--
2026-07-13 17:17
dosini.vim
459
B
-rw-r--r--
2026-07-13 17:17
dtd.vim
1.06
KB
-rw-r--r--
2026-07-13 17:17
dtrace.vim
1.12
KB
-rw-r--r--
2026-07-13 17:17
dune.vim
618
B
-rw-r--r--
2026-07-13 17:17
eiffel.vim
3.99
KB
-rw-r--r--
2026-07-13 17:17
elinks.vim
436
B
-rw-r--r--
2026-07-13 17:17
elixir.vim
980
B
-rw-r--r--
2026-07-13 17:17
elm.vim
369
B
-rw-r--r--
2026-07-13 17:17
erlang.vim
3.2
KB
-rw-r--r--
2026-07-13 17:17
eruby.vim
4.66
KB
-rw-r--r--
2026-07-13 17:17
eterm.vim
470
B
-rw-r--r--
2026-07-13 17:17
expect.vim
503
B
-rw-r--r--
2026-07-13 17:17
falcon.vim
1.32
KB
-rw-r--r--
2026-07-13 17:17
fennel.vim
603
B
-rw-r--r--
2026-07-13 17:17
fetchmail.vim
397
B
-rw-r--r--
2026-07-13 17:17
fish.vim
483
B
-rw-r--r--
2026-07-13 17:17
flexwiki.vim
1.83
KB
-rw-r--r--
2026-07-13 17:17
forth.vim
1.84
KB
-rw-r--r--
2026-07-13 17:17
fortran.vim
5.56
KB
-rw-r--r--
2026-07-13 17:17
fpcmake.vim
592
B
-rw-r--r--
2026-07-13 17:17
framescript.vim
780
B
-rw-r--r--
2026-07-13 17:17
freebasic.vim
2.52
KB
-rw-r--r--
2026-07-13 17:17
fstab.vim
426
B
-rw-r--r--
2026-07-13 17:17
fvwm.vim
390
B
-rw-r--r--
2026-07-13 17:17
gdb.vim
293
B
-rw-r--r--
2026-07-13 17:17
gdscript.vim
1.59
KB
-rw-r--r--
2026-07-13 17:17
gdshader.vim
309
B
-rw-r--r--
2026-07-13 17:17
git.vim
305
B
-rw-r--r--
2026-07-13 17:17
gitattributes.vim
278
B
-rw-r--r--
2026-07-13 17:17
gitcommit.vim
2.03
KB
-rw-r--r--
2026-07-13 17:17
gitconfig.vim
376
B
-rw-r--r--
2026-07-13 17:17
gitignore.vim
274
B
-rw-r--r--
2026-07-13 17:17
gitrebase.vim
1.75
KB
-rw-r--r--
2026-07-13 17:17
gitsendemail.vim
157
B
-rw-r--r--
2026-07-13 17:17
go.vim
365
B
-rw-r--r--
2026-07-13 17:17
gpg.vim
1.1
KB
-rw-r--r--
2026-07-13 17:17
gprof.vim
1.09
KB
-rw-r--r--
2026-07-13 17:17
groovy.vim
343
B
-rw-r--r--
2026-07-13 17:17
group.vim
425
B
-rw-r--r--
2026-07-13 17:17
grub.vim
434
B
-rw-r--r--
2026-07-13 17:17
gyp.vim
311
B
-rw-r--r--
2026-07-13 17:17
haml.vim
1.94
KB
-rw-r--r--
2026-07-13 17:17
hamster.vim
1.92
KB
-rw-r--r--
2026-07-13 17:17
hare.vim
793
B
-rw-r--r--
2026-07-13 17:17
haskell.vim
573
B
-rw-r--r--
2026-07-13 17:17
heex.vim
830
B
-rw-r--r--
2026-07-13 17:17
help.vim
471
B
-rw-r--r--
2026-07-13 17:17
hgcommit.vim
363
B
-rw-r--r--
2026-07-13 17:17
hog.vim
1.36
KB
-rw-r--r--
2026-07-13 17:17
hostconf.vim
383
B
-rw-r--r--
2026-07-13 17:17
hostsaccess.vim
436
B
-rw-r--r--
2026-07-13 17:17
html.vim
1.7
KB
-rw-r--r--
2026-07-13 17:17
htmldjango.vim
331
B
-rw-r--r--
2026-07-13 17:17
i3config.vim
333
B
-rw-r--r--
2026-07-13 17:17
icon.vim
958
B
-rw-r--r--
2026-07-13 17:17
indent.vim
487
B
-rw-r--r--
2026-07-13 17:17
initex.vim
1005
B
-rw-r--r--
2026-07-13 17:17
ishd.vim
1.47
KB
-rw-r--r--
2026-07-13 17:17
j.vim
3.46
KB
-rw-r--r--
2026-07-13 17:17
java.vim
1.61
KB
-rw-r--r--
2026-07-13 17:17
javascript.vim
2.54
KB
-rw-r--r--
2026-07-13 17:17
javascriptreact.vim
244
B
-rw-r--r--
2026-07-13 17:17
jproperties.vim
292
B
-rw-r--r--
2026-07-13 17:17
json.vim
360
B
-rw-r--r--
2026-07-13 17:17
json5.vim
718
B
-rw-r--r--
2026-07-13 17:17
jsonc.vim
677
B
-rw-r--r--
2026-07-13 17:17
jsonnet.vim
431
B
-rw-r--r--
2026-07-13 17:17
jsp.vim
1.93
KB
-rw-r--r--
2026-07-13 17:17
julia.vim
3.7
KB
-rw-r--r--
2026-07-13 17:17
kconfig.vim
703
B
-rw-r--r--
2026-07-13 17:17
kotlin.vim
968
B
-rw-r--r--
2026-07-13 17:17
kwt.vim
851
B
-rw-r--r--
2026-07-13 17:17
ld.vim
470
B
-rw-r--r--
2026-07-13 17:17
less.vim
502
B
-rw-r--r--
2026-07-13 17:17
lftp.vim
434
B
-rw-r--r--
2026-07-13 17:17
libao.vim
440
B
-rw-r--r--
2026-07-13 17:17
limits.vim
436
B
-rw-r--r--
2026-07-13 17:17
liquid.vim
1.85
KB
-rw-r--r--
2026-07-13 17:17
lisp.vim
759
B
-rw-r--r--
2026-07-13 17:17
livebook.vim
270
B
-rw-r--r--
2026-07-13 17:17
logcheck.vim
451
B
-rw-r--r--
2026-07-13 17:17
loginaccess.vim
442
B
-rw-r--r--
2026-07-13 17:17
logindefs.vim
440
B
-rw-r--r--
2026-07-13 17:17
logtalk.dict
3.12
KB
-rw-r--r--
2026-07-13 17:17
logtalk.vim
416
B
-rw-r--r--
2026-07-13 17:17
lprolog.vim
1.62
KB
-rw-r--r--
2026-07-13 17:17
lua.vim
1.34
KB
-rw-r--r--
2026-07-13 17:17
luau.vim
225
B
-rw-r--r--
2026-07-13 17:17
lynx.vim
724
B
-rw-r--r--
2026-07-13 17:17
m3build.vim
539
B
-rw-r--r--
2026-07-13 17:17
m3quake.vim
957
B
-rw-r--r--
2026-07-13 17:17
m4.vim
426
B
-rw-r--r--
2026-07-13 17:17
mail.vim
1.42
KB
-rw-r--r--
2026-07-13 17:17
mailaliases.vim
383
B
-rw-r--r--
2026-07-13 17:17
mailcap.vim
434
B
-rw-r--r--
2026-07-13 17:17
make.vim
1.1
KB
-rw-r--r--
2026-07-13 17:17
man.vim
2.13
KB
-rw-r--r--
2026-07-13 17:17
manconf.vim
444
B
-rw-r--r--
2026-07-13 17:17
markdown.vim
2.81
KB
-rw-r--r--
2026-07-13 17:17
masm.vim
1
KB
-rw-r--r--
2026-07-13 17:17
matlab.vim
835
B
-rw-r--r--
2026-07-13 17:17
mermaid.vim
1.69
KB
-rw-r--r--
2026-07-13 17:17
meson.vim
1.12
KB
-rw-r--r--
2026-07-13 17:17
mf.vim
3.46
KB
-rw-r--r--
2026-07-13 17:17
mma.vim
366
B
-rw-r--r--
2026-07-13 17:17
modconf.vim
1.17
KB
-rw-r--r--
2026-07-13 17:17
modula2.vim
1.38
KB
-rw-r--r--
2026-07-13 17:17
modula3.vim
1.16
KB
-rw-r--r--
2026-07-13 17:17
mp.vim
3.8
KB
-rw-r--r--
2026-07-13 17:17
mplayerconf.vim
472
B
-rw-r--r--
2026-07-13 17:17
mrxvtrc.vim
798
B
-rw-r--r--
2026-07-13 17:17
msmessages.vim
1.11
KB
-rw-r--r--
2026-07-13 17:17
muttrc.vim
1.14
KB
-rw-r--r--
2026-07-13 17:17
nanorc.vim
447
B
-rw-r--r--
2026-07-13 17:17
neomuttrc.vim
532
B
-rw-r--r--
2026-07-13 17:17
netrc.vim
480
B
-rw-r--r--
2026-07-13 17:17
nginx.vim
251
B
-rw-r--r--
2026-07-13 17:17
nix.vim
388
B
-rw-r--r--
2026-07-13 17:17
nroff.vim
424
B
-rw-r--r--
2026-07-13 17:17
nsis.vim
1.31
KB
-rw-r--r--
2026-07-13 17:17
objc.vim
362
B
-rw-r--r--
2026-07-13 17:17
objdump.vim
271
B
-rw-r--r--
2026-07-13 17:17
obse.vim
1.61
KB
-rw-r--r--
2026-07-13 17:17
ocaml.vim
23.2
KB
-rw-r--r--
2026-07-13 17:17
occam.vim
1.27
KB
-rw-r--r--
2026-07-13 17:17
octave.vim
2.15
KB
-rw-r--r--
2026-07-13 17:17
openvpn.vim
307
B
-rw-r--r--
2026-07-13 17:17
pamconf.vim
433
B
-rw-r--r--
2026-07-13 17:17
pascal.vim
1.51
KB
-rw-r--r--
2026-07-13 17:17
passwd.vim
424
B
-rw-r--r--
2026-07-13 17:17
pbtxt.vim
478
B
-rw-r--r--
2026-07-13 17:17
pdf.vim
2.55
KB
-rw-r--r--
2026-07-13 17:17
perl.vim
3.77
KB
-rw-r--r--
2026-07-13 17:17
php.vim
5.26
KB
-rw-r--r--
2026-07-13 17:17
pinfo.vim
435
B
-rw-r--r--
2026-07-13 17:17
plaintex.vim
1.12
KB
-rw-r--r--
2026-07-13 17:17
pod.vim
2.23
KB
-rw-r--r--
2026-07-13 17:17
poefilter.vim
283
B
-rw-r--r--
2026-07-13 17:17
poke.vim
744
B
-rw-r--r--
2026-07-13 17:17
postscr.vim
1006
B
-rw-r--r--
2026-07-13 17:17
procmail.vim
479
B
-rw-r--r--
2026-07-13 17:17
prolog.vim
440
B
-rw-r--r--
2026-07-13 17:17
protocols.vim
457
B
-rw-r--r--
2026-07-13 17:17
ps1.vim
2.36
KB
-rw-r--r--
2026-07-13 17:17
ps1xml.vim
1009
B
-rw-r--r--
2026-07-13 17:17
pymanifest.vim
277
B
-rw-r--r--
2026-07-13 17:17
pyrex.vim
766
B
-rw-r--r--
2026-07-13 17:17
python.vim
7.78
KB
-rw-r--r--
2026-07-13 17:17
qb64.vim
587
B
-rw-r--r--
2026-07-13 17:17
qf.vim
508
B
-rw-r--r--
2026-07-13 17:17
qml.vim
780
B
-rw-r--r--
2026-07-13 17:17
quake.vim
439
B
-rw-r--r--
2026-07-13 17:17
quarto.vim
25
B
-rw-r--r--
2026-07-13 17:17
r.vim
890
B
-rw-r--r--
2026-07-13 17:17
racc.vim
449
B
-rw-r--r--
2026-07-13 17:17
racket.vim
2.43
KB
-rw-r--r--
2026-07-13 17:17
raku.vim
4.02
KB
-rw-r--r--
2026-07-13 17:17
readline.vim
1.67
KB
-rw-r--r--
2026-07-13 17:17
registry.vim
740
B
-rw-r--r--
2026-07-13 17:17
reva.vim
772
B
-rw-r--r--
2026-07-13 17:17
rhelp.vim
770
B
-rw-r--r--
2026-07-13 17:17
rmd.vim
2.29
KB
-rw-r--r--
2026-07-13 17:17
rnc.vim
431
B
-rw-r--r--
2026-07-13 17:17
rnoweb.vim
1.57
KB
-rw-r--r--
2026-07-13 17:17
routeros.vim
682
B
-rw-r--r--
2026-07-13 17:17
rpl.vim
621
B
-rw-r--r--
2026-07-13 17:17
rrst.vim
1.57
KB
-rw-r--r--
2026-07-13 17:17
rst.vim
1.37
KB
-rw-r--r--
2026-07-13 17:17
ruby.vim
17.44
KB
-rw-r--r--
2026-07-13 17:17
rust.vim
8.9
KB
-rw-r--r--
2026-07-13 17:17
sass.vim
1.09
KB
-rw-r--r--
2026-07-13 17:17
sbt.vim
346
B
-rw-r--r--
2026-07-13 17:17
scala.vim
1.27
KB
-rw-r--r--
2026-07-13 17:17
scdoc.vim
541
B
-rw-r--r--
2026-07-13 17:17
scheme.vim
1.41
KB
-rw-r--r--
2026-07-13 17:17
screen.vim
436
B
-rw-r--r--
2026-07-13 17:17
scss.vim
239
B
-rw-r--r--
2026-07-13 17:17
sed.vim
661
B
-rw-r--r--
2026-07-13 17:17
sensors.vim
455
B
-rw-r--r--
2026-07-13 17:17
services.vim
452
B
-rw-r--r--
2026-07-13 17:17
setserial.vim
439
B
-rw-r--r--
2026-07-13 17:17
sexplib.vim
451
B
-rw-r--r--
2026-07-13 17:17
sgml.vim
1.15
KB
-rw-r--r--
2026-07-13 17:17
sh.vim
1.9
KB
-rw-r--r--
2026-07-13 17:17
sieve.vim
469
B
-rw-r--r--
2026-07-13 17:17
slpconf.vim
477
B
-rw-r--r--
2026-07-13 17:17
slpreg.vim
476
B
-rw-r--r--
2026-07-13 17:17
slpspi.vim
467
B
-rw-r--r--
2026-07-13 17:17
solidity.vim
394
B
-rw-r--r--
2026-07-13 17:17
solution.vim
959
B
-rw-r--r--
2026-07-13 17:17
spec.vim
5.68
KB
-rw-r--r--
2026-07-13 17:17
sql.vim
21.11
KB
-rw-r--r--
2026-07-13 17:17
ssa.vim
288
B
-rw-r--r--
2026-07-13 17:17
sshconfig.vim
1.14
KB
-rw-r--r--
2026-07-13 17:17
sudoers.vim
1.12
KB
-rw-r--r--
2026-07-13 17:17
svg.vim
1.14
KB
-rw-r--r--
2026-07-13 17:17
swayconfig.vim
337
B
-rw-r--r--
2026-07-13 17:17
swift.vim
733
B
-rw-r--r--
2026-07-13 17:17
swiftgyb.vim
421
B
-rw-r--r--
2026-07-13 17:17
swig.vim
318
B
-rw-r--r--
2026-07-13 17:17
sysctl.vim
453
B
-rw-r--r--
2026-07-13 17:17
systemd.vim
1.46
KB
-rw-r--r--
2026-07-13 17:17
systemverilog.vim
1.25
KB
-rw-r--r--
2026-07-13 17:17
tap.vim
815
B
-rw-r--r--
2026-07-13 17:17
tcl.vim
1002
B
-rw-r--r--
2026-07-13 17:17
tcsh.vim
1.05
KB
-rw-r--r--
2026-07-13 17:17
terminfo.vim
430
B
-rw-r--r--
2026-07-13 17:17
tex.vim
1.6
KB
-rw-r--r--
2026-07-13 17:17
text.vim
498
B
-rw-r--r--
2026-07-13 17:17
tidy.vim
861
B
-rw-r--r--
2026-07-13 17:17
tmux.vim
372
B
-rw-r--r--
2026-07-13 17:17
toml.vim
468
B
-rw-r--r--
2026-07-13 17:17
treetop.vim
416
B
-rw-r--r--
2026-07-13 17:17
tt2html.vim
513
B
-rw-r--r--
2026-07-13 17:17
typescript.vim
1.18
KB
-rw-r--r--
2026-07-13 17:17
typescriptreact.vim
787
B
-rw-r--r--
2026-07-13 17:17
udevconf.vim
434
B
-rw-r--r--
2026-07-13 17:17
udevperm.vim
432
B
-rw-r--r--
2026-07-13 17:17
udevrules.vim
1.12
KB
-rw-r--r--
2026-07-13 17:17
unison.vim
314
B
-rw-r--r--
2026-07-13 17:17
updatedb.vim
443
B
-rw-r--r--
2026-07-13 17:17
urlshortcut.vim
475
B
-rw-r--r--
2026-07-13 17:17
usd.vim
379
B
-rw-r--r--
2026-07-13 17:17
vb.vim
3.39
KB
-rw-r--r--
2026-07-13 17:17
vdf.vim
311
B
-rw-r--r--
2026-07-13 17:17
verilog.vim
1.93
KB
-rw-r--r--
2026-07-13 17:17
vhdl.vim
4.21
KB
-rw-r--r--
2026-07-13 17:17
vim.vim
4.98
KB
-rw-r--r--
2026-07-13 17:17
vroom.vim
924
B
-rw-r--r--
2026-07-13 17:17
vue.vim
667
B
-rw-r--r--
2026-07-13 17:17
wat.vim
470
B
-rw-r--r--
2026-07-13 17:17
wget.vim
734
B
-rw-r--r--
2026-07-13 17:17
wget2.vim
742
B
-rw-r--r--
2026-07-13 17:17
xcompose.vim
276
B
-rw-r--r--
2026-07-13 17:17
xdefaults.vim
481
B
-rw-r--r--
2026-07-13 17:17
xf86conf.vim
434
B
-rw-r--r--
2026-07-13 17:17
xhtml.vim
1.95
KB
-rw-r--r--
2026-07-13 17:17
xinetd.vim
476
B
-rw-r--r--
2026-07-13 17:17
xml.vim
2.15
KB
-rw-r--r--
2026-07-13 17:17
xmodmap.vim
434
B
-rw-r--r--
2026-07-13 17:17
xs.vim
517
B
-rw-r--r--
2026-07-13 17:17
xsd.vim
1.11
KB
-rw-r--r--
2026-07-13 17:17
xslt.vim
515
B
-rw-r--r--
2026-07-13 17:17
yaml.vim
628
B
-rw-r--r--
2026-07-13 17:17
zig.vim
1.63
KB
-rw-r--r--
2026-07-13 17:17
zimbu.vim
7.34
KB
-rw-r--r--
2026-07-13 17:17
zsh.vim
1.48
KB
-rw-r--r--
2026-07-13 17:17
Save
Rename
" SQL filetype plugin file " Language: SQL (Common for Oracle, Microsoft SQL Server, Sybase) " Version: 12.0 " Maintainer: David Fishburn <dfishburn dot vim at gmail dot com> " Last Change: 2017 Mar 07 " Download: http://vim.sourceforge.net/script.php?script_id=454 " For more details please use: " :h sql.txt " " This file should only contain values that are common to all SQL languages " Oracle, Microsoft SQL Server, Sybase ASA/ASE, MySQL, and so on " If additional features are required create: " vimfiles/after/ftplugin/sql.vim (Windows) " .vim/after/ftplugin/sql.vim (Unix) " to override and add any of your own settings. " This file also creates a command, SQLSetType, which allows you to change " SQL dialects on the fly. For example, if I open an Oracle SQL file, it " is color highlighted appropriately. If I open an Informix SQL file, it " will still be highlighted according to Oracles settings. By running: " :SQLSetType sqlinformix " " All files called sqlinformix.vim will be loaded from the indent and syntax " directories. This allows you to easily flip SQL dialects on a per file " basis. NOTE: you can also use completion: " :SQLSetType <tab> " " To change the default dialect, add the following to your vimrc: " let g:sql_type_default = 'sqlanywhere' " " This file also creates a command, SQLGetType, which allows you to " determine what the current dialect is in use. " :SQLGetType " " History " " Version 12.0 (April 2013) " " NF: Added support for "BEGIN TRY ... END TRY ... BEGIN CATCH ... END CATCH " BF: This plugin is designed to be used with other plugins to enable the " SQL completion with Perl, Python, Java, ... The loading mechanism " was not checking if the SQL objects were created, which can lead to " the plugin not loading the SQL support. " " Version 11.0 (May 2013) " " NF: Updated to use SyntaxComplete's new regex support for syntax groups. " " Version 10.0 (Dec 2012) " " NF: Changed all maps to use noremap instead of must map " NF: Changed all visual maps to use xnoremap instead of vnoremap as they " should only be used in visual mode and not select mode. " BF: Most of the maps were using doubled up backslashes before they were " changed to using the search() function, which meant they no longer " worked. " " Version 9.0 " " NF: Completes 'b:undo_ftplugin' " BF: Correctly set cpoptions when creating script " " Version 8.0 " " NF: Improved the matchit plugin regex (Talek) " " Version 7.0 " " NF: Calls the sqlcomplete#ResetCacheSyntax() function when calling " SQLSetType. " " Version 6.0 " " NF: Adds the command SQLGetType " " Version 5.0 " " NF: Adds the ability to choose the keys to control SQL completion, just add " the following to your .vimrc: " let g:ftplugin_sql_omni_key = '<C-C>' " let g:ftplugin_sql_omni_key_right = '<Right>' " let g:ftplugin_sql_omni_key_left = '<Left>' " " BF: format-options - Auto-wrap comments using textwidth was turned off " by mistake. " Only do this when not done yet for this buffer " This ftplugin can be used with other ftplugins. So ensure loading " happens if all elements of this plugin have not yet loaded. if exists("b:did_ftplugin") && exists("b:current_ftplugin") && b:current_ftplugin == 'sql' finish endif let s:save_cpo = &cpo set cpo&vim " Disable autowrapping for code, but enable for comments " t Auto-wrap text using textwidth " c Auto-wrap comments using textwidth, inserting the current comment " leader automatically. setlocal formatoptions-=t setlocal formatoptions+=c " Functions/Commands to allow the user to change SQL syntax dialects " through the use of :SQLSetType <tab> for completion. " This works with both Vim 6 and 7. if !exists("*SQL_SetType") " NOTE: You cannot use function! since this file can be " sourced from within this function. That will result in " an error reported by Vim. function SQL_GetList(ArgLead, CmdLine, CursorPos) if !exists('s:sql_list') " Grab a list of files that contain "sql" in their names let list_indent = globpath(&runtimepath, 'indent/*sql*') let list_syntax = globpath(&runtimepath, 'syntax/*sql*') let list_ftplugin = globpath(&runtimepath, 'ftplugin/*sql*') let sqls = "\n".list_indent."\n".list_syntax."\n".list_ftplugin."\n" " Strip out everything (path info) but the filename " Regex " From between two newline characters " Non-greedily grab all characters " Followed by a valid filename \w\+\.\w\+ (sql.vim) " Followed by a newline, but do not include the newline " " Replace it with just the filename (get rid of PATH) " " Recursively, since there are many filenames that contain " the word SQL in the indent, syntax and ftplugin directory let sqls = substitute( sqls, \ '[\n]\%(.\{-}\)\(\w\+\.\w\+\)\n\@=', \ '\1\n', \ 'g' \ ) " Remove duplicates, since sqlanywhere.vim can exist in the " syntax, indent and ftplugin directory, yet we only want " to display the option once let index = match(sqls, '.\{-}\ze\n') while index > -1 " Get the first filename let file = matchstr(sqls, '.\{-}\ze\n', index) " Recursively replace any *other* occurrence of that " filename with nothing (ie remove it) let sqls = substitute(sqls, '\%>'.(index+strlen(file)).'c\<'.file.'\>\n', '', 'g') " Move on to the next filename let index = match(sqls, '.\{-}\ze\n', (index+strlen(file)+1)) endwhile " Sort the list if using version 7 if v:version >= 700 let mylist = split(sqls, "\n") let mylist = sort(mylist) let sqls = join(mylist, "\n") endif let s:sql_list = sqls endif return s:sql_list endfunction function SQL_SetType(name) " User has decided to override default SQL scripts and " specify a vendor specific version " (ie Oracle, Informix, SQL Anywhere, ...) " So check for an remove any settings that prevent the " scripts from being executed, and then source the " appropriate Vim scripts. if exists("b:did_ftplugin") unlet b:did_ftplugin endif if exists("b:current_syntax") " echomsg 'SQLSetType - clearing syntax' syntax clear if exists("b:current_syntax") unlet b:current_syntax endif endif if exists("b:did_indent") " echomsg 'SQLSetType - clearing indent' unlet b:did_indent " Set these values to their defaults setlocal indentkeys& setlocal indentexpr& endif " Ensure the name is in the correct format let new_sql_type = substitute(a:name, \ '\s*\([^\.]\+\)\(\.\w\+\)\?', '\L\1', '') " Do not specify a buffer local variable if it is " the default value if new_sql_type == 'sql' let new_sql_type = 'sqloracle' endif let b:sql_type_override = new_sql_type " Remove any cached SQL since a new syntax will have different " items and groups if !exists('g:loaded_sql_completion') || g:loaded_sql_completion >= 100 call sqlcomplete#ResetCacheSyntax() endif " Vim will automatically source the correct files if we " change the filetype. You cannot do this with setfiletype " since that command will only execute if a filetype has " not already been set. In this case we want to override " the existing filetype. let &filetype = 'sql' if b:sql_compl_savefunc != "" " We are changing the filetype to SQL from some other filetype " which had OMNI completion defined. We need to activate the " SQL completion plugin in order to cache some of the syntax items " while the syntax rules for SQL are active. call sqlcomplete#PreCacheSyntax() endif endfunction command! -nargs=* -complete=custom,SQL_GetList SQLSetType :call SQL_SetType(<q-args>) endif " Functions/Commands to allow the user determine current SQL syntax dialect " This works with both Vim 6 and 7. if !exists("*SQL_GetType") function SQL_GetType() if exists('b:sql_type_override') echomsg "Current SQL dialect in use:".b:sql_type_override else echomsg "Current SQL dialect in use:".g:sql_type_default endif endfunction command! -nargs=0 SQLGetType :call SQL_GetType() endif if exists("b:sql_type_override") " echo 'sourcing buffer ftplugin/'.b:sql_type_override.'.vim' if globpath(&runtimepath, 'ftplugin/'.b:sql_type_override.'.vim') != '' exec 'runtime ftplugin/'.b:sql_type_override.'.vim' " else " echomsg 'ftplugin/'.b:sql_type_override.' not exist, using default' endif elseif exists("g:sql_type_default") " echo 'sourcing global ftplugin/'.g:sql_type_default.'.vim' if globpath(&runtimepath, 'ftplugin/'.g:sql_type_default.'.vim') != '' exec 'runtime ftplugin/'.g:sql_type_default.'.vim' " else " echomsg 'ftplugin/'.g:sql_type_default.'.vim not exist, using default' endif endif " If the above runtime command succeeded, do not load the default settings " as they should have already been loaded from a previous run. if exists("b:did_ftplugin") && exists("b:current_ftplugin") && b:current_ftplugin == 'sql' finish endif let b:undo_ftplugin = "setl comments< formatoptions< define< omnifunc<" . \ " | unlet! b:browsefilter b:match_words" " Don't load another plugin for this buffer let b:did_ftplugin = 1 let b:current_ftplugin = 'sql' " Win32 can filter files in the browse dialog if has("gui_win32") && !exists("b:browsefilter") let b:browsefilter = "SQL Files (*.sql)\t*.sql\n" . \ "All Files (*.*)\t*.*\n" endif " Some standard expressions for use with the matchit strings let s:notend = '\%(\<end\s\+\)\@<!' let s:when_no_matched_or_others = '\%(\<when\>\%(\s\+\%(\%(\<not\>\s\+\)\?<matched\>\)\|\<others\>\)\@!\)' let s:or_replace = '\%(or\s\+replace\s\+\)\?' " Define patterns for the matchit macro if !exists("b:match_words") " SQL is generally case insensitive let b:match_ignorecase = 1 " Handle the following: " if " elseif | elsif " else [if] " end if " " [while condition] loop " leave " break " continue " exit " end loop " " for " leave " break " continue " exit " end loop " " do " statements " doend " " case " when " when " default " end case " " merge " when not matched " when matched " " EXCEPTION " WHEN column_not_found THEN " WHEN OTHERS THEN " " begin try " end try " begin catch " end catch " " create[ or replace] procedure|function|event " \ '^\s*\<\%(do\|for\|while\|loop\)\>.*:'. " For ColdFusion support setlocal matchpairs+=<:> let b:match_words = &matchpairs . \ ',\%(\<begin\)\%(\s\+\%(try\|catch\)\>\)\@!:\<end\>\W*$,'. \ \ '\<begin\s\+try\>:'. \ '\<end\s\+try\>:'. \ '\<begin\s\+catch\>:'. \ '\<end\s\+catch\>,'. \ \ s:notend . '\<if\>:'. \ '\<elsif\>\|\<elseif\>\|\<else\>:'. \ '\<end\s\+if\>,'. \ \ '\(^\s*\)\@<=\(\<\%(do\|for\|while\|loop\)\>.*\):'. \ '\%(\<exit\>\|\<leave\>\|\<break\>\|\<continue\>\):'. \ '\%(\<doend\>\|\%(\<end\s\+\%(for\|while\|loop\>\)\)\),'. \ \ '\%('. s:notend . '\<case\>\):'. \ '\%('.s:when_no_matched_or_others.'\):'. \ '\%(\<when\s\+others\>\|\<end\s\+case\>\),' . \ \ '\<merge\>:' . \ '\<when\s\+not\s\+matched\>:' . \ '\<when\s\+matched\>,' . \ \ '\%(\<create\s\+' . s:or_replace . '\)\?'. \ '\%(function\|procedure\|event\):'. \ '\<returns\?\>' " \ '\<begin\>\|\<returns\?\>:'. " \ '\<end\>\(;\)\?\s*$' " \ '\<exception\>:'.s:when_no_matched_or_others. " \ ':\<when\s\+others\>,'. " " \ '\%(\<exception\>\|\%('. s:notend . '\<case\>\)\):'. " \ '\%(\<default\>\|'.s:when_no_matched_or_others.'\):'. " \ '\%(\%(\<when\s\+others\>\)\|\<end\s\+case\>\),' . endif " Define how to find the macro definition of a variable using the various " [d, [D, [_CTRL_D and so on features " Match these values ignoring case " ie DECLARE varname INTEGER let &l:define = '\c\<\(VARIABLE\|DECLARE\|IN\|OUT\|INOUT\)\>' " Mappings to move to the next BEGIN ... END block " \W - no characters or digits nnoremap <buffer> <silent> ]] :call search('\c^\s*begin\>', 'W' )<CR> nnoremap <buffer> <silent> [[ :call search('\c^\s*begin\>', 'bW' )<CR> nnoremap <buffer> <silent> ][ :call search('\c^\s*end\W*$', 'W' )<CR> nnoremap <buffer> <silent> [] :call search('\c^\s*end\W*$', 'bW' )<CR> xnoremap <buffer> <silent> ]] :<C-U>exec "normal! gv"<Bar>call search('\c^\s*begin\>', 'W' )<CR> xnoremap <buffer> <silent> [[ :<C-U>exec "normal! gv"<Bar>call search('\c^\s*begin\>', 'bW' )<CR> xnoremap <buffer> <silent> ][ :<C-U>exec "normal! gv"<Bar>call search('\c^\s*end\W*$', 'W' )<CR> xnoremap <buffer> <silent> [] :<C-U>exec "normal! gv"<Bar>call search('\c^\s*end\W*$', 'bW' )<CR> " By default only look for CREATE statements, but allow " the user to override if !exists('g:ftplugin_sql_statements') let g:ftplugin_sql_statements = 'create' endif " Predefined SQL objects what are used by the below mappings using " the ]} style maps. " This global variable allows the users to override its value " from within their vimrc. " Note, you cannot use \?, since these patterns can be used to search " backwards, you must use \{,1} if !exists('g:ftplugin_sql_objects') let g:ftplugin_sql_objects = 'function,procedure,event,' . \ '\(existing\\|global\s\+temporary\s\+\)\{,1}' . \ 'table,trigger' . \ ',schema,service,publication,database,datatype,domain' . \ ',index,subscription,synchronization,view,variable' endif " Key to trigger SQL completion if !exists('g:ftplugin_sql_omni_key') let g:ftplugin_sql_omni_key = '<C-C>' endif " Key to trigger drill into column list if !exists('g:ftplugin_sql_omni_key_right') let g:ftplugin_sql_omni_key_right = '<Right>' endif " Key to trigger drill out of column list if !exists('g:ftplugin_sql_omni_key_left') let g:ftplugin_sql_omni_key_left = '<Left>' endif " Replace all ,'s with bars, except ones with numbers after them. " This will most likely be a \{,1} string. let s:ftplugin_sql_objects = \ '\c^\s*' . \ '\(\(' . \ substitute(g:ftplugin_sql_statements, ',\d\@!', '\\\\|', 'g') . \ '\)\s\+\(or\s\+replace\s\+\)\{,1}\)\{,1}' . \ '\<\(' . \ substitute(g:ftplugin_sql_objects, ',\d\@!', '\\\\|', 'g') . \ '\)\>' " Mappings to move to the next CREATE ... block exec "nnoremap <buffer> <silent> ]} :call search('".s:ftplugin_sql_objects."', 'W')<CR>" exec "nnoremap <buffer> <silent> [{ :call search('".s:ftplugin_sql_objects."', 'bW')<CR>" " Could not figure out how to use a :call search() string in visual mode " without it ending visual mode " Unfortunately, this will add a entry to the search history exec 'xnoremap <buffer> <silent> ]} /'.s:ftplugin_sql_objects.'<CR>' exec 'xnoremap <buffer> <silent> [{ ?'.s:ftplugin_sql_objects.'<CR>' " Mappings to move to the next COMMENT " " Had to double the \ for the \| separator since this has a special " meaning on maps let b:comment_leader = '\(--\\|\/\/\\|\*\\|\/\*\\|\*\/\)' " Find the start of the next comment let b:comment_start = '^\(\s*'.b:comment_leader.'.*\n\)\@<!'. \ '\(\s*'.b:comment_leader.'\)' " Find the end of the previous comment let b:comment_end = '\(^\s*'.b:comment_leader.'.*\n\)'. \ '\(^\s*'.b:comment_leader.'\)\@!' " Skip over the comment let b:comment_jump_over = "call search('". \ '^\(\s*'.b:comment_leader.'.*\n\)\@<!'. \ "', 'W')" let b:comment_skip_back = "call search('". \ '^\(\s*'.b:comment_leader.'.*\n\)\@<!'. \ "', 'bW')" " Move to the start and end of comments exec 'nnoremap <silent><buffer> ]" :call search('."'".b:comment_start."'".', "W" )<CR>' exec 'nnoremap <silent><buffer> [" :call search('."'".b:comment_end."'".', "W" )<CR>' exec 'xnoremap <silent><buffer> ]" :<C-U>exec "normal! gv"<Bar>call search('."'".b:comment_start."'".', "W" )<CR>' exec 'xnoremap <silent><buffer> [" :<C-U>exec "normal! gv"<Bar>call search('."'".b:comment_end."'".', "W" )<CR>' " Comments can be of the form: " /* " * " */ " or " -- " or " // setlocal comments=s1:/*,mb:*,ex:*/,:--,:// " Set completion with CTRL-X CTRL-O to autoloaded function. if exists('&omnifunc') " Since the SQL completion plugin can be used in conjunction " with other completion filetypes it must record the previous " OMNI function prior to setting up the SQL OMNI function let b:sql_compl_savefunc = &omnifunc " Source it to determine its version runtime autoload/sqlcomplete.vim " This is used by the sqlcomplete.vim plugin " Source it for its global functions runtime autoload/syntaxcomplete.vim setlocal omnifunc=sqlcomplete#Complete " Prevent the intellisense plugin from loading let b:sql_vis = 1 if !exists('g:omni_sql_no_default_maps') let regex_extra = '' if exists('g:loaded_syntax_completion') && exists('g:loaded_sql_completion') if g:loaded_syntax_completion > 120 && g:loaded_sql_completion > 140 let regex_extra = '\\w*' endif endif " Static maps which use populate the completion list " using Vim's syntax highlighting rules exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'a <C-\><C-O>:call sqlcomplete#Map("syntax")<CR><C-X><C-O>' exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'k <C-\><C-O>:call sqlcomplete#Map("sqlKeyword'.regex_extra.'")<CR><C-X><C-O>' exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'f <C-\><C-O>:call sqlcomplete#Map("sqlFunction'.regex_extra.'")<CR><C-X><C-O>' exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'o <C-\><C-O>:call sqlcomplete#Map("sqlOption'.regex_extra.'")<CR><C-X><C-O>' exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'T <C-\><C-O>:call sqlcomplete#Map("sqlType'.regex_extra.'")<CR><C-X><C-O>' exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'s <C-\><C-O>:call sqlcomplete#Map("sqlStatement'.regex_extra.'")<CR><C-X><C-O>' " Dynamic maps which use populate the completion list " using the dbext.vim plugin exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'t <C-\><C-O>:call sqlcomplete#Map("table")<CR><C-X><C-O>' exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'p <C-\><C-O>:call sqlcomplete#Map("procedure")<CR><C-X><C-O>' exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'v <C-\><C-O>:call sqlcomplete#Map("view")<CR><C-X><C-O>' exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'c <C-\><C-O>:call sqlcomplete#Map("column")<CR><C-X><C-O>' exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'l <C-\><C-O>:call sqlcomplete#Map("column_csv")<CR><C-X><C-O>' " The next 3 maps are only to be used while the completion window is " active due to the <CR> at the beginning of the map exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'L <C-Y><C-\><C-O>:call sqlcomplete#Map("column_csv")<CR><C-X><C-O>' " <C-Right> is not recognized on most Unix systems, so only create " these additional maps on the Windows platform. " If you would like to use these maps, choose a different key and make " the same map in your vimrc. " if has('win32') exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key_right.' <C-R>=sqlcomplete#DrillIntoTable()<CR>' exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key_left.' <C-R>=sqlcomplete#DrillOutOfColumns()<CR>' " endif " Remove any cached items useful for schema changes exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'R <C-\><C-O>:call sqlcomplete#Map("resetCache")<CR><C-X><C-O>' endif if b:sql_compl_savefunc != "" " We are changing the filetype to SQL from some other filetype " which had OMNI completion defined. We need to activate the " SQL completion plugin in order to cache some of the syntax items " while the syntax rules for SQL are active. call sqlcomplete#ResetCacheSyntax() call sqlcomplete#PreCacheSyntax() endif endif let &cpo = s:save_cpo unlet s:save_cpo " vim:sw=4: