# + BEGIN_SRC # + END_SRC के लिए शॉर्ट-कट कैसे सेट करें?


14

मैंने ऑर्ग-मोड मैनुअल पढ़ा लेकिन सम्मिलित करने के लिए शॉर्ट कट नहीं मिला:

#+BEGIN_SRC 
#+END_SRC

मुझे लगता है कि मुझे शॉर्टकट सेट करने के लिए ~ / .emacs में एक कॉन्फ़िगरेशन बनाने की आवश्यकता है? या, वहाँ एक शॉर्टकट है, लेकिन मुझे नहीं पता था?

मैं emacs में R का ज्यादा इस्तेमाल करता हूं। क्या इसे बनाने के लिए एक अलग शॉर्टकट बनाने का कोई तरीका है?

#+BEGIN_SRC R
#+END_SRC

जवाबों:


22

ऑर्ग-मोड में स्रोत ब्लॉकों को सम्मिलित करने के लिए एक अंतर्निहित तंत्र है। ऑर्ग मैनुअल में आसान टेम्प्लेट देखें । डिफ़ॉल्ट कॉन्फ़िगरेशन कई # # BLOCKS के लिए टेम्प्लेट प्रदान करता है, और आप अनुकूलित करके अपना स्वयं का जोड़ सकते हैं ‘org-structure-template-alist’

उदाहरण के लिए, एक <sTABऑर्गन बफर खोलें और एक BEGIN / END_SRC ब्लॉक डालें।


13
Org संस्करण 9.2 के लिए, यह मेरे लिए बॉक्स से बाहर काम नहीं करता है। आपको (require 'org-tempo)अपने साथ जोड़ना होगा .emacs। इसके अलावा, यहाँ आसान टेम्प्लेट्स का एक अद्यतन लिंक है -> orgmode.org/manual/Easy-templates.html
JMT2080AD

@ JMT2080AD Org 9.2 ने नई कार्यक्षमता की शुरुआत की जो इसे संबोधित करती है। मेरा जवाब नीचे देखें: emacs.stackexchange.com/a/47370/15177
Lorem Ipsum

यह है , i bमें spacemacs?
जेसन गोल

16

[यह @glucas और @manandearth द्वारा उत्तरों को जोड़ / स्पष्टीकरण है - यह अपने आप नहीं खड़ा होता है।]

ध्यान दें कि हाल के विकास संस्करणों (> = 9.2) में ऑर्ग-मोड (और इसलिए, जब तक कि चीजें नहीं बदलतीं, भविष्य के स्थिर संस्करणों में), org-structure-template-alistअपने प्रकार को बदल दिया है। अंतर्निहित आसान-टेम्पलेट तंत्र को tempoपैकेज के आधार पर अधिक सामान्य तंत्र के पक्ष में छोड़ दिया गया है । दुर्भाग्य से, नया तंत्र केवल एकल वर्ण संक्षिप्तिकरण की अनुमति देता है <, इसलिए <sउस #+BEGIN_SRC...#+END_SRCस्ट्रिंग को विस्तारित किया जाएगा जिसे ओपी पूछ रहा है, लेकिन <el@ manandearth के उत्तर जैसी चीजें काम नहीं करेंगी। यह अभी भी प्रगति पर काम कर रहा है, इसलिए चीजें बदल सकती हैं, लेकिन यदि आप बहु-अक्षर <XXXसंक्षिप्तिकरण के साथ जाते हैं, तो जब आप इस तरह के संस्करण में ऑर्ग-मोड को अपग्रेड करते हैं, तो उन्हें तोड़ने के लिए तैयार रहें।

एक अन्य तंत्र भी है: जो आपको उस प्रकार के ब्लॉक के लिए संकेत देता C-c C-,है org-insert-structure-templateजिसे आप सम्मिलित करना चाहते हैं (एक मेनू के साथ जो सभी उपलब्ध ब्लॉकों को सूचीबद्ध करता है और आपको एक एकल कुंजी प्रेस के साथ चुनने की अनुमति देता है)। इसका लाभ यह है कि यह begin/endएक क्षेत्र के चारों ओर लपेटेगा, इसलिए यदि आपने पहले से ही सामान का एक गुच्छा टाइप किया है और आप इसे एक ब्लॉक में लपेटना चाहते हैं, तो आपको केवल एक क्षेत्र के रूप में इसका चयन करना होगा और C-c C-.इसके बाद एक बार करना होगा ब्लॉक का प्रकार चुनने के लिए।

इस नोट को देखें [fn: 1], (नया) फ़ंक्शन org-insert-structure-templateऔर फ़ाइल का डॉक्टर स्ट्रिंग org-tempo.el

[fn: 1] लिंक गलत हो सकता है क्योंकि यह एक फ़ाइल में एक निश्चित लाइन नंबर की ओर इशारा करता है जो बदल सकता है (nay, will!) बदल जाता है। यदि लिंक आपको सही जगह पर नहीं ले जाता है, तो स्ट्रिंग "संरचना टेम्पलेट विस्तार" की खोज करें - और इस उत्तर को संपादित करने और लाइन नंबर को ठीक करने के लिए स्वतंत्र महसूस करें - धन्यवाद!


एक बात मैं के बारे में पसंद करते हैं C-c C-,अधिक <sहै कि यह तो आप बस टाइपिंग द्वारा एक पाठ और संरचना टेम्पलेट के आसपास "रैप" यह चुनने की अनुमति देता है C-c C-,। आपके साथ <sटेम्पलेट (यानी, #+END_SRC) को समाप्त करने वाली पंक्ति को काटने और पेस्ट करने की आवश्यकता है ।
सामीजी

हां, मैं जवाब में इसका उल्लेख करता हूं।
निकड

14

स्रोत ब्लॉक व्यवहार संगठन 9.2 में बदल । संक्षिप्त नाम <sअब डिफ़ॉल्ट रूप से काम नहीं करता है। इसके बजाय, आप C-c C-,कॉल करते हैं org-insert-structure-template

एक स्रोत ब्लॉक जोड़ना

दबाने से C-c C-,एक संवाद आता है। प्रेस करें TABऔर फिर दर्ज करें src R। यह आवेषण एक स्रोत ब्लॉक और पुट दूसरी पंक्ति के शुरू में अपने कर्सर (चलो |होना बिंदु ):

#+begin_src R
|#+end_src

फिर ब्लॉक के अंदर संपादित करने के लिए, C-oएक नई लाइन खोलने के लिए दबाएँ ।

आप किसी प्रविष्टि को किसी प्रविष्टि को जोड़कर सहेज सकते हैं org-structure-template-alist। निम्नलिखित को अपने में कहीं रखें init.elया इसका उपयोग करके चलाएं C-x C-e:

(add-to-list 'org-structure-template-alist '("r" . "src R"))

अब जब आप C-c C-,करेंगे तो आपको rसूची में एक प्रविष्टि दिखाई देगी । आप अन्य भाषाओं के लिए समान दृष्टिकोण का पालन कर सकते हैं, जैसे कि पायथन, रूबी, आदि बस dded जोड़ी के ऊपर cdr को प्रतिस्थापित करें ("src R" भाग)।

इसके अतिरिक्त, स्रोत ब्लॉक सीमांकक के बीच एक पंक्ति सम्मिलित करने के लिए, आप एक नई पंक्ति वर्ण का उपयोग करके सम्मिलित कर सकते हैं C-q C-j। है यही कारण है, टाइप src R C-q C-jमें सीडीआर के बिंदीदार जोड़ी ऊपर। परिणाम जैसा दिखेगा:

(add-to-list 'org-structure-template-alist '("R" . "src R
"))

अब जब आप प्रेस R, Emacs स्रोत ब्लॉक डाल सकते हैं और एक नई लाइन पर उन दोनों के बीच अपना कर्सर रखें (दूँगी |होना बिंदु ):

#+begin_src R
|
#+end_src

4
<sअभी भी मौजूद है बंधन, तुम बस शामिल करने की ज़रूरत (require org-temp)इसे सक्षम करने के लिए अपने init में।
टायलर

टाइपो सुधार:(require 'org-tempo)
NickD

8

कोड ब्लॉक के लिए कुंजी बाइंडिंग के लिए में babel-orgबाँध के लिए निम्न कोशिश <rएक के बाद <tab>:

;; add <r for R expansion
(add-to-list 'org-structure-template-alist
         '("p" "#+BEGIN_SRC r :results output org drawer\n?\n#+END_SRC"
           "<src lang=\"r\">\n?\n</src>"))

आप स्रोत को ईएसएस में भी संशोधित कर सकते हैं।

उदाहरण के लिए, एक अजगर ब्लॉक कोड के <pबाद बांधने <tab>के लिए:

;; add <p for python expansion
(add-to-list 'org-structure-template-alist
         '("p" "#+BEGIN_SRC python :results output org drawer\n?\n#+END_SRC"
           "<src lang=\"python\">\n?\n</src>"))

एक emacs- लिस्प <elद्वारा निर्धारित किया <tab>जाएगा:

;; add <el for emacs-lisp expansion
(add-to-list 'org-structure-template-alist
         '("el" "#+BEGIN_SRC emacs-lisp\n?\n#+END_SRC"
           "<src lang=\"emacs-lisp\">\n?\n</src>"))

अन्य उपयोगी बाइंडिंग org-modeहैं:

(add-to-list 'org-structure-template-alist
         '("ao" "#+attr_org: " ""))

(add-to-list 'org-structure-template-alist
         '("al" "#+attr_latex: " ""))

(add-to-list 'org-structure-template-alist
         '("ca" "#+caption: " ""))

(add-to-list 'org-structure-template-alist
         '("tn" "#+tblname: " ""))

(add-to-list 'org-structure-template-alist
         '("n" "#+name: " ""))

(add-to-list 'org-structure-template-alist
         '("o" "#+options: " ""))

(add-to-list 'org-structure-template-alist
         '("ti" "#+title: " ""))

क्या आप ईएसएस को स्रोत को संशोधित करने के बारे में थोड़ा और समझा सकते हैं? धन्यवाद!
जियानवेन चेन

इस लिंक पर एक नजर बबेल R पेज I पर python और Jupyter नोटबुक का उपयोग करें einजिसके माध्यम से R का समर्थन करना चाहिए।
मांडियरथ

Org-version> 9.2 के लिए, वाक्यविन्यास होगा:(add-to-list 'org-structure-template-alist '("p" . "src python"))
ー ム

2

YASnippet Emacs पैकेज पर एक नजर। यह आपको कुछ कीवर्ड और TAB के बाद कोड स्निपेट जोड़ने की अनुमति देता है। यह ऑर्गन मोड के भीतर और आर स्क्रिप्ट के साथ दोनों के लिए कहीं अधिक सरल और उपयोगी है। आपके पास .emacs.d / snippets / Ess-Mode (और org-mode के लिए एक) में एक फ़ोल्डर होना चाहिए, जहां आप इसके लिए फ़ाइलें सहेजते हैं:

    # -*- mode: snippet -*-
    # name: in
    # key: in
    # -- 
    %in% 

जब आप TAB में लिखते हैं तो यह% में% में चिपक जाता है, इसी तरह:

# -*- mode: snippet -*-
# name: source_r
# key: srcr_
# --
#+BEGIN_SRC R 
$0
#+END_SRC

https://www.emacswiki.org/emacs/Yasnippet

https://joaotavora.github.io/yasnippet/snippet-development.html


1

ऑर्ग-मोड में एक नया कुंजी संयोजन जोड़ने के लिए, आप उपयोग कर सकते हैं

(define-key org-mode-map "\C-cs" 
    (lambda()(interactive)(insert "#+BEGIN_SRC R\n#+END_SRC")))

यदि आप दबाते हैं तो यह स्ट्रिंग सम्मिलित करेगा C-cs

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