Emacs या Vim में * संपादन * ब्लॉक करें


9

jEdit ब्लॉक एडिटिंग का समर्थन करता है, लेकिन Emacs और Vim को एक ही विषय पर कुछ गंभीर प्रयोज्य समस्याएँ हैं। यदि कोई व्यक्ति यहां अज्ञात में भर सकता है, तो संपादक का उपयोग करना अधिक सहनीय होगा:

  • वास्तविक आयताकार चयन : जहां स्क्रीन पर चयन एक आयत है, न कि एक रैखिक चयन जो तब एक क्षेत्र की गणना करने के लिए उपयोग किया जाता है क्योंकि Emacs सीमित लगता है।
    • jEdit: दबाए रखें Ctrlऔर चुनें।
    • विम: क्लिक करें Ctrl-vऔर चुनें।
    • Emacs: अज्ञात ; ऐसा लगता है कि 400+ लाइनों का प्लगइन आवश्यक है।
  • आयताकार संपादन को लाइव करें : देखें कि ब्लॉक चयन के बाद आपके द्वारा संपादित सभी लाइनों पर परिणाम कैसा दिखेगा ।
    • jEdit: बस लिखना शुरू करें, और आप जाते ही अंतिम परिणाम देखेंगे।
    • विम: क्लिक करें Shift-iऔर टाइप करें। जब तक आप Escसम्मिलित मोड से बाहर नहीं निकलेंगे, तब तक केवल पहली पंक्ति पर अंतिम परिणाम दिखाएंगे । अज्ञात है कि तुरंत सभी लाइनों पर परिणाम देखने का कोई तरीका है।
    • Emacs: अज्ञात ; ऐसा लगता है कि C-x r tदबाने के बाद भरने के लिए एकमात्र तरीका है और पाठ को सेट करना Ret
  • पाठ के बाहर के पदों पर चयन शुरू और समाप्त करें : उदाहरण के लिए, मैं प्रत्येक पंक्ति के एन पहले वर्णों को हटाना चाहूंगा, लेकिन पहली और अंतिम पंक्तियों में एन अक्षर से कम होते हैं।
  • ब्लॉक ब्लॉक इनलाइन : कॉपी किए गए ब्लॉक को ऐसे चिपकाएं जैसे कि आप कई लाइनों को चिपका रहे हों, जैसे कि टेक्स्ट को पहले से ही नीचे की ओर धकेलें , सही नहीं।
    • jEdit: डिफ़ॉल्ट। एक ब्लॉक को एक ब्लॉक के रूप में पेस्ट करने के लिए आपको पहले एक और ब्लॉक चयन करने की आवश्यकता है।
    • विम: OEscVp
    • Emacs: अज्ञात

सामान्य Emacs ब्लॉक चयन कार्यक्षमता cua-modeप्लगइन में पाया जा सकता है ।


जाहिरा तौर पर Emacs 'कॉलम एडिटिंग मोड किसी तरह का लाइव आयत संपादन कर सकता है: youtube.com/watch?v=k-6BVjlBSVo
Tom

इमैक के बारे में केवल एक अवलोकन 400+ लाइनों "प्लगइन" .. gedit के लिए कुछ इसी तरह का ऐडऑन, जिसे मल्टी- एडिट कहा जाता है, में अजगर कोड की 1000+ लाइनें हैं। मेरे लिए, पगिन इतना उपयोगी है (मैं इसके बिना कैसे जीवित रहा), आकार अकादमिक है ... और अगर ईएमएसी एक विज्ञापन के रूप में काम करता है, तो मैं इसका उपयोग करने में अधिक खुश हूं, लेकिन मुझे एक लोड त्रुटि मिली जब मैंने इसे "कमांड-लाइन-नॉर्मलाइज़-फाइल-नेम: आर्म्स ऑफ रेंज:" ", 1" :( ... भाग लिया , तो ... यह वही है जो मैं भी ढूंढ रहा हूं ..
पीटर.ऑक्ट

4
उन लोगों के लिए, जिन्होंने jEdit का उपयोग नहीं किया है, कृपया अपनी शब्दावली समझाएं। मुझे समझ नहीं आ रहा है कि "लाइव" का मतलब यहाँ क्या है, "लाइव आयताकार संपादन" क्या है, या "पेस्ट ब्लॉक इनलाइन" का क्या मतलब है।
गिल्स एसओ- बुराई को रोकें '

जवाबों:


7

मैं विम के लिए जवाब दे सकता हूं, लेकिन एमेक नहीं।

पाठ के बाहर के पदों पर चयन शुरू और समाप्त करें:

:set virtualedit=blockइच्छित व्यवहार को सक्षम करेगा। यदि आप चाहें, तो आप प्रारंभिक बृहदान्त्र को छोड़ सकते हैं और इसे अपने .vimrc में जोड़ सकते हैं। अधिक जानकारी के लिए, :help 'virtualedit'विम के भीतर से।

ब्लॉक इनलाइन पेस्ट करें:

यदि आप केवल pकमांड मोड में हिट करते हैं , तो विम प्रत्येक ब्लॉक पर दाईं ओर वर्णों को धकेलते हुए ब्लॉक को सम्मिलित करेगा। यदि आप एक और ब्लॉक चुनते हैं और हिट करते हैं p, तो विम उस ब्लॉक को पेस्ट किए गए ब्लॉक से बदल देगा।

आप कमांड-मोड कुंजी अनुक्रम के साथ एक ब्लॉक "लिनिविज़" पेस्ट कर सकते हैं OEscVp। यह वर्तमान लाइन ( O Esc) के ऊपर एक रेखा सम्मिलित करता है , इसे लाइनवेज ( V) का चयन करता है , फिर उस पर चिपकाता है ( p)। आप इसे (उदाहरण के लिए) ypमानचित्रण के साथ छोटा कर सकते हैं जैसे कि :nmap yp O<Esc>Vp- अक्षरशः; <Esc>एस्केप कुंजी दबाने के बजाय पांच कीस्ट्रोक्स का उपयोग करें।


अच्छी टिप के बारे में virtualedit; कोशिश है कि बाहर है। इनलाइन पेस्टिंग के बारे में, कृपया अपेक्षित कार्यक्षमता के विवरण के लिए अद्यतन प्रश्न देखें।
lbb0

मैंने अपने जवाब को अपडेट किया है एक विधि के साथ ब्लॉक को पेस्ट करने के लिए।
जंतर

5

उदाहरण के लिए, मैं प्रत्येक पंक्ति के एन पहले वर्णों को निकालना चाहता हूँ, लेकिन पहली और अंतिम पंक्तियों में N वर्णों से कम है।

Emacs: पहली पंक्ति में चयन शुरू करें और बस अंतिम पंक्ति में वर्णों (जैसे रिक्त स्थान) की अनुपलब्ध संख्या जोड़ें और फिर आयत का उपयोग करें

वैकल्पिक रूप से, देखें artist-modeया picture-modeजो आपको लाइन की लंबाई की परवाह किए बिना खिड़की में स्वतंत्र रूप से स्थानांतरित करने की अनुमति देता है।

ब्लॉक इनलाइन पेस्ट करें

Emacs: पहले ब्लॉक को या तो किल-रेक्टेंगल द्वारा सेव करें या किसी रजिस्टर में सेव करें, फिर इंसर्शन पॉइंट पर जाएं, डिलीट-रेक्टेंगल का उपयोग करें और फिर सेव किए गए आयत को डालें।

ऐसा लगता है कि 400+ लाइनों का प्लगइन आवश्यक है

Emacs के मामले में यह एक समस्या क्यों है? एक प्लगइन संकलित किया जा सकता है और एमएसीएस दर्शन है कि आप सब कुछ कोर में नहीं डालते हैं, लेकिन संपादक का विस्तार करने के लिए प्लगइन्स का उपयोग करें।


4

नहीं है 'कुआ-मोड' जो और बाद में Emacsen 22.1 के साथ आता है, या Emacs के पिछले संस्करणों के लिए डाउनलोड करने के लिए लिंक का पालन करें। एक छोटा वीडियो है जो कार्यक्षमता का परिचय देता है।

सामान्य आयत आदेशों के लिए, मैनुअल पढ़ने की कोशिश करें , जो एक आसान परिचय प्रदान करता है।


emacs cua-modeअच्छा लग रहा है! +1 .. मैं आपके द्वारा उल्लिखित वीडियो नहीं देख सकता, टॉम के लिंक को नीचे दिए गए टिप्पणियों के प्रश्न के तुरंत बाद, एक (अलग?) जानकारी वीडियो के लिंक के लिए देख सकता
हूं

@ पसंदीदा Ooops, कट / पेस्ट त्रुटि, तय की।
ट्रे जैक्सन

0

विम में, पहले n वर्णों को हटाने का विशिष्ट तरीका कुछ ऐसा करना है :%s/.\{0,6\}//

%पूरे दस्तावेज करेंगे; आप इसे चयन के साथ या वास्तविक रेखाओं के साथ बदल सकते हैं जिनकी आपको परवाह है। sआदेश "विकल्प" के लिए है। यह आप जो भी देते हैं उसके साथ एक नियमित अभिव्यक्ति को बदल देगा, और यह प्रत्येक पंक्ति पर केवल एक बार मेल खाएगा जब तक कि आप एक विशिष्ट विकल्प नहीं जोड़ते हैं। /एक सीमांकक है - यह किसी भी चरित्र हो सकता है, लेकिन /आम तौर पर प्रयोग किया जाता है, जब तक यह करने के लिए किसी और उपयोग कुछ फायदेमंद है (ताकि आप से बचने के लिए की जरूरत नहीं है /आदेश के बाकी हिस्सों में)। पहले परिसीमन के बाद तर्क एक नियमित अभिव्यक्ति है जिसका उपयोग आपके चयन में मिलान के तार खोजने के लिए किया जाएगा। दूसरे परिसीमन के बाद तर्क यह है कि मैच को किसके साथ बदल दिया जाएगा।

तो यह आदेश कहता है कि किसी भी वर्ण के 0 से 6 उदाहरण ढूंढें, और उन्हें कुछ भी नहीं के साथ बदलें।


मैंने जो मांगा नहीं।
lbb0

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