2008-12-28 4 views
21

पृष्ठभूमि: जेएडिट (और कुछ अन्य पाठ संपादक भी) Multiple simultaneous text insertion points नामक एक सुविधा का समर्थन करते हैं। (कम से कम यही मैं इसे यहां बुला रहा हूं)।Emacs, Vim और JEdit के कौन से संपादक एकाधिक एक साथ टेक्स्ट सम्मिलन बिंदुओं का समर्थन करते हैं?

इसका अर्थ यह समझने के लिए, लिंक पर एक नज़र डालें।

आधुनिक पाठ संपादकों में उपयोग की जाने वाली सभी सुविधाओं में से, प्रारंभिक शोध यह इंगित करता है कि यह एक विशेषता है कि दोनों Emacs और Vim वास्तव में समर्थन नहीं करते हैं। यदि सही है, तो यह बहुत असाधारण होगा क्योंकि टेक्स्ट एडिटर फीचर को ढूंढना काफी मुश्किल है जिसने इन दो पुराने स्कूल संपादकों में कम से कम एक में अपना रास्ता नहीं बनाया है।

प्रश्न: क्या किसी ने कभी भी इस सुविधा को Emacs, Vim, या दोनों में देखा या कार्यान्वित किया है? यदि ऐसा है, तो कृपया मुझे एक लिंक, स्क्रिप्ट, संदर्भ या सारांश पर इंगित करें जो विवरण बताता है।

यदि आप एक ही (या समान) चीज़ करने का वैकल्पिक तरीका जानते हैं, तो कृपया मुझे बताएं।

+0

क्या यह वास्तव में उपयोगी है? – PEZ

+0

उपयोगी? कि यह बहस का मुद्दा है। फिर भी हाल ही में कुछ उच्च प्रोफ़ाइल टेक्स्ट संपादकों में यह सुविधा तेजी से बढ़ रही है, इसलिए यह निश्चित रूप से "पूरी तरह अकादमिक" के स्तर को पार कर गया है। – dreftymac

+0

मैं अपने आखिरी प्रोजेक्ट में हर बार इस बारे में सोचने के बारे में सोच रहा हूं ... और मेरे पास नहीं होगा। यह वास्तव में किसी समस्या की तलाश में समाधान की तरह गंध करता है। सिर्फ इसलिए कि अन्य संपादकों में फीचर रेस है, इसका मतलब यह नहीं है कि इसकी आवश्यकता है। – jpeacock

उत्तर

8

ऐसा करने का सबसे अच्छा तरीका है। आदेश जो अंतिम परिवर्तन को दोहराता है। तो, उदाहरण के लिए, यदि मैं एक संदर्भ में एक सूचक बदलता हूं और मेरे पास obj-> func का गुच्छा है कि मैं obj.func में बदलना चाहता हूं तो मैं obj-> के लिए खोज करता हूं, obj को बदलने के लिए 2cw करता हूं -> ओबीजे करने के लिए, फिर एनएनएन करें जब तक सभी उदाहरण बदल नहीं जाते हैं।

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

+1

मैं था सुझाव देने जा रहा है। कमांड भी यह एक अद्भुत शक्तिशाली विशेषता है! – PEZ

3

मुझे नहीं लगता कि इस सुविधा में Emacs या Vim में प्रत्यक्ष एनालॉग है, जो यह नहीं कहना है कि इस सुविधा के साथ प्राप्त होने वाली हर चीज़ दो फैशन में 'पुराने स्कूल' संपादकों के साथ संभव नहीं है। और अधिकांश चीजों की तरह Emacs और Vim, पावर-उपयोगकर्ता संभवतः इस तरह के एक कार्य को बहुत तेज़ी से प्राप्त करने में सक्षम होंगे, भले ही केवल मेरे जैसे प्राणियों को सही grep खोज को समझने और उपयुक्त बैक-रेफरेंस के साथ प्रतिस्थापित करने में पांच मिनट व्यतीत हो सकें।

6

ईएमएसीएस में, आप इसे M-x find-grep और मैक्रो के साथ कर सकते हैं। यदि आप वास्तव में जोर देते हैं कि यह पूरी तरह से स्वचालित हो, तो आप मैक्रो में find-next शामिल करेंगे।

लेकिन ईमानदारी से, यह मुझे माइक्रोसॉफ्ट-फीचर के रूप में मारता है: हाँ, यह फीचर सूची में जोड़ता है, लेकिन परेशान क्यों? और क्या आपको याद होगा कि यह छह महीने में अस्तित्व में था, जब आप इसे फिर से उपयोग करना चाहते हैं?

7

moccur-edit.el लगभग वही करता है जो आप चाहते हैं। Regexp से मेल खाने वाले सभी स्थान प्रदर्शित होते हैं, और मिलान संपादन संबंधित स्रोत में परिवर्तन करता है। हालांकि, संपादन घटना के एक उदाहरण पर किया जाता है।

मुझे लगता है कि यह आपको विस्तारित करने के लिए सीधे आगे बढ़ने के लिए आगे बढ़ेगा ताकि आप उन्हें एक साथ संपादित कर सकें (कम से कम साधारण मामले में)।

इसमें से एक डेमो है here

बाहर निकलता है, मोकुर-एडिट के नवीनतम संस्करण वास्तविक समय में परिवर्तन लागू नहीं करते हैं - आपको परिवर्तनों को लागू करना होगा। परिवर्तन अब भी पूर्ववत (अच्छी जीत) हैं।

-2

यह नियमित अभिव्यक्ति खोज/डमी के लिए प्रतिस्थापन जैसा दिखता है।समस्या तब शुरू होती है जब उपयोगकर्ता को यह नहीं पता कि कंप्यूटर द्वारा प्रस्तावित सामान्यीकरण गलत है। और समस्या तब खराब हो जाती है जब वैकल्पिक सामान्यीकरण चयनित 1200 वें संपादन क्षेत्र में आपदा उत्पन्न करता है जो स्क्रीन से बाहर है।

कहा जा रहा है - नहीं, जहां तक ​​मुझे पता है Emacs में कोई समर्थन नहीं है।

+2

** // समस्या तब शुरू होती है जब डोलिंग नमूना को एहसास नहीं होता // ** यहां पढ़ने को रोकने के लिए स्वतंत्र महसूस करें। – dreftymac

1

यह vim में कुछ इस तरह होना चाहिए:

%s/paint.\((.*),/\1.paint(/ 

या ऐसा ही कुछ है, मैं "नकली" नियमित अभिव्यक्ति में वास्तव में बुरा हूँ।

/object.paint(/ 

तो, हाँ, यह "समर्थित" है इसे इस्तेमाल करता है Emacs के लिए

3

YASnippet पैकेज के साथ

/paint(object,/ 

:

विचार पैटर्न स्थानापन्न है। screencast में 2:13 और 2:44 देखें।

0

नहीं। मुख्य रूप से कंसोल-आधारित यूआई के साथ करना मुश्किल होगा।

यानी, (, और Emacs हालांकि मैं यह लगभग उतना ही इस्तेमाल नहीं किया गया है) vim में इसी तरह की सुविधाओं है - खोज और की जगह, के रूप में लोगों ने कहा है, और अधिक इसी तरह, स्तंभ डालने मोड: http://pivotallabs.com/users/brian/blog/articles/350-column-edit-mode-in-vi

1

Emacs lisp में इसका मूल संस्करण करना आसान लग रहा था। यह जब तुम सिर्फ दो स्थानों पर समानांतर में पाठ सम्मिलित करना चाहते हैं के लिए है:

(defun cjw-multi-insert (text) 
    "insert text at both point and mark" 
    (interactive "sText:") 
    (insert-before-markers text) 
    (save-excursion 
    (exchange-point-and-mark) 
    (insert-before-markers text))) 

जब आप इसे चलाने के लिए, यह पाठ के लिए संकेत देता है और दोनों बिंदु (वर्तमान स्थिति) और निशान पर यह डाल देता है। आप C-SPC के साथ चिह्न सेट कर सकते हैं। यह एन अलग-अलग पदों के लिए आसानी से बढ़ाया जा सकता है। set-insert-point जैसे फ़ंक्शन को वर्तमान स्थिति (एक Emacs marker के रूप में संग्रहीत) रिकॉर्ड में रिकॉर्ड किया जाएगा और फिर जब आप मल्टी-डालने कमांड चलाते हैं, तो यह प्रत्येक में टेक्स्ट जोड़ने वाली सूची के माध्यम से पुनरावृत्त होता है।

मुझे यकीन नहीं है कि अधिक सामान्य "बहु-संपादन" सुविधा को संभालने का एक आसान तरीका क्या होगा।

1

एक और मामूली समानता: Emacs में, cua-selection-mode (या cua-mode) द्वारा प्रदान की आयत संपादन सुविधाओं स्वचालित रूप से आप एक से अधिक प्रविष्टि नीचे अंक चिह्नित आयत के बाएं या दाएं किनारे, ताकि आप एक आम उपसर्ग या प्रत्यय करने के लिए टाइप कर सकते हैं देता है उन सभी लाइनों।

उदा।:
एमएक्सcua-selection-modeआरईटी (यदि आप पहले से ही इस या कुआ-मोड का उपयोग नहीं करते, वैश्विक नाबालिग मोड सक्षम)
सी आरईटीनीचेनीचे नीचे (एक 1x3 के निशान चरित्र आयत)
प्रकार यहाँ उपसर्ग
सी आरईटी (अचिह्नित आयत सामान्य संपादन पर लौटना)

संबंधित मुद्दे