एक निश्चित संख्या में रिक्त स्थान द्वारा Emacs में पाठ के चयनित क्षेत्र को कैसे स्थानांतरित किया जाए?


26

मैं अजगर कोड लिख रहा हूं, इसलिए लाइनों को स्थानांतरित करना / स्थानांतरित करना व्यक्तिगत रूप से प्रत्येक पंक्ति से गुजरने से बचने के लिए महत्वपूर्ण है। मैं बिना एड-ऑन के यह कैसे कर सकता हूं? क्या ऐसा करने के लिए ऑपरेशन कीस्ट्रोक कमांड का एक प्रकार है?


3
गैर-पायथन-विशिष्ट उत्तरों के लिए, emacs.stackexchange.com/q/11 और emacs.stackexchange.com/q/18 देखें ।
लेगोस्कोपिया

जवाबों:


40

कमांड का उपयोग करें indent-rigidly, जो C-x TABडिफ़ॉल्ट रूप से बाध्य है ।

आप उपसर्ग तर्क का उपयोग करके रिक्त स्थान की संख्या निर्दिष्ट कर सकते हैं , जैसे कि C-5 C-x TAB

या फिर आप कमांड को लागू कर सकते हैं और फिर इंडेंट स्तर को समायोजित करने के लिए बाएं / दाएं तीर का उपयोग कर सकते हैं।


आप उपसर्ग तर्क कैसे जोड़ते हैं?
वास

1
उदाहरण के C-5 C-x TABलिए वर्तमान क्षेत्र 5 रिक्त स्थान इंडेंट करने का प्रयास करें ।
18

महान है, लेकिन पहली पंक्ति भी क्यों नहीं चलती है? मुझे उन पंक्तियों के सेट को चुनने के लिए लाइन के आखिरी हिस्से को पकड़ना होगा जिन्हें मैं स्थानांतरित करना चाहता हूं।
वास

1
आपको पिछली पंक्ति से कुछ भी चयन करने की आवश्यकता नहीं है, लेकिन आप उस पहली पंक्ति की शुरुआत से चयन करना चाहते हैं जिसे आप इंडेंट करना चाहते हैं। उदाहरण के लिए, C-aलाइन की शुरुआत में जाने के लिए, C-SPCक्षेत्र को चिह्नित करना शुरू करने के लिए, C-n C-nदो लाइनों को नीचे ले जाने के C-5 C-x TABलिए , उन दो लाइनों को इंडेंट करने के लिए।
ग्लूकोज

1
"वास्तव में इंडेंट स्तर को समायोजित करने के लिए बाएं / दाएं तीर का उपयोग करें" वास्तव में? महान! मुझे यह नहीं पता था, और कभी-कभी मुझे यह अनुमान लगाना पड़ता था कि मुझे कितना स्थान जोड़ने या हटाने की आवश्यकता है। मुझे उम्मीद है कि यह मदद कर सकता है।
इम्ज़ - इवान ज़खरीशेव

9

यदि आप python-mode.el का उपयोग कर रहे हैं C-c >या C-c <बाएँ या दाएँ खंड को स्थानांतरित करने के लिए


यदि मैं इसके ऊपर की पंक्ति के अंतिम भाग का चयन नहीं करता हूं तो चयन की पहली पंक्ति कैसे बनी रहती है?
वास

मैं इस व्यवहार को पुन: पेश नहीं कर सकता। चयन की सभी पंक्ति स्थानांतरित हो जाती हैं। Emacs 24.4
18

ग्लूकास की टिप्पणी कहती है कि यह तब होगा जब आप लाइन की शुरुआत से चयन नहीं करते हैं
Vass

6

string-rectangleआदेश ( C-x r t) किसी भी मनमाने ढंग से पाठ (रिक्त स्थान शामिल है) एक चयनित क्षेत्र में सम्मिलित करने के लिए इस्तेमाल किया जा सकता।

मान लें कि आपके पास पाठ का यह खंड है और आप सभी लाइनों के सामने 5 रिक्त स्थान सम्मिलित करना चाहते हैं।

abc
  def
    ghi

पहले एक "0 कॉलम" क्षेत्र चुनें, जैसा कि नीचे दिखाया गया है (बिंदु 'a' अक्षर पर है और निशान 'ghi' वाली पंक्ति के उसी कॉलम में है:

▮bc
  def
▯   ghi

अब उपयोग करके string-rectangle, उस पाठ को डालें जिसे आप चयनित क्षेत्र में सम्मिलित करना चाहते हैं। इस उदाहरण में, हम सभी पंक्तियों पर 5 स्थान सम्मिलित करेंगे, जिसमें बिंदु और चिह्न को सम्मिलित करना होगा।

C-x r t M-5 SPC RET

जो नीचे दिए गए बल को इंडेंट टेक्स्ट देगा।

     abc
       def
         ghi

4

वहाँ C-x TAB(के लिए बाध्य है indent-rigidly)। यह इंगित करने के लिए एक उपसर्ग तर्क दें कि आप कितने स्थानों को इंडेंट करना चाहते हैं, नकारात्मक उस कई रिक्त स्थान को हटा देता है।


0

मैंने पाया कि Alt-4 और फिर SPC दबाकर, मुझे वांछित परिणाम मिलता है। यकीन नहीं है कि यह सबसे अच्छा तरीका है, लेकिन यह भी काम करता है।

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