Windows NT DGPENSV2LPKMN 10.0 build 14393 (Windows Server 2016) AMD64
Apache/2.4.46 (Win64) OpenSSL/1.1.1h PHP/7.3.25
: 172.16.0.66 | : 172.16.0.254
Cant Read [ /etc/named.conf ]
7.3.25
SYSTEM
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
BLACK DEFEND!
README
+ Create Folder
+ Create File
[ A ]
[ C ]
[ D ]
C: /
laragon /
bin /
git /
usr /
share /
vim /
vim82 /
ftplugin /
[ HOME SHELL ]
Name
Size
Permission
Action
.mad-root
0
B
-rw-rw-rw-
8th.vim
833
B
-rw-rw-rw-
README.txt
869
B
-rw-rw-rw-
a2ps.vim
470
B
-rw-rw-rw-
aap.vim
979
B
-rw-rw-rw-
abap.vim
800
B
-rw-rw-rw-
abaqus.vim
3.31
KB
-rw-rw-rw-
ada.vim
6.35
KB
-rw-rw-rw-
alsaconf.vim
438
B
-rw-rw-rw-
ant.vim
1.27
KB
-rw-rw-rw-
arch.vim
431
B
-rw-rw-rw-
art.vim
410
B
-rw-rw-rw-
asm.vim
271
B
-rw-rw-rw-
aspvbs.vim
1.83
KB
-rw-rw-rw-
automake.vim
337
B
-rw-rw-rw-
awk.vim
1.47
KB
-rw-rw-rw-
bash.vim
474
B
-rw-rw-rw-
basic.vim
1.94
KB
-rw-rw-rw-
bdf.vim
449
B
-rw-rw-rw-
bst.vim
333
B
-rw-rw-rw-
btm.vim
316
B
-rw-rw-rw-
bzl.vim
3.03
KB
-rw-rw-rw-
c.vim
2.26
KB
-rw-rw-rw-
calendar.vim
462
B
-rw-rw-rw-
cdrdaoconf.vim
383
B
-rw-rw-rw-
cfg.vim
388
B
-rw-rw-rw-
ch.vim
472
B
-rw-rw-rw-
changelog.vim
9.09
KB
-rw-rw-rw-
chicken.vim
1.68
KB
-rw-rw-rw-
clojure.vim
3.24
KB
-rw-rw-rw-
cmake.vim
867
B
-rw-rw-rw-
cobol.vim
9.35
KB
-rw-rw-rw-
conf.vim
434
B
-rw-rw-rw-
config.vim
1.21
KB
-rw-rw-rw-
confini.vim
206
B
-rw-rw-rw-
context.vim
5.26
KB
-rw-rw-rw-
cpp.vim
468
B
-rw-rw-rw-
crm.vim
414
B
-rw-rw-rw-
cs.vim
1.42
KB
-rw-rw-rw-
csc.vim
697
B
-rw-rw-rw-
csh.vim
1.69
KB
-rw-rw-rw-
css.vim
586
B
-rw-rw-rw-
cucumber.vim
5
KB
-rw-rw-rw-
cvsrc.vim
399
B
-rw-rw-rw-
debchangelog.vim
11.18
KB
-rw-rw-rw-
debcontrol.vim
1.8
KB
-rw-rw-rw-
denyhosts.vim
383
B
-rw-rw-rw-
dictconf.vim
434
B
-rw-rw-rw-
dictdconf.vim
435
B
-rw-rw-rw-
diff.vim
677
B
-rw-rw-rw-
dircolors.vim
431
B
-rw-rw-rw-
docbk.vim
530
B
-rw-rw-rw-
dockerfile.vim
356
B
-rw-rw-rw-
dosbatch.vim
1011
B
-rw-rw-rw-
dosini.vim
459
B
-rw-rw-rw-
dtd.vim
1.06
KB
-rw-rw-rw-
dtrace.vim
1.12
KB
-rw-rw-rw-
dune.vim
502
B
-rw-rw-rw-
eiffel.vim
3.99
KB
-rw-rw-rw-
elinks.vim
436
B
-rw-rw-rw-
elixir.vim
231
B
-rw-rw-rw-
elm.vim
369
B
-rw-rw-rw-
erlang.vim
2.03
KB
-rw-rw-rw-
eruby.vim
4.6
KB
-rw-rw-rw-
eterm.vim
470
B
-rw-rw-rw-
falcon.vim
1.32
KB
-rw-rw-rw-
fennel.vim
569
B
-rw-rw-rw-
fetchmail.vim
428
B
-rw-rw-rw-
flexwiki.vim
1.83
KB
-rw-rw-rw-
fortran.vim
5.14
KB
-rw-rw-rw-
fpcmake.vim
592
B
-rw-rw-rw-
framescript.vim
780
B
-rw-rw-rw-
freebasic.vim
1.87
KB
-rw-rw-rw-
fstab.vim
426
B
-rw-rw-rw-
fvwm.vim
390
B
-rw-rw-rw-
gdb.vim
293
B
-rw-rw-rw-
gitcommit.vim
1.94
KB
-rw-rw-rw-
gitconfig.vim
376
B
-rw-rw-rw-
gitrebase.vim
1.75
KB
-rw-rw-rw-
gitsendemail.vim
157
B
-rw-rw-rw-
go.vim
365
B
-rw-rw-rw-
gpg.vim
433
B
-rw-rw-rw-
gprof.vim
1.09
KB
-rw-rw-rw-
groovy.vim
343
B
-rw-rw-rw-
group.vim
425
B
-rw-rw-rw-
grub.vim
434
B
-rw-rw-rw-
haml.vim
1.94
KB
-rw-rw-rw-
hamster.vim
1.92
KB
-rw-rw-rw-
haskell.vim
551
B
-rw-rw-rw-
help.vim
471
B
-rw-rw-rw-
hgcommit.vim
363
B
-rw-rw-rw-
hog.vim
1.36
KB
-rw-rw-rw-
hostconf.vim
383
B
-rw-rw-rw-
hostsaccess.vim
436
B
-rw-rw-rw-
html.vim
1.55
KB
-rw-rw-rw-
htmldjango.vim
331
B
-rw-rw-rw-
i3config.vim
333
B
-rw-rw-rw-
icon.vim
958
B
-rw-rw-rw-
indent.vim
487
B
-rw-rw-rw-
initex.vim
1005
B
-rw-rw-rw-
ishd.vim
1.23
KB
-rw-rw-rw-
j.vim
3.31
KB
-rw-rw-rw-
java.vim
1.61
KB
-rw-rw-rw-
javascript.vim
2.54
KB
-rw-rw-rw-
javascriptreact.vim
244
B
-rw-rw-rw-
jproperties.vim
292
B
-rw-rw-rw-
json.vim
360
B
-rw-rw-rw-
jsonc.vim
677
B
-rw-rw-rw-
jsp.vim
1.93
KB
-rw-rw-rw-
julia.vim
3.7
KB
-rw-rw-rw-
kconfig.vim
703
B
-rw-rw-rw-
kwt.vim
851
B
-rw-rw-rw-
ld.vim
470
B
-rw-rw-rw-
less.vim
502
B
-rw-rw-rw-
lftp.vim
434
B
-rw-rw-rw-
libao.vim
440
B
-rw-rw-rw-
limits.vim
436
B
-rw-rw-rw-
liquid.vim
1.85
KB
-rw-rw-rw-
lisp.vim
759
B
-rw-rw-rw-
logcheck.vim
453
B
-rw-rw-rw-
loginaccess.vim
442
B
-rw-rw-rw-
logindefs.vim
440
B
-rw-rw-rw-
logtalk.dict
3.02
KB
-rw-rw-rw-
logtalk.vim
416
B
-rw-rw-rw-
lprolog.vim
1.25
KB
-rw-rw-rw-
lua.vim
1.3
KB
-rw-rw-rw-
m3build.vim
539
B
-rw-rw-rw-
m3quake.vim
957
B
-rw-rw-rw-
m4.vim
426
B
-rw-rw-rw-
mail.vim
1.36
KB
-rw-rw-rw-
mailaliases.vim
383
B
-rw-rw-rw-
mailcap.vim
434
B
-rw-rw-rw-
make.vim
1.03
KB
-rw-rw-rw-
man.vim
6.42
KB
-rw-rw-rw-
manconf.vim
444
B
-rw-rw-rw-
markdown.vim
1.92
KB
-rw-rw-rw-
masm.vim
1
KB
-rw-rw-rw-
matlab.vim
835
B
-rw-rw-rw-
meson.vim
1.12
KB
-rw-rw-rw-
mf.vim
3.17
KB
-rw-rw-rw-
mma.vim
366
B
-rw-rw-rw-
modconf.vim
477
B
-rw-rw-rw-
modula2.vim
1.06
KB
-rw-rw-rw-
modula3.vim
1.16
KB
-rw-rw-rw-
mp.vim
3.63
KB
-rw-rw-rw-
mplayerconf.vim
472
B
-rw-rw-rw-
mrxvtrc.vim
798
B
-rw-rw-rw-
msmessages.vim
1.11
KB
-rw-rw-rw-
muttrc.vim
467
B
-rw-rw-rw-
nanorc.vim
447
B
-rw-rw-rw-
neomuttrc.vim
532
B
-rw-rw-rw-
netrc.vim
428
B
-rw-rw-rw-
nginx.vim
144
B
-rw-rw-rw-
nroff.vim
424
B
-rw-rw-rw-
nsis.vim
1.31
KB
-rw-rw-rw-
objc.vim
296
B
-rw-rw-rw-
ocaml.vim
23.2
KB
-rw-rw-rw-
occam.vim
1.27
KB
-rw-rw-rw-
octave.vim
2.15
KB
-rw-rw-rw-
pamconf.vim
433
B
-rw-rw-rw-
pascal.vim
1.51
KB
-rw-rw-rw-
passwd.vim
424
B
-rw-rw-rw-
pbtxt.vim
438
B
-rw-rw-rw-
pdf.vim
2.55
KB
-rw-rw-rw-
perl.vim
3.57
KB
-rw-rw-rw-
php.vim
2.75
KB
-rw-rw-rw-
pinfo.vim
435
B
-rw-rw-rw-
plaintex.vim
1.12
KB
-rw-rw-rw-
pod.vim
2.54
KB
-rw-rw-rw-
poke.vim
744
B
-rw-rw-rw-
postscr.vim
1006
B
-rw-rw-rw-
procmail.vim
479
B
-rw-rw-rw-
prolog.vim
440
B
-rw-rw-rw-
protocols.vim
457
B
-rw-rw-rw-
ps1.vim
2.36
KB
-rw-rw-rw-
ps1xml.vim
1009
B
-rw-rw-rw-
pyrex.vim
766
B
-rw-rw-rw-
python.vim
7.78
KB
-rw-rw-rw-
qb64.vim
587
B
-rw-rw-rw-
qf.vim
508
B
-rw-rw-rw-
quake.vim
439
B
-rw-rw-rw-
r.vim
878
B
-rw-rw-rw-
racc.vim
449
B
-rw-rw-rw-
raku.vim
4.02
KB
-rw-rw-rw-
readline.vim
438
B
-rw-rw-rw-
registry.vim
740
B
-rw-rw-rw-
reva.vim
772
B
-rw-rw-rw-
rhelp.vim
758
B
-rw-rw-rw-
rmd.vim
1.79
KB
-rw-rw-rw-
rnc.vim
431
B
-rw-rw-rw-
rnoweb.vim
1.03
KB
-rw-rw-rw-
routeros.vim
682
B
-rw-rw-rw-
rpl.vim
621
B
-rw-rw-rw-
rrst.vim
1.56
KB
-rw-rw-rw-
rst.vim
1.37
KB
-rw-rw-rw-
ruby.vim
17.23
KB
-rw-rw-rw-
rust.vim
6.42
KB
-rw-rw-rw-
sass.vim
977
B
-rw-rw-rw-
sbt.vim
347
B
-rw-rw-rw-
scala.vim
1.12
KB
-rw-rw-rw-
scdoc.vim
541
B
-rw-rw-rw-
scheme.vim
1.41
KB
-rw-rw-rw-
screen.vim
436
B
-rw-rw-rw-
scss.vim
239
B
-rw-rw-rw-
sensors.vim
455
B
-rw-rw-rw-
services.vim
452
B
-rw-rw-rw-
setserial.vim
439
B
-rw-rw-rw-
sexplib.vim
348
B
-rw-rw-rw-
sgml.vim
1.15
KB
-rw-rw-rw-
sh.vim
1.14
KB
-rw-rw-rw-
sieve.vim
469
B
-rw-rw-rw-
slpconf.vim
477
B
-rw-rw-rw-
slpreg.vim
476
B
-rw-rw-rw-
slpspi.vim
467
B
-rw-rw-rw-
solution.vim
959
B
-rw-rw-rw-
spec.vim
5.68
KB
-rw-rw-rw-
sql.vim
21.11
KB
-rw-rw-rw-
sshconfig.vim
441
B
-rw-rw-rw-
sudoers.vim
438
B
-rw-rw-rw-
svg.vim
1.14
KB
-rw-rw-rw-
swift.vim
733
B
-rw-rw-rw-
swiftgyb.vim
421
B
-rw-rw-rw-
sysctl.vim
453
B
-rw-rw-rw-
systemd.vim
1.23
KB
-rw-rw-rw-
systemverilog.vim
1.25
KB
-rw-rw-rw-
tap.vim
815
B
-rw-rw-rw-
tcl.vim
1002
B
-rw-rw-rw-
tcsh.vim
961
B
-rw-rw-rw-
terminfo.vim
430
B
-rw-rw-rw-
tex.vim
1.6
KB
-rw-rw-rw-
text.vim
498
B
-rw-rw-rw-
tidy.vim
861
B
-rw-rw-rw-
tmux.vim
372
B
-rw-rw-rw-
toml.vim
464
B
-rw-rw-rw-
treetop.vim
416
B
-rw-rw-rw-
tt2html.vim
513
B
-rw-rw-rw-
typescript.vim
1.18
KB
-rw-rw-rw-
typescriptreact.vim
787
B
-rw-rw-rw-
udevconf.vim
434
B
-rw-rw-rw-
udevperm.vim
432
B
-rw-rw-rw-
udevrules.vim
426
B
-rw-rw-rw-
updatedb.vim
443
B
-rw-rw-rw-
vb.vim
3.39
KB
-rw-rw-rw-
verilog.vim
1.93
KB
-rw-rw-rw-
vhdl.vim
3.42
KB
-rw-rw-rw-
vim.vim
4.39
KB
-rw-rw-rw-
vroom.vim
924
B
-rw-rw-rw-
wast.vim
470
B
-rw-rw-rw-
wget.vim
737
B
-rw-rw-rw-
wget2.vim
745
B
-rw-rw-rw-
xdefaults.vim
481
B
-rw-rw-rw-
xf86conf.vim
434
B
-rw-rw-rw-
xhtml.vim
1.95
KB
-rw-rw-rw-
xinetd.vim
476
B
-rw-rw-rw-
xml.vim
2.15
KB
-rw-rw-rw-
xmodmap.vim
434
B
-rw-rw-rw-
xs.vim
517
B
-rw-rw-rw-
xsd.vim
1.11
KB
-rw-rw-rw-
xslt.vim
515
B
-rw-rw-rw-
yaml.vim
628
B
-rw-rw-rw-
zimbu.vim
7.26
KB
-rw-rw-rw-
zsh.vim
1.43
KB
-rw-rw-rw-
Delete
Unzip
Zip
${this.title}
Close
Code Editor : ruby.vim
" Vim filetype plugin " Language: Ruby " Maintainer: Tim Pope <vimNOSPAM@tpope.org> " URL: https://github.com/vim-ruby/vim-ruby " Release Coordinator: Doug Kearns <dougkearns@gmail.com> " Last Change: 2022 Mar 21 if (exists("b:did_ftplugin")) finish endif let b:did_ftplugin = 1 let s:cpo_save = &cpo set cpo&vim if has("gui_running") && !has("gui_win32") setlocal keywordprg=ri\ -T\ -f\ bs else setlocal keywordprg=ri endif " Matchit support if exists("loaded_matchit") && !exists("b:match_words") let b:match_ignorecase = 0 let b:match_words = \ '{\|\<\%(if\|unless\|case\|while\|until\|for\|do\|class\|module\|def\|=\@<!begin\)\>=\@!' . \ ':' . \ '\<\%(else\|elsif\|ensure\|when\|rescue\|break\|redo\|next\|retry\)\>' . \ ':' . \ '}\|\%(^\|[^.\:@$=]\)\@<=\<end\:\@!\>' . \ ',^=begin\>:^=end\>,' . \ ',\[:\],(:)' let b:match_skip = \ "synIDattr(synID(line('.'),col('.'),0),'name') =~ '" . \ "\\<ruby\\%(String\\|.\+Delimiter\\|Character\\|.\+Escape\\|" . \ "Regexp\\|Interpolation\\|Comment\\|Documentation\\|" . \ "ConditionalModifier\\|RepeatModifier\\|RescueModifier\\|OptionalDo\\|" . \ "MethodName\\|BlockArgument\\|KeywordAsMethod\\|ClassVariable\\|" . \ "InstanceVariable\\|GlobalVariable\\|Symbol\\)\\>'" endif setlocal formatoptions-=t formatoptions+=croql setlocal include=^\\s*\\<\\(load\\>\\\|require\\>\\\|autoload\\s*:\\=[\"']\\=\\h\\w*[\"']\\=,\\) setlocal suffixesadd=.rb if exists("&ofu") && has("ruby") setlocal omnifunc=rubycomplete#Complete endif " TODO: "setlocal define=^\\s*def setlocal comments=b:# setlocal commentstring=#\ %s if !exists('g:ruby_version_paths') let g:ruby_version_paths = {} endif function! s:query_path(root) abort let code = "print $:.join %q{,}" if &shell =~# 'sh' && empty(&shellxquote) let prefix = 'env PATH='.shellescape($PATH).' ' else let prefix = '' endif if &shellxquote == "'" let path_check = prefix.'ruby --disable-gems -e "' . code . '"' else let path_check = prefix."ruby --disable-gems -e '" . code . "'" endif let cd = haslocaldir() ? 'lcd' : 'cd' let cwd = fnameescape(getcwd()) try exe cd fnameescape(a:root) let path = split(system(path_check),',') exe cd cwd return path finally exe cd cwd endtry endfunction function! s:build_path(path) abort let path = join(map(copy(a:path), 'v:val ==# "." ? "" : v:val'), ',') if &g:path =~# '\v^%(\.,)=%(/%(usr|emx)/include,)=,$' let path = path . ',.,,' elseif &g:path =~# ',\.,,$' let path = &g:path[0:-4] . path . ',.,,' elseif &g:path =~# ',,$' let path = &g:path[0:-2] . path . ',,' else let path = substitute(&g:path, '[^,]\zs$', ',', '') . path endif return path endfunction if !exists('b:ruby_version') && !exists('g:ruby_path') && isdirectory(expand('%:p:h')) let s:version_file = findfile('.ruby-version', '.;') if !empty(s:version_file) && filereadable(s:version_file) let b:ruby_version = get(readfile(s:version_file, '', 1), '') if !has_key(g:ruby_version_paths, b:ruby_version) let g:ruby_version_paths[b:ruby_version] = s:query_path(fnamemodify(s:version_file, ':p:h')) endif endif endif if exists("g:ruby_path") let s:ruby_path = type(g:ruby_path) == type([]) ? join(g:ruby_path, ',') : g:ruby_path elseif has_key(g:ruby_version_paths, get(b:, 'ruby_version', '')) let s:ruby_paths = g:ruby_version_paths[b:ruby_version] let s:ruby_path = s:build_path(s:ruby_paths) else if !exists('g:ruby_default_path') if has("ruby") && has("win32") ruby ::VIM::command( 'let g:ruby_default_path = split("%s",",")' % $:.join(%q{,}) ) elseif executable('ruby') && !empty($HOME) let g:ruby_default_path = s:query_path($HOME) else let g:ruby_default_path = map(split($RUBYLIB,':'), 'v:val ==# "." ? "" : v:val') endif endif let s:ruby_paths = g:ruby_default_path let s:ruby_path = s:build_path(s:ruby_paths) endif if stridx(&l:path, s:ruby_path) == -1 let &l:path = s:ruby_path endif if exists('s:ruby_paths') && stridx(&l:tags, join(map(copy(s:ruby_paths),'v:val."/tags"'),',')) == -1 let &l:tags = &tags . ',' . join(map(copy(s:ruby_paths),'v:val."/tags"'),',') endif if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") let b:browsefilter = "Ruby Source Files (*.rb)\t*.rb\n" . \ "All Files (*.*)\t*.*\n" endif let b:undo_ftplugin = "setl inc= sua= path= tags= fo< com< cms< kp=" \."| unlet! b:browsefilter b:match_ignorecase b:match_words b:match_skip" \."| if exists('&ofu') && has('ruby') | setl ofu< | endif" if get(g:, 'ruby_recommended_style', 1) setlocal shiftwidth=2 softtabstop=2 expandtab let b:undo_ftplugin .= ' | setl sw< sts< et<' endif " To activate, :set ballooneval if exists('+balloonexpr') && get(g:, 'ruby_balloonexpr') setlocal balloonexpr=RubyBalloonexpr() let b:undo_ftplugin .= "| setl bexpr=" endif function! s:map(mode, flags, map) abort let from = matchstr(a:map, '\S\+') if empty(mapcheck(from, a:mode)) exe a:mode.'map' '<buffer>' a:flags a:map let b:undo_ftplugin .= '|sil! '.a:mode.'unmap <buffer> '.from endif endfunction cmap <buffer><script><expr> <Plug><ctag> substitute(RubyCursorTag(),'^$',"\022\027",'') cmap <buffer><script><expr> <Plug><cfile> substitute(RubyCursorFile(),'^$',"\022\006",'') let b:undo_ftplugin .= "| sil! cunmap <buffer> <Plug><ctag>| sil! cunmap <buffer> <Plug><cfile>" if !exists("g:no_plugin_maps") && !exists("g:no_ruby_maps") nmap <buffer><script> <SID>: :<C-U> nmap <buffer><script> <SID>c: :<C-U><C-R>=v:count ? v:count : ''<CR> cmap <buffer> <SID><cfile> <Plug><cfile> cmap <buffer> <SID><ctag> <Plug><ctag> nnoremap <silent> <buffer> [m :<C-U>call <SID>searchsyn('\<def\>',['rubyDefine'],'b','n')<CR> nnoremap <silent> <buffer> ]m :<C-U>call <SID>searchsyn('\<def\>',['rubyDefine'],'','n')<CR> nnoremap <silent> <buffer> [M :<C-U>call <SID>searchsyn('\<end\>',['rubyDefine'],'b','n')<CR> nnoremap <silent> <buffer> ]M :<C-U>call <SID>searchsyn('\<end\>',['rubyDefine'],'','n')<CR> xnoremap <silent> <buffer> [m :<C-U>call <SID>searchsyn('\<def\>',['rubyDefine'],'b','v')<CR> xnoremap <silent> <buffer> ]m :<C-U>call <SID>searchsyn('\<def\>',['rubyDefine'],'','v')<CR> xnoremap <silent> <buffer> [M :<C-U>call <SID>searchsyn('\<end\>',['rubyDefine'],'b','v')<CR> xnoremap <silent> <buffer> ]M :<C-U>call <SID>searchsyn('\<end\>',['rubyDefine'],'','v')<CR> nnoremap <silent> <buffer> [[ :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>',['rubyModule','rubyClass'],'b','n')<CR> nnoremap <silent> <buffer> ]] :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>',['rubyModule','rubyClass'],'','n')<CR> nnoremap <silent> <buffer> [] :<C-U>call <SID>searchsyn('\<end\>',['rubyModule','rubyClass'],'b','n')<CR> nnoremap <silent> <buffer> ][ :<C-U>call <SID>searchsyn('\<end\>',['rubyModule','rubyClass'],'','n')<CR> xnoremap <silent> <buffer> [[ :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>',['rubyModule','rubyClass'],'b','v')<CR> xnoremap <silent> <buffer> ]] :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>',['rubyModule','rubyClass'],'','v')<CR> xnoremap <silent> <buffer> [] :<C-U>call <SID>searchsyn('\<end\>',['rubyModule','rubyClass'],'b','v')<CR> xnoremap <silent> <buffer> ][ :<C-U>call <SID>searchsyn('\<end\>',['rubyModule','rubyClass'],'','v')<CR> let b:undo_ftplugin = b:undo_ftplugin \."| sil! exe 'unmap <buffer> [[' | sil! exe 'unmap <buffer> ]]' | sil! exe 'unmap <buffer> []' | sil! exe 'unmap <buffer> ]['" \."| sil! exe 'unmap <buffer> [m' | sil! exe 'unmap <buffer> ]m' | sil! exe 'unmap <buffer> [M' | sil! exe 'unmap <buffer> ]M'" if maparg('im','x') == '' && maparg('im','o') == '' && maparg('am','x') == '' && maparg('am','o') == '' onoremap <silent> <buffer> im :<C-U>call <SID>wrap_i('[m',']M')<CR> onoremap <silent> <buffer> am :<C-U>call <SID>wrap_a('[m',']M')<CR> xnoremap <silent> <buffer> im :<C-U>call <SID>wrap_i('[m',']M')<CR> xnoremap <silent> <buffer> am :<C-U>call <SID>wrap_a('[m',']M')<CR> let b:undo_ftplugin = b:undo_ftplugin \."| sil! exe 'ounmap <buffer> im' | sil! exe 'ounmap <buffer> am'" \."| sil! exe 'xunmap <buffer> im' | sil! exe 'xunmap <buffer> am'" endif if maparg('iM','x') == '' && maparg('iM','o') == '' && maparg('aM','x') == '' && maparg('aM','o') == '' onoremap <silent> <buffer> iM :<C-U>call <SID>wrap_i('[[','][')<CR> onoremap <silent> <buffer> aM :<C-U>call <SID>wrap_a('[[','][')<CR> xnoremap <silent> <buffer> iM :<C-U>call <SID>wrap_i('[[','][')<CR> xnoremap <silent> <buffer> aM :<C-U>call <SID>wrap_a('[[','][')<CR> let b:undo_ftplugin = b:undo_ftplugin \."| sil! exe 'ounmap <buffer> iM' | sil! exe 'ounmap <buffer> aM'" \."| sil! exe 'xunmap <buffer> iM' | sil! exe 'xunmap <buffer> aM'" endif call s:map('c', '', '<C-R><C-F> <Plug><cfile>') cmap <buffer><script><expr> <SID>tagzv &foldopen =~# 'tag' ? '<Bar>norm! zv' : '' call s:map('n', '<script><silent>', '<C-]> <SID>:exe v:count1."tag <SID><ctag>"<SID>tagzv<CR>') call s:map('n', '<script><silent>', 'g<C-]> <SID>:exe "tjump <SID><ctag>"<SID>tagzv<CR>') call s:map('n', '<script><silent>', 'g] <SID>:exe "tselect <SID><ctag>"<SID>tagzv<CR>') call s:map('n', '<script><silent>', '<C-W>] <SID>:exe v:count1."stag <SID><ctag>"<SID>tagzv<CR>') call s:map('n', '<script><silent>', '<C-W><C-]> <SID>:exe v:count1."stag <SID><ctag>"<SID>tagzv<CR>') call s:map('n', '<script><silent>', '<C-W>g<C-]> <SID>:exe "stjump <SID><ctag>"<SID>tagzv<CR>') call s:map('n', '<script><silent>', '<C-W>g] <SID>:exe "stselect <SID><ctag>"<SID>tagzv<CR>') call s:map('n', '<script><silent>', '<C-W>} <SID>:exe v:count1."ptag <SID><ctag>"<CR>') call s:map('n', '<script><silent>', '<C-W>g} <SID>:exe "ptjump <SID><ctag>"<CR>') call s:map('n', '<script><silent>', 'gf <SID>c:find <SID><cfile><CR>') call s:map('n', '<script><silent>', '<C-W>f <SID>c:sfind <SID><cfile><CR>') call s:map('n', '<script><silent>', '<C-W><C-F> <SID>c:sfind <SID><cfile><CR>') call s:map('n', '<script><silent>', '<C-W>gf <SID>c:tabfind <SID><cfile><CR>') endif let &cpo = s:cpo_save unlet s:cpo_save if exists("g:did_ruby_ftplugin_functions") finish endif let g:did_ruby_ftplugin_functions = 1 function! RubyBalloonexpr() abort if !exists('s:ri_found') let s:ri_found = executable('ri') endif if s:ri_found let line = getline(v:beval_lnum) let b = matchstr(strpart(line,0,v:beval_col),'\%(\w\|[:.]\)*$') let a = substitute(matchstr(strpart(line,v:beval_col),'^\w*\%([?!]\|\s*=\)\?'),'\s\+','','g') let str = b.a let before = strpart(line,0,v:beval_col-strlen(b)) let after = strpart(line,v:beval_col+strlen(a)) if str =~ '^\.' let str = substitute(str,'^\.','#','g') if before =~ '\]\s*$' let str = 'Array'.str elseif before =~ '}\s*$' " False positives from blocks here let str = 'Hash'.str elseif before =~ "[\"'`]\\s*$" || before =~ '\$\d\+\s*$' let str = 'String'.str elseif before =~ '\$\d\+\.\d\+\s*$' let str = 'Float'.str elseif before =~ '\$\d\+\s*$' let str = 'Integer'.str elseif before =~ '/\s*$' let str = 'Regexp'.str else let str = substitute(str,'^#','.','') endif endif let str = substitute(str,'.*\.\s*to_f\s*\.\s*','Float#','') let str = substitute(str,'.*\.\s*to_i\%(nt\)\=\s*\.\s*','Integer#','') let str = substitute(str,'.*\.\s*to_s\%(tr\)\=\s*\.\s*','String#','') let str = substitute(str,'.*\.\s*to_sym\s*\.\s*','Symbol#','') let str = substitute(str,'.*\.\s*to_a\%(ry\)\=\s*\.\s*','Array#','') let str = substitute(str,'.*\.\s*to_proc\s*\.\s*','Proc#','') if str !~ '^\w' return '' endif silent! let res = substitute(system("ri -f rdoc -T \"".str.'"'),'\n$','','') if res =~ '^Nothing known about' || res =~ '^Bad argument:' || res =~ '^More than one method' return '' endif return res else return "" endif endfunction function! s:searchsyn(pattern, syn, flags, mode) abort let cnt = v:count1 norm! m' if a:mode ==# 'v' norm! gv endif let i = 0 call map(a:syn, 'hlID(v:val)') while i < cnt let i = i + 1 let line = line('.') let col = col('.') let pos = search(a:pattern,'W'.a:flags) while pos != 0 && index(a:syn, s:synid()) < 0 let pos = search(a:pattern,'W'.a:flags) endwhile if pos == 0 call cursor(line,col) return endif endwhile endfunction function! s:synid() abort return synID(line('.'),col('.'),0) endfunction function! s:wrap_i(back,forward) abort execute 'norm! k' execute 'norm '.a:forward let line = line('.') execute 'norm '.a:back if line('.') == line - 1 return s:wrap_a(a:back,a:forward) endif execute 'norm! jV' execute 'norm '.a:forward execute 'norm! k' endfunction function! s:wrap_a(back,forward) abort execute 'norm '.a:forward if line('.') < line('$') && getline(line('.')+1) ==# '' let after = 1 endif execute 'norm '.a:back while getline(line('.')-1) =~# '^\s*#' && line('.') - endwhile if exists('after') execute 'norm! V' execute 'norm '.a:forward execute 'norm! j' elseif line('.') > 1 && getline(line('.')-1) =~# '^\s*$' execute 'norm! kV' execute 'norm '.a:forward else execute 'norm! V' execute 'norm '.a:forward endif endfunction function! RubyCursorIdentifier() abort let asciicode = '\%(\w\|[]})\"'."'".']\)\@<!\%(?\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)\)' let number = '\%(\%(\w\|[]})\"'."'".']\s*\)\@<!-\)\=\%(\<[[:digit:]_]\+\%(\.[[:digit:]_]\+\)\=\%([Ee][[:digit:]_]\+\)\=\>\|\<0[xXbBoOdD][[:xdigit:]_]\+\>\)\|'.asciicode let operator = '\%(\[\]\|<<\|<=>\|[!<>]=\=\|===\=\|[!=]\~\|>>\|\*\*\|\.\.\.\=\|=>\|[~^&|*/%+-]\)' let method = '\%(\.[_a-zA-Z]\w*\s*=>\@!\|\<[_a-zA-Z]\w*\>[?!]\=\)' let global = '$\%([!$&"'."'".'*+,./:;<=>?@\`~]\|-\=\w\+\>\)' let symbolizable = '\%(\%(@@\=\)\w\+\>\|'.global.'\|'.method.'\|'.operator.'\)' let pattern = '\C\s*\%('.number.'\|\%(:\@<!:\)\='.symbolizable.'\)' let [lnum, col] = searchpos(pattern,'bcn',line('.')) let raw = matchstr(getline('.')[col-1 : ],pattern) let stripped = substitute(substitute(raw,'\s\+=$','=',''),'^\s*[:.]\=','','') return stripped == '' ? expand("<cword>") : stripped endfunction function! RubyCursorTag() abort return substitute(RubyCursorIdentifier(), '^[$@]*', '', '') endfunction function! RubyCursorFile() abort let isfname = &isfname try set isfname+=: let cfile = expand('<cfile>') finally let isfname = &isfname endtry let pre = matchstr(strpart(getline('.'), 0, col('.')-1), '.*\f\@<!') let post = matchstr(strpart(getline('.'), col('.')), '\f\@!.*') if s:synid() ==# hlID('rubyConstant') let cfile = substitute(cfile,'\.\w\+[?!=]\=$','','') let cfile = substitute(cfile,'^::','','') let cfile = substitute(cfile,'::','/','g') let cfile = substitute(cfile,'\(\u\+\)\(\u\l\)','\1_\2', 'g') let cfile = substitute(cfile,'\(\l\|\d\)\(\u\)','\1_\2', 'g') return tolower(cfile) . '.rb' elseif getline('.') =~# '^\s*require_relative\s*\(["'']\).*\1\s*$' let cfile = expand('%:p:h') . '/' . matchstr(getline('.'),'\(["'']\)\zs.\{-\}\ze\1') let cfile .= cfile !~# '\.rb$' ? '.rb' : '' elseif getline('.') =~# '^\s*\%(require[( ]\|load[( ]\|autoload[( ]:\w\+,\)\s*\%(::\)\=File\.expand_path(\(["'']\)\.\./.*\1,\s*__FILE__)\s*$' let target = matchstr(getline('.'),'\(["'']\)\.\.\zs/.\{-\}\ze\1') let cfile = expand('%:p:h') . target let cfile .= cfile !~# '\.rb$' ? '.rb' : '' elseif getline('.') =~# '^\s*\%(require \|load \|autoload :\w\+,\)\s*\(["'']\).*\1\s*$' let cfile = matchstr(getline('.'),'\(["'']\)\zs.\{-\}\ze\1') let cfile .= cfile !~# '\.rb$' ? '.rb' : '' elseif pre.post =~# '\<File.expand_path[( ].*[''"]\{2\}, *__FILE__\>' && cfile =~# '^\.\.' let cfile = expand('%:p:h') . strpart(cfile, 2) else return substitute(cfile, '\C\v^(.*):(\d+)%(:in)=$', '+\2 \1', '') endif let cwdpat = '^\M' . substitute(getcwd(), '[\/]', '\\[\\/]', 'g').'\ze\[\/]' let cfile = substitute(cfile, cwdpat, '.', '') if fnameescape(cfile) !=# cfile return '+ '.fnameescape(cfile) else return cfile endif endfunction " " Instructions for enabling "matchit" support: " " 1. Look for the latest "matchit" plugin at " " http://www.vim.org/scripts/script.php?script_id=39 " " It is also packaged with Vim, in the $VIMRUNTIME/macros directory. " " 2. Copy "matchit.txt" into a "doc" directory (e.g. $HOME/.vim/doc). " " 3. Copy "matchit.vim" into a "plugin" directory (e.g. $HOME/.vim/plugin). " " 4. Ensure this file (ftplugin/ruby.vim) is installed. " " 5. Ensure you have this line in your $HOME/.vimrc: " filetype plugin on " " 6. Restart Vim and create the matchit documentation: " " :helptags ~/.vim/doc " " Now you can do ":help matchit", and you should be able to use "%" on Ruby " keywords. Try ":echo b:match_words" to be sure. " " Thanks to Mark J. Reed for the instructions. See ":help vimrc" for the " locations of plugin directories, etc., as there are several options, and it " differs on Windows. Email gsinclair@soyabean.com.au if you need help. " " vim: nowrap sw=2 sts=2 ts=8:
Close