मैं Emacs Lisp सीखना कैसे शुरू कर सकता हूं?


39

पृष्ठभूमि:

मैं ज्यादातर vi उपयोगकर्ता हूं और Emacs में परिवर्तित हो रहा हूं।

मूल बातें अतीत और अब सी और कुछ पायथन में कोड लिखने के लिए इसका उपयोग आर रूपांतरण करने की योजना के साथ करें।

मैंने दो दशक पहले वर्षों के लिए (कॉमन) एलआईएसपी लिखा था जब मैं ग्रेडिंग स्कूल में था लेकिन अब मैं बुरी तरह से व्यथित हो गया हूं (हैलो वर्ल्ड लिख सकता हूं लेकिन यह बात है)।

सवाल:

Emacs LISP वातावरण सीखने और Emacs हैक करने के लिए मेरी स्थिति में एक आदमी के लिए आप क्या सलाह देंगे।

क्या मुझे किताबें, ब्लॉग, संसाधन पढ़ने चाहिए, अभ्यास करने चाहिए?

जवाबों:


11

मेरे अनुभव में, Emacs Lisp पर शामिल ट्यूटोरियल बहुत मददगार नहीं था (मैंने वर्षों में दो बार कोशिश की और असफल रहा)। इसके बजाय, मैं अंत में शामिल Emacs लिस्प संदर्भ का इस्तेमाल किया।

आखिरकार क्या काम किया:

एहसास है कि Emacs Lisp के दो पहलू हैं: मूल भाषा, और Emacs के साथ बातचीत। इन दोनों को अपने मन में अलग कर लो। पहले पर ध्यान केंद्रित करें (बहुत मुश्किल नहीं होना चाहिए क्योंकि आपने अतीत में लिस्प सीखा था)। अभ्यास करने के लिए एक्सर्साइज़ जैसी साइटों का उपयोग करें ।

एक बार जब आप मूल (लूप, फ़ंक्शंस, वैरिएबल, सशर्त, आदि) पर एक पकड़ रखते हैं, तो उन पहलुओं पर आगे बढ़ें जिनमें खुद Emacs शामिल हैं (पाठ बदलना, बफ़र्स बदलना आदि)। यह विशाल है, और आप संभवतः विवरणों के समुद्र में खो जाएंगे। कुछ चीजें हैं जिन्हें आपको अच्छी तरह से समझना चाहिए , जैसा कि आप उन्हें अक्सर उपयोग करेंगे। वो हैं:

  • इंटरैक्टिव
  • बचाने-भ्रमण
  • बचाने-प्रतिबंध
  • हुक
  • सलाह देने वाले कार्य
  • साथ-वर्तमान बफ़र

एक बार जब आप इनको समझ लेते हैं, तो अपना सारा समय ईलीस के संदर्भ को पढ़ने में बिताने के बजाय, उन साधारण समस्याओं के बारे में सोचें, जो आपको Emacs से मिलती हैं, जिसे आप लिखना चाहते हैं और उन्हें Elisp के साथ हल करना चाहते हैं। आपको कुछ चरणों में सहायता की आवश्यकता होगी, और यही वह जगह है जहाँ Google आपकी सहायता कर सकता है।

समस्याओं के उदाहरण जो मैंने अपने एलिस्प के अभ्यास के लिए हल किए हैं:

  • जब आप ओआरजी-कैप्चर का उपयोग करते हैं, और आप कैप्चर बफर की अंतिम पंक्ति में टेक्स्ट लिखते हैं, तो यह अंत में एक नई लाइन नहीं डालता है, और इसलिए यदि मुझे कैप्चर पोजिशन के बाद कोई सुर्खियां मिलीं , तो वह हेडलाइन अब हेडलाइन नहीं होगी। । फिक्स एक हुक बनाने के लिए था जो यह जांचता है कि क्या कोई नई सीमाएं हैं, और यदि नहीं, तो कैप्चर के अंत में एक जोड़ें।

  • जब मैं कैप्चर करता हूं और एक स्टेप में रिफलेक्ट करता हूं, तो यह उस फाइल को सेव नहीं करता है जिससे एंट्री को रिफिल किया गया था। लेकिन अगर मैं रिफाइनिंग के बिना कब्जा करता हूं, तो यह होता है। मैंने इस असंगतता को ठीक किया।

  • मीटिंग के दौरान (एक ऑर्ग फाइल में) मिनट लिखते समय, अगर किसी के लिए एक TODO आता है, तो मैं एक कैप्चर करना चाहता हूं, जिसे TODOs नाम की हेडलाइन दिखेगी (शीर्ष स्तर की हेडलाइन के तहत मैं) और TODO को इसमें जगह दूंगा क्या आप वहां मौजूद हैं। प्रत्येक मीटिंग की अपनी TODO हेडलाइन होती है, और इसे फ़ाइल में वर्तमान मीटिंग के लिए जाना चाहिए। इसमें एक फ़ंक्शन लिखना शामिल है जो पेड़ को शीर्ष स्तर तक ले जाता है, और TODOs नामक एक बच्चे की तलाश करता है।

  • एक निश्चित मोड के सभी बफ़र्स को मारें (एक आंतरिक फ़ंक्शन हो सकता है जो पहले से ही ऐसा करता है, लेकिन मुझे यह नहीं पता था)।

अंत में, सुनिश्चित करें कि आप निम्नलिखित कीबाइंडिंग जानते हैं:

  • Cx Ce (अभिव्यक्ति का मूल्यांकन)
  • Ch v (किसी चर का अर्थ और मूल्य देखें)
  • च f (इनबिल्ट फंक्शन का विवरण देखें)।

33

क्या शानदार सवाल है! यहाँ पथ मैंने लिया है:

चरण 0: Emacs ट्यूटोरियल पढ़ें

कुछ और करने से पहले Emacs Tutorial पढ़ें। ऐसा लगता है कि आपने ऐसा कर लिया है। हाँ पर अच्छा है! हालाँकि, बाद में आने वाले लोगों के लिए, यह आपकी Emacs यात्रा शुरू करने का स्थान है। वहाँ बहुत सारे भ्रामक ब्लॉग पोस्ट हैं। वे जटिल चीजों पर काबू पा लेते हैं। Emacs इसे आसान बनाता है:

  1. Emacs शुरू करें
  2. दबाएँ <RET>

आप इसके माध्यम से Ctrl + h tया C-h tEmacs संकेतन में भी पहुँच सकते हैं ।

ट्यूटोरियल Emacs की मूल अवधारणाओं का परिचय देता है, ऐतिहासिक शब्दावली को स्पष्ट करता है, और आपको 30 मिनट से कम समय में प्राप्त करता है। यह अगले चरण के लिए चरण भी निर्धारित करता है।

Emacs खोलें।  एंटर दबाए।  इट्स दैट ईजी!

चरण 1: "Emacs Lisp में प्रोग्रामिंग का एक परिचय" पढ़ें

अगला कदम Emacs लिस्प में प्रोग्रामिंग का एक परिचय पढ़ना है । मैं इस पुस्तक की सिफारिश नहीं कर सकता; यह बहुत अच्छी तरह से लिखा है! यह सबसे अधिक Emacs इंस्टॉल 1 के साथ आता है । बस प्रेस करें C-h iऔर इसे मेनू से चुनें। आप सीधे इसके माध्यम से भी जा सकते हैं C-h i m Emacs Lisp Intro

प्रस्तावना में कहा गया है,

यह पाठ उन लोगों के लिए एक प्रारंभिक परिचय के रूप में लिखा गया है जो प्रोग्रामर नहीं हैं।

इसे "उन लोगों के लिए कहना चाहिए जो गैर-लिस्प प्रोग्रामर हैं।" लिस्प अन्य भाषाओं से थोड़ा अलग है, इसलिए यदि आप लिस्प से अपरिचित हैं तो यह पढ़ने लायक है। लेखक के पास एक स्वीकार्य शैली है और कई उदाहरणों के माध्यम से चलता है। मुझे काम करने में लगभग एक सप्ताह लग गया।

चरण 1.5: जॉन विएगले के साथ Emacs Lisp Development Tips

2015 के उत्तरार्ध में, जॉन Emacs परियोजना का अनुरक्षक है । साचा Chua उसके साथ एक महान साक्षात्कार करता है यहाँ है, जिसमें जॉन Emacs लिस्प, विकास के वातावरण की मूल बातें खत्म हो जाता है, और महान सलाह के बहुत सारे प्रदान करता है।

चरण 2: ओपीसी पढ़ें (अन्य लोगों का कोड)

2 ए। स्रोत कोड पढ़ें

क्योंकि Emacs "एक्स्टेंसिबल, कस्टमाइज़ करने योग्य, सेल्फ-डॉक्यूमेंटिंग, रियल-टाइम डिस्प्ले एडिटर" है, सभी स्रोत कोड शामिल हैं। मदद सुविधाओं का उपयोग करना सीखें, C-h fफ़ंक्शन के लिए और C-h vचर के लिए। स्रोत कोड के लिए हमेशा एक लिंक होता है:

सोर्स कोड देखने के लिए सोर्स कोड लिंक पर क्लिक करें!

2 बी। पढ़ें सब init.elके

बहुत सारे लोग अपनी init.elफ़ाइलों को Git या Mercurial में ट्रैक करते हैं । उनकी तलाश करो। एक चाल है StackOverflow पर लोगों की प्रोफाइल पर क्लिक करना, विशेष रूप से emacs.stackexchange.com पर :

यार एक पॉवर यूजर है!

उनके पास अक्सर उनके GitHub या व्यक्तिगत वेबसाइट के लिंक होते हैं:

फायदेमन्द ज़मीन!

कहा जाता है dotemacsया dotfilesकाफी आम हैं। समय के साथ आपको पता चल जाएगा कि अच्छा कोड कैसा दिखता है और बुरा कोड कैसा दिखता है। तुम भी की तरह ही, बड़े नामों जानेंगे XAH , साशा Chua , binchen , Magnar Sveen , abo-abo , और कई और अधिक। ऐसे बहुत से लोग हैं जिनसे सीखना है!

चरण 3: Emacs पर हैक करें

अपनी इच्छित कार्यक्षमता लिखने के लिए स्वयं को चुनौती दें। कभी भी आँख बंद करके कोड कॉपी न करें; इसे समझने के लिए हमेशा समय निकालें। यदि आप इसे नहीं समझते हैं, तो इसका उपयोग न करें! जब आप कुछ नया सीखने से अलग कोड के एक टुकड़े को समझने के लिए समय लेते हैं, तो आप अक्सर अपने विशेष उपयोग के मामले में इसे सुधारने के तरीकों के बारे में सोचते हैं। यह हैक करने का एक अवसर है! आखिरकार, यह आपके init.elलिए क्या है! गलतियाँ करें, चीजों को तोड़ें, बहस करना सीखें। आप पाएंगे कि Emacs Elisp में लिखे गए हैं, इसलिए विकास एक खुशी है।

चरण 4: emacs.stackexchange.com पर प्रश्न पूछें

मैंने पाया है कि StackExchange पर Emacs समुदाय एक अच्छा Elisp प्रश्न पसंद करता है। इसलिए, इस विश्वास के साथ हैक करें कि अन्य लोग सीखने के आपके प्रयासों की सराहना करेंगे।

चरण 5: emacs.stackexchange.com पर प्रश्नों के उत्तर दें

आपकी समझ कुछ भी स्पष्ट नहीं करती है जैसे कुछ समझाने की कोशिश करना। मुख्य पृष्ठ पर ट्रोल करना, आपको उन प्रश्नों के उत्तर भी मिलेंगे जिन्हें आप कभी नहीं जानते थे।

निष्कर्ष

समय के साथ आप खुद को तेजी से समाधान उत्पन्न करने और अन्य लोगों के सवालों का जवाब देने में सक्षम पाएंगे। सभी प्रोग्रामिंग की तरह, यह निराशाजनक हो सकता है। हालांकि, अपने आप को आज कल के खिलाफ खुद को आंकने के लिए याद रखें। कुछ लोग इमैक पर हैकिंग कर रहे हैं, शाब्दिक रूप से, 30 साल! हालांकि, अधिकांश समय, आप पाएंगे कि Emacs के साथ काम करने के लिए एक खुशी है और यह आपको जो स्वतंत्रता देता है वह प्रेरणादायक है।

हैप्पी हैकिंग! :)

पुनश्च: पैकेज बुराई की जाँच करें ।


1 कुछ इंस्टॉल इसके साथ नहीं आते हैं। उदाहरण के लिए, डेबियन उपयोगकर्ताओं को इसे अलग से स्थापित करना होगा। यह मूर्खतापूर्ण है , लेकिन यह गैर-मुक्त भंडार में संग्रहीत है । प्रत्येक प्रविष्टि के अंत में /etc/apt/sources.listसंलग्न करके एक गैर-मुक्त रेपो जोड़ें non-free:

deb http://http.us.debian.org/debian stable main contrib non-free

1
ऐसा लगता है कि मैं अभी quora पर आया हूं
user3496846

10

मैं "इमैक लिस्प इंट्रो" की सिफारिश करता हूं।

"Emacs Lisp Intro" आपके Emacs के भीतर पहले से ही जानकारी प्रारूप में उपलब्ध हो सकता है। Emacs में प्रयास करें C-h i m Emacs Lisp Intro RETया मूल्यांकन करें (info "(eintr) Top")

यदि यह "Emacs Lisp Intro" के लिए वेब पर विफल रहता है।


7
  1. शुरू Emacs विकी पेज से जानें Emacs लिस्प

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

  2. इससे परे - वह सब कुछ जो यहां दूसरों ने कहा है, विशेष रूप से एमएसीएस के अंतर्निहित डॉक के साथ शुरू करना:

    • एलिफ़िश मैनुअल - ज्यादातर एक संदर्भ है, लेकिन कुछ अच्छे उपयोग मार्गदर्शन और वैचारिक जानकारी भी है। यह Emacs में बनाया गया है: C-h iफिर Elisp मैन्युअल चुनें।

    • Emacs लिस्प पहचान - लिस्प और Emacs लिस्प में कदम दर कदम परिचय। इसके अलावा Emacs में बनाया और से उपलब्ध है C-h i

  3. आप कॉमन लिस्प का उपयोग किया है के बाद से यह हो जाएगा सुपर आसान Emacs लिस्प लेने के लिए। इस बारे में खुद को भाग्यशाली समझें।

    यदि आपने लिस्प मशीन पर कॉमन लिस्प (या ज़ेटा लिस्प या जो भी) का उपयोग किया था तो अनुभव काफी समान होगा। आप Emacs को (अन्य चीजों के अलावा) एक महान लिस्प वातावरण के बारे में सोच सकते हैं। सीखते समय आप शून्य से 60 तक जा सकते हैं।

  4. मज़े करो!


2

लिस्प पर एक रिफ्रेशर के रूप में, मैं आर्टिफिशियल इंटेलिजेंस प्रोग्रामिंग के पीटर नॉरविज प्रतिमान के पहले तीन अध्यायों की अत्यधिक अनुशंसा करता हूं । वे आपको लिस्प का एक शानदार और तेज गति (पुनः) परिचय देते हैं जो आपको तुरंत ट्रैक पर वापस लाएगा।

कुल नॉब्स के लिए, COMMON LISP है: प्रतीकात्मक संगणना के लिए एक कोमल परिचय जो आपको समान अवधारणाओं को सिखाता है, लेकिन बहुत कम गति से।

दोनों पुस्तकें ऑनलाइन, मुफ्त में उपलब्ध हैं।

उपरोक्त में से एक के माध्यम से जाने के बाद, आप nullprogram.com पर सभी Elisp टैग की गई पोस्ट पढ़ सकते हैं और masteringemacs.org पर रीडिंग गाइड के माध्यम से जा सकते हैं । सामान्य प्रश्नों के बारे में जानने के लिए यहां शीर्ष प्रश्न पढ़ने से मदद मिलेगी। विशिष्ट समस्याओं के लिए या तो इस साइट, rosettacode या आप पसंदीदा खोज इंजन खोजें।

जब आप मूल बातें से परिचित हो जाते हैं, तो इंफो मैनुअल आमतौर पर Emacs को हैक करते समय आने वाले अधिकांश शेष प्रश्नों का उत्तर देगा।


1

चूंकि आपके पास कॉमन लिस्प में एक पृष्ठभूमि है और आप "मूल बातें" कर रहे हैं, "इमैक लिस्प में प्रोग्रामिंग का परिचय" में कोई मतलब नहीं है।

आप अभी क्या कर सकते हैं (मेरे पास सीएल में पृष्ठभूमि नहीं है और यह मेरे लिए काम करता है) है:

1) एक ऐसा मोड खोजें जिसे आप उपयोग करते हैं और फ़ंक्शन जोड़ने का प्रयास करते हैं, आपको Emacs लिस्प संदर्भ में मदद मिलेगी

2) अपने स्वयं के सरल कार्यों के साथ अपनी खुद की कस्टम फ़ाइल लिखें, यहाँ फिर से Emacs लिस्प संदर्भ का उपयोग करें

हेल्प-ग्नू-एमएसीएस लिस्ट बेहद मददगार है।


1

Emacs LISP वातावरण सीखने और Emacs हैक करने के लिए मेरी स्थिति में एक आदमी के लिए आप क्या सलाह देंगे।

मुझे नहीं लगता कि आपको इमैक लिस्प पर कुछ विशिष्ट पढ़ने की आवश्यकता है। यह कोई रहस्य नहीं है कि यदि आप Emacs में कुछ करना चाहते हैं, तो संभावना है, आपको बस सही कमांड ढूंढनी है या किसी ने पहले से ही कोड लिखा है और यह अब विकी पेज या गीथब पर कहीं रहता है, या एक प्लगइन में बनाया गया था । बस उस कोड को कॉपी-पेस्ट करके और उसे पढ़कर , आपने Emacs का एक उचित हिस्सा तब तक सीख लिया होगा जब तक आप अपने .emacs से कुछ हद तक संतुष्ट नहीं हो जाते।

यदि आप Emacs को अनुकूलित करने के बारे में कुछ विचार प्राप्त करना चाहते हैं, तो अन्य लोगों द्वारा कस्टम कॉन्फ़िगरेशन ज्ञान का एक अच्छा स्रोत हो सकता है। ऐसे विन्यासों की एक चयनित सूची जो आप यहां पा सकते हैं । हालाँकि, वास्तव में, आपकी स्वयं की दृष्टि बेहतर काम करती है और अन्य लोगों का दौरा करती है। आम तौर पर केवल तभी वारंट किया जाता है जब आप कुछ प्रश्नों के उत्तर चाहते हैं [जैसे कि मैं अपना कोड / पैकेज कैसे तैयार करूं?] या कुछ कोड आपके किसी विशिष्ट लक्ष्य के लिए कॉपी किए गए हैं।

ब्राउज़िंग MELPA मुझे स्थापित करने और शायद एक दर्जन पैकेजों की कोशिश करने के लिए मिली।

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

जब से आप vi का उपयोग करते हैं, बुराई-मोड की जाँच करें , यह मेरे लिए बहुत अच्छा काम किया है। मैं आपकी यात्रा को आसान बनाने के लिए कमांड helm-apropos(या aproposयदि आप नहीं चाहते हैं helm) के साथ पतवार लगाने की भी सिफारिश करेंगे ।

इसलिए, मेरी सलाह है कि आप अभी से कस्टमाइज़ेशन पॉइंट पर पहुँच जाएँ और आपको वह सब कुछ मिल जाएगा जो आपको चाहिए। खासतौर पर यह कि आपने बहुत पहले या पहले लिस्प को हैक कर लिया था, और क्योंकि सीखने की ललक है, जहां तक ​​मैं बता सकता हूं, आपके लिए अंत का एक साधन है, जो कि एमएसीएस को अनुकूलित करना है।


1

व्यायामवाद पर एलिस्प ट्रैक। अपने कौशल को बेहतर बनाने का एक मजेदार तरीका भी है। व्यायाम Emacs की तुलना में elisp पर अधिक focussed हैं, लेकिन नियमित रूप से अभिव्यक्ति, डेटा संरचना, गणित आदि जैसी बुनियादी बातों की एक अच्छी श्रृंखला को कवर करेंगे।


क्या आप उस संदर्भ को सुधार सकते हैं (उदाहरण के लिए लिंक प्रदान करें)? क्या आप संक्षेप में बता सकते हैं कि वहां क्या पाया जाता है (किसी प्रकार का अभ्यास, ऐसा लगता है)?
आकर्षित किया

व्यायामवाद। यह एक ऐसी जगह है जहाँ आप एक भाषा चुन सकते हैं और इसके साथ विभिन्न समस्याओं को हल कर सकते हैं - और अन्य लोगों के समाधान देख सकते हैं। मैंने पाया है कि समस्या के अन्य लोगों के समाधानों को ब्राउज़ करने में आपने अभी समय बिताया है जो नई सुविधाओं को सीखने का एक अच्छा तरीका है।
बीटल

0

मुझे लगता है कि लॉरेन इप्सम का जवाब इसे अच्छी तरह से कवर करता है।

https://emacs.stackexchange.com/a/47320/21433

मैं बस इतना जोड़ना चाहूंगा कि मैं आपको लिस्प की मूल बातें जानता हूं। यह आपकी मदद करेगा, लेकिन यह आवश्यक नहीं है (मैं उस पर वापस आऊंगा।)

सीखने का एक तरीका केवल एक मौजूदा मोड / एक्सटेंशन को हैक या संशोधित करना है। मैंने इसे 93 में Ada भाषा मोड फ़ाइल में हैक करके वापस सीखा। यह सबसे मजेदार अनुभवों में से एक था जो मैंने कॉलेज में वापस किया था।

तो आप ऐसा कर सकते हैं कि अपने चयन की भाषा के साथ, कहें, जावा मोड, या लिस्प मोड, या यहां तक ​​कि एक एलिसिप मोड फ़ाइल।

इसे बदलें, मैक्रोज़ जोड़ें, आदि। मैंने इसे कैसे किया।

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