2011-12-25 14 views
18

जीएनयू Emacs में एक ही रंग के साथ कोड में मिलान ब्रैकेट को हाइलाइट करने के लिए एक सुविधा है।Emacs में मिलान ब्रेसिज़

हालांकि जब ब्रैकेट संलग्न होता है तो कोड बहुत से घोंसले के साथ वास्तव में लंबा होता है, तो यह सुविधा वास्तव में उपयोगी नहीं होती है क्योंकि ब्रैकेट में से कोई एक दिखाई नहीं देगा।

,

for(int i=0; i< N; ++i) 
{ 
    /*Long code*/ 

} 

अगर मेरे कर्सर } ब्रेस पर है मैं कुछ सुविधा है जो मुझे कूद करने के लिए सक्षम हो जाएगा/{ ब्रेस देखते हैं, और फिर, अगर संतुष्ट करना चाहते हैं मैं निम्नलिखित है कहो, भविष्य में कोडिंग के लिए } ब्रेस पर वापस आएं।

क्या यह Emacs में संभव है?

+0

यह भी देखें http://stackoverflow.com/questions/9845661/with-emacs-how-to-go-to-the-pairing-balancing-parentheses –

उत्तर

25

यह वास्तव में एक मानक मानक बाध्यकारी है: C-M-f और C-M-b डिफ़ॉल्ट रूप से वापस और आगे जाने के लिए। अधिकांश मोड में C-M-f आपको मिलान करने वाली ब्रेस के लिए आगे ले जाएगा और C-M-b आपको मिलान करने वाली ब्रेस पर वापस ले जाएगा। यह उद्धरण जैसी चीजों के लिए भी काम करता है, वैसे ही वैसे ही।

यदि आप पहले से ही C-f और C-b नेविगेशन के लिए उपयोग करते हैं तो इन बाइंडिंग को याद रखना आसान है। (यदि आप नहीं करते हैं, तो आपको चाहिए।) वे अभिव्यक्ति द्वारा आगे बढ़ने के लिए उठाए गए चरित्र द्वारा आगे और पीछे की ओर बढ़ने की तरह हैं (जो मोड पर निर्भर करता है)।

+0

से जुड़ा हुआ वास्तव में जो मैं खोज रहा था। धन्यवाद! – smilingbuddha

+0

मुझे लगता है कि संदेश, या नेविगेशन को प्रदर्शित करने के बजाय, 2 ब्रेसिज़ के बीच पर्याप्त दूरी के मामले में, इसे स्क्रीन को 2 भागों में विभाजित करना चाहिए (द्वितीय भाग में डुप्लिकेट बफर के साथ) और दोनों ब्रेसिज़ दिखाएं। – aartist

1

पिछड़ा-सेक्सप मैं उपयोग करता हूं। ईएससी-बाएं से बाध्य। फिर ईएससी-सही पर वापस जाने के लिए

+2

मेरे मामले में (सी-मोड में) उन कार्यों को क्रमशः क्रमशः एमसीएफ और एमसीबी – Daimrod

1

पहली बात जो मदद कर सकती है, इस विकल्प के बारे में जानना है, अगर आप पहले से नहीं हैं: blink-matching-paren-distance। यदि लिंग बहुत बड़ा है तो आपको विकल्प मूल्य में वृद्धि करने की आवश्यकता है, या फिर माता-पिता मिलान बहुत जल्दी छोड़ देता है और जब कोई मेल नहीं खाता है तो यह मेल नहीं खाता है।

दूसरी बात जो मदद कर सकती है यह सुनिश्चित करना है कि blink-matching-paren और blink-matching-paren-on-screen दोनों गैर- nil हैं। फिर, उद्घाटन डेलीमीटर देखने के लिए, बस बंद करने वाले डिलीमीटर को हटाएं और फिर इसे फिर से टाइप करें। जब आप इसे डालेंगे, तो उद्घाटन एक स्पष्ट हो जाएगा।

1

mic paren आज़माएं जो वर्तमान स्क्रीन के बाहर मिलने पर भी मेल खाने वाले कोष्ठक कोड दिखाता है।

1
(defun px-match-paren (arg) 
    "Go to the matching paren if on a paren; otherwise insert <key>." 
    (interactive "p") 
    (cond 
    ((char-equal 41 (char-before)) (backward-list 1)) 
    ((char-equal 125 (char-before)) (backward-list 1)) 
    ((and 
    (char-equal 123 (char-before)) 
    (char-equal 10 (char-after))) 
    (backward-char 1) (forward-list 1)) 
    ((looking-at "\\s\(") (forward-list 1)) 
    ((looking-at "\\s\)") (backward-list 1)) 
    (t (self-insert-command (or arg 1))))) 

<key> चुड़ैल से आबद्ध इस आदेश उद्घाटन और समापन ब्रेस को चालू होगा अगर बिंदु के आगे या पीछे है, अन्यथा <key> सम्मिलित (ज्यादा vi के "%" की तरह)

मैं भी C-<key>forward-sexp करने के लिए बाध्य और C-S-<key> से backward-sexp इसलिए मैं वास्तव में फ़ाइल में फ़ंक्शंस के माध्यम से नेविगेट कर सकता हूं।

संबंधित मुद्दे