emacs: 4 स्थानों द्वारा अजगर कोड का इंडेंट / अनइंडेंट क्षेत्र कैसे?


60

मेरे पास emacs में चयनित अजगर कोड का एक क्षेत्र है। 4 स्थानों द्वारा हर लाइन को इंडेंट करने और एक करने के लिए सबसे कुशल तरीके क्या हैं?

आदर्श रूप से मैं कुछ ऐसा चाहूंगा जो संदर्भ के प्रति संवेदनशील न हो (जैसे। यह मुझे डॉकस्ट्रिंग्स के भीतर इंडेंट पास करने की अनुमति देगा जहां इंडेंटेशन पायथन सिंटैक्स से संबंधित नहीं है)।

मेरा मोड लाइन दिखाता है (Python)। वेब पर खोज करने पर मुझे python-modeइसके बजाय उपयोग करने की बहुत चर्चा मिली python, लेकिन मैंने केवल कुछ दिनों पहले emacs का उपयोग करना शुरू कर दिया था, इसलिए मुझे बदलने और उन्हें समझने का मौका मिलने से पहले मैं चूक को बदलने से सावधान हूं। अगर बदलने के लिए python-modeसबसे अच्छा विकल्प है तो मुझे यह स्वीकार करने में खुशी होगी कि एक उत्तर के रूप में।

मैंने क्या (मैनुअल से) कोशिश की है:

  • <TAB> कोई प्रभाव नहीं
  • C-M-\ कोई प्रभाव नहीं
  • C-x <TAB> (इंडेंट-रिग्लीली) प्रत्येक लाइन को एक कॉलम से इंडेंट करता है (और क्षेत्र को अचयनित करता है)
  • M-i एक टैब द्वारा एक पहली पंक्ति को इंडेंट करता है (8 रिक्त स्थान की लंबाई)
  • C-M-q - "CMq अपरिभाषित है"

एकमात्र तरीका जो मैंने पाया है वह रेगेक्स-रिप्लेसमेंट का उपयोग कर रहा है, लेकिन इस तरह के एक सरल कार्य के लिए कीस्ट्रोक्स की एक भयानक संख्या है।

जवाबों:



17

indent-rigidlyएक उपसर्ग तर्क लेता है जो दर्शाता है कि C-u 42 C-x TAB42 कॉलमों द्वारा इंडेंट कितना , और डिफ़ॉल्ट उपसर्ग तर्क 4 से है, C-u C-x TAB4 कॉलम द्वारा इंडेंट करता है।

यदि आप फिर से क्षेत्र का चयन करना चाहते हैं, तो C-x C-xबाद में करें।


8

संख्यात्मक उपसर्ग के साथ इंडेंट-रिग्लीली कमांड का उपयोग करें।

C-u 4 M-x indent-rigidlyचार स्थानों C-u -4 M-x indent-rigidlyको हटाने के लिए , चार स्थानों को हटाने के लिए क्षेत्र को इंडेंट करें ।


4

Cx Cx कोड को चिह्नित करता है और फिर Mx इंडेंट-फॉर-टैब-मोड

अगर आपने हर लाइन के लिए टैब दबाया है तो यह सेव है।


3

आप कॉलम मोड का भी उपयोग कर सकते हैं।

कॉलम मोड में लाइनों का चयन करें, फिर उन सभी को एक साथ चार स्थान जोड़ें:

  1. पहली पंक्ति के कॉलम 1 पर जाएं जिसे आप इंडेंट करना चाहते हैं।
  2. C-<space> चिह्न लगाना
  3. बिंदु को अंतिम लाइनों पर ले जाएं (कॉलम एक में रहें)
  4. C-x r tकॉलम मोड दर्ज करने के लिए (या C-<RET>यदि आपको CUA मोड मिल गया है)
  5. <space><space><space><space><RET>

आप चार स्थानों को हटाने के लिए एक समान पैंतरेबाज़ी कर सकते हैं - बस अपने चिह्नित क्षेत्र (चरण 2-3) में 4 कॉलम शामिल करें और हिट करें <DEL>


3

ऊपर चेन के समाधान को अपडेट करते हुए, वर्तमान में (एमएसीएस 24.4.1 पर परीक्षण किया गया) कमांड का नाम बदल दिया गया है। तो, मान लें कि आप चर अजगर इंडेंट के अनुसार इंडेंट करना चाहते हैं, तो कमांड्स अजगर-इंडेंट-शिफ्ट-लेफ्ट और अजगर-इंडेंट-शिफ्ट-राइट हैं। आप ऐसा कर सकते हैं:

  1. उन्हें टाइप करके M-x python-indent-shift-rightया जारी करेंM-x python-indent-shift-left

  2. डिफ़ॉल्ट अजगर-मोड शॉर्ट कट का उपयोग करें C-c >औरC-c <

  3. उनका प्रतिकार करो। जैसे, मेरे द्वारा उपयोग किए जाने वाले विंडो बटन वाले कीबोर्ड पर:

    (global-set-key (kbd "s-s") 'python-indent-shift-left) 
    (global-set-key (kbd "s-d") 'python-indent-shift-right)
    

0

संगतता ईमैक्स के साथ राजा है, बस https://github.com/magnars/multiple-cursors.el केM-i साथ गठबंधन करें और आपके पास अपना इंडेंट ब्लॉक कमांड है। वह तुम हो:

  1. M-> एन बार (जहां एन ब्लॉक में लाइनों की संख्या है)
  2. M-i

0

दोनों S-<LEFT>औरS-<RIGHT> में काम ठीक Pythonप्रमुख मोड। यह विशेष रूप से सुविधाजनक है कुआ मोड जहां C-cऔर C-xव्यवहार की नकल करने के लिए / कटौती परिवर्तन है जब एक क्षेत्र का चयन किया गया।

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