2009-10-27 4 views
12

Ich benutze vim für Ruby, PHP und Perl Entwicklung. Es gibt die Abkürzung %, um vom Beginn eines Blocks (Unterprogramm/Funktion/Methode/if) zum Ende und umgekehrt zu springen. Für mich ein % auf einem Do/End-Tag in Ruby funktioniert nicht.Wie springt man mit Vim von einem Ende zum anderen eines Ruby Blocks?

Wie kann ich das mit vim machen?

+1

% an der entsprechenden Halterung oder Klammer springt, das ist, warum es nicht in Ruby funktioniert . Immer noch eine gute Frage, würde meine Vermutung auf die Syntax/Falten Ausdrücke trampen, aber ich habe keine wirkliche Ahnung ... :) – falstro

Antwort

11

Die matchit plugin ermöglicht die Zuordnung von mehr als nur Klammern und Kommentare. Eine Rubinversion kann here gefunden werden.

+0

das Plugin ist super, auch sehr hilfreich für HTML-Tags. Mit do und end habe ich ein Problem. Ich kann vom Ende springen -> tue, aber ich kann nicht von dieser Position zurückspringen, um zu enden, weil ich nicht am Anfang der Linie denke. – gustavgans

+6

Beachten Sie, dass mit neueren Versionen von Vim, Matchit ist standardmäßig enthalten, und soweit ich das beurteilen kann, Ruby-Matchit.Vim bricht nur Dinge. Installiere nichts. Alles was Sie wollen, ist das folgende in Ihrer .vimrc (es ist nicht standardmäßig wegen Kompatibilitätsproblemen aktiviert): 'runtime macros/matchit.vim' –

+1

Wenn jemand [Vundle] benutzt (https://github.com/gmarik/Vundle. vim), fügen Sie einfach 'Bundle 'vim-scripts \ matchit.zip' zu Ihrer .vimrc hinzu und führen Sie BundleInstall aus. –

6

mit den matchit plugin und dieser Code in ~/.vim/ftplugin/ruby.vim es funktioniert jetzt :)

" 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 
Verwandte Themen