" from https://github.com/vim-ruby/vim-ruby/wiki/VimRubySupport if !exists( "*RubyEndToken" ) function RubyEndToken() let current_line = getline( '.' ) let braces_at_end = '{\s*\(|\(,\|\s\|\w\)*|\s*\)\?$' let stuff_without_do = '^\s*\(class\|if\|unless\|begin\|case\|for\|module\|while\|until\|def\)' let with_do = 'do\s*\(|\(,\|\s\|\w\)*|\s*\)\?$' if match(current_line, braces_at_end) >= 0 return "\}\O" elseif match(current_line, stuff_without_do) >= 0 return "\end\O" elseif match(current_line, with_do) >= 0 return "\end\O" else return "\" endif endfunction endif imap =RubyEndToken()