2009-10-27 21 views
12

Estoy usando vim para el desarrollo de ruby, php y perl. Existe el atajo % para saltar desde el principio de un bloque (subrutina/función/método/si) hasta el final y viceversa. Para mí, % en una etiqueta do/end en ruby ​​no funciona.¿Cómo saltar desde do al final de un bloque Ruby usando Vim?

¿Cómo puedo hacer eso con vim?

+1

% salta al soporte o comillas correspondientes, es por eso que no funciona en rubí . Todavía es una buena pregunta, mi conjetura sería hacer autostop en las expresiones de sintaxis/plegado, pero no tengo ni idea ... :) – falstro

Respuesta

11

El matchit plugin permite hacer coincidir algo más que paréntesis y comentarios. Se puede encontrar una versión ruby ​​here.

+0

el plugin es genial, también muy útil para etiquetas HTML. Con do y end Tengo un problema. Puedo saltar desde el final -> hacer, pero no puedo saltar desde esta posición hasta el final, porque creo que no está al principio de la línea. – gustavgans

+6

Tenga en cuenta que con las versiones más recientes de Vim, matchit está incluido por defecto, y por lo que yo sé, ruby-matchit.vim simplemente rompe las cosas. No instales nada Todo lo que desea es lo siguiente en su .vimrc (no está habilitado por defecto debido a problemas de compatibilidad): 'runtime macros/matchit.vim' –

+1

Si alguien está usando [Vundle] (https://github.com/gmarik/Vundle. vim), simplemente agrega 'Bundle 'vim-scripts \ matchit.zip'' a tu .vimrc y ejecuta BundleInstall. –

6

con el matchit plugin y este código en ~/.vim/ftplugin/ruby.vim funciona ahora :)

" Matchit support: 
if exists("loaded_matchit") 
    if !exists("b:match_words") 
    let b:match_ignorecase = 0 
    let b:match_words = 
\ '\%(\%(\%(^\|[;=]\)\s*\)\@<=\%(class\|module\|while\|begin\|until\|for\|if\|unless\|def\|case\)\|\<do\)\>:' . 
\ '\<\%(else\|elsif\|ensure\|rescue\|when\)\>:\%(^\|[^.]\)\@<=\<end\>' 
    endif 
endif 
Cuestiones relacionadas