2009-10-27 13 views
12

मैं रूबी, PHP और perl विकास के लिए vim का उपयोग कर रहा हूँ। एक ब्लॉक (subroutine/function/method/if) की शुरुआत से अंत तक और इसके विपरीत से कूदने के लिए शॉर्टकट % है। मेरे लिए % रूबी में एक डू/एंड टैग पर काम नहीं करता है।विम का उपयोग करके रूबी ब्लॉक के अंत तक कैसे कूदें?

मैं इसे विम के साथ कैसे कर सकता हूं?

+1

% मिलान ब्रैकेट या ब्रेस के लिए कूदता है, यही कारण है कि यह गहरे लाल रंग का में काम नहीं करता है । अभी भी एक अच्छा सवाल है, मेरा अनुमान वाक्यविन्यास/तह अभिव्यक्तियों पर हिचकिचाहट करना होगा, लेकिन मेरे पास कोई वास्तविक सुराग नहीं है ... :) – falstro

उत्तर

11

matchit plugin केवल ब्रांड्स और टिप्पणियों से अधिक मिलान करने की अनुमति देता है। एक रूबी संस्करण here पाया जा सकता है।

+0

प्लगइन बहुत अच्छा है, HTML टैग के लिए भी बहुत उपयोगी है। डू एंड एंड के साथ मुझे कोई समस्या है। मैं अंत से कूद सकता हूं -> करो, लेकिन मैं इस पोस्टियन रिटर्न से अंत तक कूद नहीं सकता, क्योंकि मुझे लगता है कि लाइन की शुरुआत में नहीं है। – gustavgans

+6

ध्यान दें कि विम के हाल के संस्करणों के साथ, मिलान डिफ़ॉल्ट रूप से शामिल किया गया है, और जहां तक ​​मैं कह सकता हूं, ruby-matchit.vim बस चीजों को तोड़ देता है। एक चीज़ स्थापित मत करो। आप जो चाहते हैं वह आपके .vimrc में निम्नलिखित है (यह संगतता समस्याओं के कारण डिफ़ॉल्ट रूप से सक्षम नहीं है): 'रनटाइम मैक्रोज़/matchit.vim' –

+1

अगर कोई [वंडल] (https://github.com/gmarik/Vundle का उपयोग कर रहा है। vim), बस अपने। vimrc पर 'बंडल' vim-scripts \ matchit.zip'' जोड़ें और BundleInstall चलाएं। –

6
matchit plugin साथ

और ~/.vim/ftplugin/ruby.vim में इस कोड को अब यह काम करता है :)

" 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 
संबंधित मुद्दे