Emacs में किसी ब्लॉक का चयन या हाइलाइट कैसे करें?


84

मैं माउस का उपयोग किए बिना emacs में एक ब्लॉक को चुनना या हाइलाइट करना चाहता हूं, लेकिन इसे कीबोर्ड से विम के दृश्य मोड की तरह कर रहा हूं। कीबोर्ड से ऐसा करने का सबसे आसान तरीका क्या है?


जवाबों:


66

Emacs में क्षेत्र-आयत पर एक नज़र डालें।

संक्षेप में, आप के साथ हमेशा की तरह की तरह चयन शुरू Control- Space, तो इस क्षेत्र को मारने Control- x r kऔर पेस्ट (या झटका ) के साथ ब्लॉक को मार डाला Control- x r y


11
यह क्षेत्रों को नहीं मारता है, यह आयतों को मारता है, जो कि मेरे अनुभव में विम के दृश्य मोड से बहुत अलग है।
एलन

2
यह अलग कैसे है?
केन विलियम्स

73

यदि मैं प्रश्न को सही ढंग से समझता हूं, तो यह मूल रूप से आयताकार क्षेत्रों के बारे में नहीं है।

C-Spc वर्तमान स्थिति में एक निशान डालता है।

जहाँ भी आपका कर्सर बाद में है, अंतिम निशान और वर्तमान स्थिति के बीच का पाठ "चयनित" है (आप इसे सक्रिय करके हाइलाइट कर सकते हैं transient-mark-mode, लेकिन इसका मतलब यह भी होगा कि हाइलाइट न चाहते हुए भी निशान हटाना होगा)।

आप उस क्षेत्र पर कमांड के साथ काम कर सकते हैं जैसे:

C-w। । हत्या क्षेत्र। यह हटाता है और क्षेत्र को मार के रिंग में डालता है।
C-y। । झटका। यह मारने की अंगूठी से अंतिम स्निपेट सम्मिलित करता है।
M-y। । साइकिल मार अंगूठी। इसके तुरंत बाद C-y, यह दूसरे स्निपेट द्वारा यैंक किए गए भाग को किल रिंग में बदल देता है।
M-w। । क्षेत्र को मारने की अंगूठी में सहेजें। जैसे C-w, लेकिन डिलीट नहीं करता।

यह सिर्फ मूल उपयोग है। मार्क्स के अन्य उपयोग भी हैं। मैं ट्यूटोरियल ( C-h t) की सलाह देता हूं ।


6
वर्थ नोटिंग जो C-s C-rआमतौर पर इस संदर्भ में उपयोग किया जाता है ताकि क्षेत्र के अंत / शुरुआत का पता लगाया जा सके। (विशेष रूप से एक मैक्रो में उपयोगी है।)
ओडोयो

खैर, यह बहुत अच्छी आज्ञा है, लेकिन ... चिह्नित क्षेत्र का चयन कैसे करें? आखिरकार मुझे अभी भी इसकी आवश्यकता है, अर्थात निशान के बीच कोड को इंडेंट करने के लिए।
हाय-एंजेल

पिछले निशान और वर्तमान बिंदु के बीच इस क्षेत्र (जो है, जहां अपने कर्सर है) है चयनित क्षेत्र। जरा दौड़ो M-x indent-region
Svante

@Svante नहीं, यह चयनित नहीं है। हालांकि indent-regionकाम ठीक है, लेकिन c-indent-line-or-region(एक, जो टैब कुंजी से बंधा है ) नहीं है। अंतिम फ़ंक्शन चिह्नित क्षेत्रों पर नहीं , बल्कि चयनित लोगों पर कार्य करता है, अर्थात यह क्षेत्र हाइलाइट किया गया है जैसे कि आपने इसे माउस के साथ चुना था।
हाय-एंजेल

2
@YagamyLight आह, आप ऐसा कर सकते हैं C-Spcजहां आप निशान लगाते हैं । यह क्षणिक-चिह्न-मोड को अस्थायी रूप से सक्रिय करता है (जब तक कि आप रद्द नहीं करते (साथ C-g))। फिर चयनित क्षेत्र को देखने के लिए बिंदु को स्थानांतरित करें।
श्वेन्ते



10

हालाँकि C-SPC, जहाँ भी आपकी बात है, वहां से किसी चीज़ को चिह्नित करना शुरू करने का एक सामान्य तरीका है, अक्सर तेज़ / आसान तरीके होते हैं जो स्पष्ट रूप से शुरू / अंत बिंदुओं पर जाने में शामिल नहीं होते हैं ...

अंतर्निहित चयन शॉर्टकट

  • M-h- एक पैराग्राफ को चिह्नित करने के लिए एक महत्वपूर्ण साधन । एक "पैराग्राफ" का अर्थ अक्सर कोड का एक ब्लॉक होता है।

  • C-M-hऔर C-M-@- क्रमशः लिंग और डिफ्यूज़ को चिह्नित करने के लिए । यह कई भाषाओं के लिए काम करता है, न कि केवल लिस्प के लिए।

  • शिफ्ट को रोकें - आंदोलन के दौरान हाइलाइट करने का दूसरा तरीका। उदाहरण के लिए, M-S-fएक पूरे शब्द का चयन करता है। यह है shift-select-mode, और यह एमएसीएस 24+ में डिफ़ॉल्ट रूप से सक्षम है। कुछ (गैर-चिकलेट) कीबोर्ड पर, आपको C-S-एक ही पिंकी के साथ पकड़ करने में सक्षम होना चाहिए ।

चयन बढ़ाने के लिए आप इनमें से किसी को भी बार-बार दबा सकते हैं।

(नोट: प्रयोग C-gकरते समय अंकन को रद्द करने के लिए अक्सर उपयोग करें ।)

ऐड-ऑन

कुछ ऐड-ऑन पैकेज हैं जो क्षेत्रों और चीजों को चुनने में सुधार करते हैं। ये सभी अच्छी तरह से एक साथ खेलते हैं और विभिन्न उपयोग मामलों में फिट होते हैं। उन सभी का उपयोग करें!

  • विस्तार-क्षेत्र : विस्तार क्षेत्र चयनित इकाइयों को शब्दार्थ इकाइयों द्वारा बढ़ाता है। बस कुंजी को तब तक दबाए रखें जब तक कि आप जो चाहें उसका चयन न करें। C-=इसके लिए एक अनुशंसित बंधन है। जो आपको चाहिए, उसे पाने के लिए इसे कुछ बार मारो।

  • ईज़ी-किल :M-wविभिन्न प्रकार की चीज़ों का चयन करने के लिएउपयोगऔर एक महामारी, जैसे शब्द, सेक्सप, सूचियाँ, आदि।

  • Zop-to-Char : जैप-टू-चार की तरह , लेकिन अच्छा चयन और अन्य मेनू-चालित क्रियाएं प्रदान करता है।

  • विसरित एचएल : हाइलाइट किए गए विस्थापित क्षेत्रों को हाइलाइट करें। diff-hl-mark-hunkहंक को चुनने / चिह्नित करने के लिएउपयोग करें।


7

उपयोग Control- Spaceएक चिह्न सेट करने और अपने कर्सर को स्थानांतरित करने के लिए।

आपके transient-mark-modeलिए चयन पर प्रकाश डाला जाएगा। M- x transient-mark-mode

आप कस्टमाइज़ेशन का उपयोग करके डिफ़ॉल्ट रूप से इस मोड को सक्षम करने के लिए Emacs सेटअप कर सकते हैं। M- x customize-option RET transient-mark-mode


1

... और अगर आप उबंटू का उपयोग कर रहे हैं और C-spcआपके लिए काम नहीं कर रहा है: आपको आईबस "अगली इनपुट विधि" कीबाइंट को साफ करने की आवश्यकता है, जैसे कि

ibus-setup"बाइंडिंग इनपुट विधि" के लिए कुंजी बाइंडिंग को किसी अन्य चीज़ में चलाएं और बदलें (या "..." बटन और फिर "डिलीट" बटन पर क्लिक करके इसे पूरी तरह से हटा दें)।

SO प्रश्न के उत्तर से लिया गया उद्धरण ।


0

एडिन सल्कोविक के उत्तर का विस्तार करने के लिए, यदि आप सीयूए मोड का उपयोग करते हैं, तो आप एक दृश्य ब्लॉक चयन शुरू करने के लिए उपयोग कर सकते हैं। सीयूए के प्रलेखन में वर्णित ब्लॉक चयन को नियंत्रित करने के लिए बहुत सारे शॉर्टकट हैं ।


-1

25 Emacs के साथ, बस दबाएँ C- Spaceऔर फिर अपना कर्सर ले जाएँ जहाँ भी आप पाठ के क्षेत्र को हाइलाइट करना / चयन करना चाहते हैं जिसमें आपकी रुचि हो। उसके बाद, आपको इन आदेशों की आवश्यकता हो सकती है:

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