X7ROOT File Manager
Current Path:
/usr/share/vim/vim80/ftplugin
usr
/
share
/
vim
/
vim80
/
ftplugin
/
??
..
??
README.txt
(869 B)
??
a2ps.vim
(470 B)
??
aap.vim
(716 B)
??
abap.vim
(800 B)
??
abaqus.vim
(3.31 KB)
??
ada.vim
(6.26 KB)
??
alsaconf.vim
(438 B)
??
ant.vim
(1.31 KB)
??
arch.vim
(431 B)
??
art.vim
(410 B)
??
aspvbs.vim
(1.87 KB)
??
automake.vim
(337 B)
??
awk.vim
(411 B)
??
bdf.vim
(449 B)
??
bst.vim
(333 B)
??
btm.vim
(316 B)
??
bzl.vim
(2.99 KB)
??
c.vim
(1.92 KB)
??
calendar.vim
(462 B)
??
cdrdaoconf.vim
(383 B)
??
ch.vim
(472 B)
??
changelog.vim
(8.68 KB)
??
chicken.vim
(1.62 KB)
??
clojure.vim
(3.74 KB)
??
cmake.vim
(359 B)
??
cobol.vim
(9.24 KB)
??
conf.vim
(434 B)
??
config.vim
(1.24 KB)
??
context.vim
(4.26 KB)
??
cpp.vim
(288 B)
??
crm.vim
(414 B)
??
cs.vim
(802 B)
??
csc.vim
(734 B)
??
csh.vim
(1.59 KB)
??
css.vim
(528 B)
??
cucumber.vim
(5 KB)
??
cvsrc.vim
(399 B)
??
debchangelog.vim
(11.23 KB)
??
debcontrol.vim
(1.8 KB)
??
denyhosts.vim
(383 B)
??
dictconf.vim
(434 B)
??
dictdconf.vim
(435 B)
??
diff.vim
(355 B)
??
dircolors.vim
(431 B)
??
docbk.vim
(530 B)
??
dockerfile.vim
(356 B)
??
dosbatch.vim
(777 B)
??
dosini.vim
(458 B)
??
dtd.vim
(1.1 KB)
??
dtrace.vim
(1.12 KB)
??
eiffel.vim
(3.99 KB)
??
elinks.vim
(436 B)
??
erlang.vim
(1.77 KB)
??
eruby.vim
(3.09 KB)
??
eterm.vim
(470 B)
??
falcon.vim
(1.31 KB)
??
fetchmail.vim
(428 B)
??
flexwiki.vim
(1.83 KB)
??
fortran.vim
(4.58 KB)
??
framescript.vim
(780 B)
??
fvwm.vim
(390 B)
??
gdb.vim
(293 B)
??
git.vim
(1.32 KB)
??
gitcommit.vim
(2.18 KB)
??
gitconfig.vim
(376 B)
??
gitrebase.vim
(1.42 KB)
??
gitsendemail.vim
(157 B)
??
go.vim
(365 B)
??
gpg.vim
(433 B)
??
gprof.vim
(939 B)
??
groovy.vim
(343 B)
??
group.vim
(425 B)
??
grub.vim
(434 B)
??
haml.vim
(1.84 KB)
??
hamster.vim
(1.88 KB)
??
haskell.vim
(445 B)
??
help.vim
(442 B)
??
hgcommit.vim
(363 B)
??
hog.vim
(1.36 KB)
??
hostconf.vim
(383 B)
??
hostsaccess.vim
(436 B)
??
html.vim
(1.59 KB)
??
htmldjango.vim
(331 B)
??
indent.vim
(454 B)
??
initex.vim
(1005 B)
??
ishd.vim
(1.23 KB)
??
j.vim
(3.31 KB)
??
java.vim
(1.65 KB)
??
javascript.vim
(1.02 KB)
??
jproperties.vim
(321 B)
??
json.vim
(360 B)
??
jsp.vim
(1.96 KB)
??
kconfig.vim
(703 B)
??
kwt.vim
(851 B)
??
ld.vim
(470 B)
??
less.vim
(502 B)
??
lftp.vim
(434 B)
??
libao.vim
(440 B)
??
limits.vim
(436 B)
??
liquid.vim
(1.85 KB)
??
lisp.vim
(769 B)
??
logcheck.vim
(500 B)
??
loginaccess.vim
(442 B)
??
logindefs.vim
(440 B)
??
logtalk.dict
(1.75 KB)
??
logtalk.vim
(401 B)
??
lprolog.vim
(1.25 KB)
??
lua.vim
(973 B)
??
m4.vim
(426 B)
??
mail.vim
(1.08 KB)
??
mailaliases.vim
(383 B)
??
mailcap.vim
(434 B)
??
make.vim
(935 B)
??
man.vim
(5.51 KB)
??
manconf.vim
(444 B)
??
markdown.vim
(1.15 KB)
??
matlab.vim
(754 B)
??
mf.vim
(3.17 KB)
??
modconf.vim
(477 B)
??
mp.vim
(3.63 KB)
??
mplayerconf.vim
(472 B)
??
mrxvtrc.vim
(798 B)
??
msmessages.vim
(1.11 KB)
??
muttrc.vim
(467 B)
??
nanorc.vim
(447 B)
??
neomuttrc.vim
(532 B)
??
netrc.vim
(428 B)
??
nsis.vim
(1.29 KB)
??
objc.vim
(296 B)
??
ocaml.vim
(22.5 KB)
??
occam.vim
(1.27 KB)
??
pamconf.vim
(433 B)
??
pascal.vim
(667 B)
??
passwd.vim
(424 B)
??
pdf.vim
(2.55 KB)
??
perl.vim
(2.78 KB)
??
perl6.vim
(2.47 KB)
??
php.vim
(2.75 KB)
??
pinfo.vim
(435 B)
??
plaintex.vim
(1.12 KB)
??
postscr.vim
(1006 B)
??
procmail.vim
(479 B)
??
prolog.vim
(440 B)
??
protocols.vim
(457 B)
??
pyrex.vim
(766 B)
??
python.vim
(5.43 KB)
??
qf.vim
(459 B)
??
quake.vim
(439 B)
??
r.vim
(858 B)
??
racc.vim
(449 B)
??
readline.vim
(438 B)
??
registry.vim
(740 B)
??
reva.vim
(709 B)
??
rhelp.vim
(738 B)
??
rmd.vim
(1.45 KB)
??
rnc.vim
(431 B)
??
rnoweb.vim
(1.01 KB)
??
rpl.vim
(620 B)
??
rrst.vim
(1.08 KB)
??
rst.vim
(456 B)
??
ruby.vim
(16.61 KB)
??
rust.vim
(6.42 KB)
??
sass.vim
(607 B)
??
sbt.vim
(347 B)
??
scala.vim
(1.12 KB)
??
scheme.vim
(1.36 KB)
??
screen.vim
(436 B)
??
scss.vim
(239 B)
??
sensors.vim
(455 B)
??
services.vim
(452 B)
??
setserial.vim
(439 B)
??
sgml.vim
(1.18 KB)
??
sh.vim
(1.17 KB)
??
sieve.vim
(469 B)
??
slpconf.vim
(477 B)
??
slpreg.vim
(476 B)
??
slpspi.vim
(467 B)
??
spec.vim
(5.73 KB)
??
sql.vim
(21.11 KB)
??
sshconfig.vim
(441 B)
??
sudoers.vim
(438 B)
??
svg.vim
(1.17 KB)
??
sysctl.vim
(453 B)
??
systemd.vim
(158 B)
??
systemverilog.vim
(239 B)
??
tcl.vim
(1002 B)
??
tcsh.vim
(1.18 KB)
??
terminfo.vim
(430 B)
??
tex.vim
(1.6 KB)
??
text.vim
(433 B)
??
tmux.vim
(292 B)
??
treetop.vim
(416 B)
??
tt2html.vim
(434 B)
??
udevconf.vim
(434 B)
??
udevperm.vim
(432 B)
??
udevrules.vim
(426 B)
??
updatedb.vim
(443 B)
??
vb.vim
(1.86 KB)
??
verilog.vim
(1.93 KB)
??
vhdl.vim
(3.42 KB)
??
vim.vim
(3.14 KB)
??
vroom.vim
(924 B)
??
xdefaults.vim
(481 B)
??
xf86conf.vim
(434 B)
??
xhtml.vim
(1.99 KB)
??
xinetd.vim
(476 B)
??
xml.vim
(1.87 KB)
??
xmodmap.vim
(434 B)
??
xs.vim
(465 B)
??
xsd.vim
(1.14 KB)
??
xslt.vim
(539 B)
??
yaml.vim
(464 B)
??
zimbu.vim
(5.26 KB)
??
zsh.vim
(818 B)
Editing: 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> " ---------------------------------------------------------------------------- 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\:\@!\>' . \ ',{:},\[:\],(:)' let b:match_skip = \ "synIDattr(synID(line('.'),col('.'),0),'name') =~ '" . \ "\\<ruby\\%(String\\|StringDelimiter\\|ASCIICode\\|Escape\\|" . \ "Regexp\\|RegexpDelimiter\\|" . \ "Interpolation\\|NoInterpolation\\|Comment\\|Documentation\\|" . \ "ConditionalModifier\\|RepeatModifier\\|OptionalDo\\|" . \ "Function\\|BlockArgument\\|KeywordAsMethod\\|ClassVariable\\|" . \ "InstanceVariable\\|GlobalVariable\\|Symbol\\)\\>'" endif setlocal formatoptions-=t formatoptions+=croql setlocal include=^\\s*\\<\\(load\\>\\\|require\\>\\\|autoload\\s*:\\=[\"']\\=\\h\\w*[\"']\\=,\\) setlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'\%(\.rb\)\=$','.rb','') setlocal suffixesadd=.rb if exists("&ofu") && has("ruby") setlocal omnifunc=rubycomplete#Complete endif " To activate, :set ballooneval if has('balloon_eval') && exists('+balloonexpr') setlocal balloonexpr=RubyBalloonexpr() endif " TODO: "setlocal define=^\\s*def setlocal comments=:# 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' 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 = substitute(&g:path,',,$',',','') . ',' . 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') 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 fo< inc< inex< sua< def< com< cms< path< tags< kp<" \."| unlet! b:browsefilter b:match_ignorecase b:match_words b:match_skip" \."| if exists('&ofu') && has('ruby') | setl ofu< | endif" \."| if has('balloon_eval') && exists('+bexpr') | 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:0 ? a:1 : '') a:map let b:undo_ftplugin .= '|sil! '.a:mode.'unmap <buffer> '.from endif endfunction cmap <buffer><script><expr> <Plug><cword> substitute(RubyCursorIdentifier(),'^$',"\022\027",'') cmap <buffer><script><expr> <Plug><cfile> substitute(RubyCursorFile(),'^$',"\022\006",'') let b:undo_ftplugin .= "| sil! cunmap <buffer> <Plug><cword>| 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> 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\<Bar>rubyClass','b','n')<CR> nnoremap <silent> <buffer> ]] :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>','rubyModule\<Bar>rubyClass','','n')<CR> nnoremap <silent> <buffer> [] :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>rubyClass','b','n')<CR> nnoremap <silent> <buffer> ][ :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>rubyClass','','n')<CR> xnoremap <silent> <buffer> [[ :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>','rubyModule\<Bar>rubyClass','b','v')<CR> xnoremap <silent> <buffer> ]] :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>','rubyModule\<Bar>rubyClass','','v')<CR> xnoremap <silent> <buffer> [] :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>rubyClass','b','v')<CR> xnoremap <silent> <buffer> ][ :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>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-W> <Plug><cword>') 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', '<silent>', '<C-]> <SID>:exe v:count1."tag <Plug><cword>"<SID>tagzv<CR>') call s:map('n', '<silent>', 'g<C-]> <SID>:exe "tjump <Plug><cword>"<SID>tagzv<CR>') call s:map('n', '<silent>', 'g] <SID>:exe "tselect <Plug><cword>"<SID>tagzv<CR>') call s:map('n', '<silent>', '<C-W>] <SID>:exe v:count1."stag <Plug><cword>"<SID>tagzv<CR>') call s:map('n', '<silent>', '<C-W><C-]> <SID>:exe v:count1."stag <Plug><cword>"<SID>tagzv<CR>') call s:map('n', '<silent>', '<C-W>g<C-]> <SID>:exe "stjump <Plug><cword>"<SID>tagzv<CR>') call s:map('n', '<silent>', '<C-W>g] <SID>:exe "stselect <Plug><cword>"<SID>tagzv<CR>') call s:map('n', '<silent>', '<C-W>} <SID>:exe v:count1."ptag <Plug><cword>"<CR>') call s:map('n', '<silent>', '<C-W>g} <SID>:exe "ptjump <Plug><cword>"<CR>') call s:map('n', '<silent>', 'gf <SID>c:find <Plug><cfile><CR>') call s:map('n', '<silent>', '<C-W>f <SID>c:sfind <Plug><cfile><CR>') call s:map('n', '<silent>', '<C-W><C-F> <SID>c:sfind <Plug><cfile><CR>') call s:map('n', '<silent>', '<C-W>gf <SID>c:tabfind <Plug><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 while i < cnt let i = i + 1 let line = line('.') let col = col('.') let pos = search(a:pattern,'W'.a:flags) while pos != 0 && s:synname() !~# a:syn let pos = search(a:pattern,'W'.a:flags) endwhile if pos == 0 call cursor(line,col) return endif endwhile endfunction function! s:synname() abort return synIDattr(synID(line('.'),col('.'),0),'name') endfunction function! s:wrap_i(back,forward) abort execute 'norm k'.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'.a:forward.'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'.a:forward.'j' elseif line('.') > 1 && getline(line('.')-1) =~# '^\s*$' execute 'norm kV'.a:forward else execute 'norm V'.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! 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\@!.*') let ext = getline('.') =~# '^\s*\%(require\%(_relative\)\=\|autoload\)\>' && cfile !~# '\.rb$' ? '.rb' : '' if s:synname() ==# 'rubyConstant' let cfile = substitute(cfile,'\.\w\+[?!=]\=$','','') 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') . ext 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 . ext elseif getline('.') =~# '^\s*\%(require \|load \|autoload :\w\+,\)\s*\(["'']\).*\1\s*$' let cfile = matchstr(getline('.'),'\(["'']\)\zs.\{-\}\ze\1') . ext 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:
Upload File
Create Folder