कोष्ठक को शामिल करने के लिए क्षेत्र सेट करें


9

बिंदु या सक्रिय क्षेत्र से शुरू करते हुए, मैं जल्दी से (एक कीस्ट्रोक / कमांड में) 'विस्तार' कैसे कर सकता हूं ताकि अगले चरण में एनकोडिंग कोष्ठक शामिल हों?

अगर मैं इसके साथ शुरू करता हूं: ( |मतलब बिंदु)

(defn foo [x] (+ x |42))

या अगर मैं इसके साथ शुरू करता हूं: ( <और >चयनित क्षेत्र को ब्रैकेट करता है)

(defn foo [x] (+ x <42>|))

मैं समाप्त करना चाहता हूं

(defn foo [x] <(+ x 42)>|)

जवाबों:


10

उपयोग का विस्तार-region.el :

विस्तार क्षेत्र सिमेंटिक इकाइयों द्वारा चयनित क्षेत्र को बढ़ाता है। बस कुंजी को तब तक दबाए रखें जब तक कि आप जो चाहें उसका चयन न करें।

एक उदाहरण:

(setq alphabet-start "abc def")

सी पर कर्सर के साथ, यह पूरे शब्द एबीसी को चिह्नित करने से शुरू होता है, फिर उद्धरण एबीसी डीईएफ़ की सामग्री तक विस्तृत करें, फिर पूरे उद्धरण "एबीसी डीफ़" के लिए, फिर सेक्सप सेटक वर्णमाला-प्रारंभ-एबीसी की सामग्री तक। def "और अंत में पूरे सेक्सप में।

आप इसे इस तरह सेट कर सकते हैं:

(require 'expand-region)
(global-set-key (kbd "C-=") 'er/expand-region)

यदि आप बहुत दूर तक विस्तार करते हैं, तो आप एक नकारात्मक उपसर्ग के साथ क्षेत्र को फिर से अनुबंधित कर सकते हैं।


1
संदर्भ के लिए, expand-regionसूची को तुरंत चिह्नित करने के लिए विशिष्ट फ़ंक्शन को कहा जाता है er/mark-outside-pairs
नानी

4

मैं मानता हूं कि आपको expand-regionएक और जवाब में सुझाव दिया जाना चाहिए (कि मैं वोट कर रहा हूं)।

लेकिन सिर्फ अगर आप संबंधित अंतर्निहित कमांड से परिचित नहीं हैं:

C-M-u, backward-up-list
C-M-SPC, mark-sexp

अपने पहले उदाहरण में, जहां कोई क्षेत्र नहीं है, आप C-M-u C-M-SPCसंलग्न सूची को चिह्नित करने के लिए उपयोग कर सकते हैं । यदि पहले से ही एक चयनित क्षेत्र है तो ये कमांड इसे विस्तारित करते हैं। इसलिए यदि 42चयन किया गया है और आप हिट करते हैं तो C-M-uयह चयन को सूची की शुरुआत में पीछे की ओर बढ़ाएगा लेकिन इसमें समापन परिन शामिल नहीं होगा।

तो कुछ के अभाव में जैसे expand-regionमैं C-gकिसी भी वर्तमान चयन को रद्द करने के लिए मारा C-M-uजाऊंगा, फिर आप जितने चाहें उतने पारेंस वापस लेने के C-M-SPCलिए


3

सक्रिय क्षेत्र के मामले में, lispyh में वही होगा जो आप चाहते हैं। मेरी हाल की इंट्रो पोस्ट देखें ।

पहले मामले में, आपको करने की आवश्यकता है M-m h

अद्यतन: आपके पास सभी विकल्प lispy

के साथ शुरू:

(defn foo [x] (+ x ~42|))

यहाँ, ~निशान (क्षेत्र की शुरुआत) |को दर्शाता है , और बिंदु (क्षेत्र के अंत ) को दर्शाता है।

  1. आपके साथ h:

    (defn foo [x] |(+ x 42)~)
    
  2. आपके साथ l:

    (defn foo [x] ~(+ x 42)|)
    
  3. आपके साथ k(पूर्ववत j)

    (defn foo [x] (+ ~x| 42))
    
  4. के साथ 2kया kkआप:

    (defn foo [x] (~+| x 42))
    
  5. आपके साथ d:

    (defn foo [x] (+ x |42~))
    
  6. आपके साथ d>(पूर्ववत <)

    (defn foo [x] (+ |x 42~))
    
  7. के साथ d2>या d>>आप:

    (defn foo [x] (|+ x 42~))
    
  8. आपके साथ m:

    (defn foo [x] (+ x 42|))
    

बस संक्षेप में प्रस्तुत करने, जब इस क्षेत्र में सक्रिय है, h, j, k, l तीर है कि इस क्षेत्र के लिए कदम है। >बिंदु की दिशा में एक शब्दार्थ इकाई द्वारा क्षेत्र बढ़ता है। <बिंदु की दिशा में एक शब्दार्थ इकाई द्वारा क्षेत्र को सिकोड़ता है। mनिशान को निष्क्रिय कर देता है। iक्षेत्र के पहले तत्व का चयन करता है, और dबिंदु और निशान का आदान - प्रदान करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.