# + BEGIN_SRC # + END_SRC için kısayol nasıl ayarlanır?


14

Kuruluş modu kılavuzunu okudum ancak eklemek için bir kısa yol bulamadım:

#+BEGIN_SRC 
#+END_SRC

Bir kısayol ayarlamak için ~ / .emacs bir yapılandırma oluşturmak gerekir sanırım? Yoksa bir kısayol var ama bilmiyordum?

Emacs'ta R'yi çok kullanıyorum. Bunu oluşturmak için ayrı bir kısayol oluşturmanın bir yolu var mı?

#+BEGIN_SRC R
#+END_SRC

Yanıtlar:


22

Kuruluş kipinde kaynak blokları eklemek için yerleşik bir mekanizma vardır. Kuruluş kılavuzundaki Kolay Şablonlar konusuna bakın . Varsayılan yapılandırma, bir dizi # + BLOK için şablon sağlar ve özelleştirerek kendiniz de ekleyebilirsiniz ‘org-structure-template-alist’.

Örneğin, bir kuruluş tamponu açın ve <sTABbir BEGIN / END_SRC bloğu eklemek için yazın .


13
Kuruluş 9.2 sürümü için, bu kutunun dışında benim için çalışmıyor. Sen olması gerekir (require 'org-tempo)adresinden Müşteri eklendi .emacs. Ayrıca, Easy Templates -> orgmode.org/manual/Easy-templates.html
JMT2080AD

@ JMT2080AD Org 9.2 bunu ele alan yeni bir işlevsellik tanıttı. Aşağıdaki cevabımı gör: emacs.stackexchange.com/a/47370/15177
Lorem Ipsum

Öyle mi , i biçinde spacemacs?
Jason Goal

16

[Bu @glucas ve @manandearth'ın cevaplarına bir ekleme / açıklamadır - kendi başına durmaz.]

Kuruluş modunun son geliştirme sürümlerinde (> = 9.2) (ve bu nedenle, işler değişmediği sürece, gelecekteki kararlı sürümlerde) org-structure-template-alisttürünü değiştirdiğini unutmayın. Yerleşik kolay şablonlar mekanizması, tempopakete dayalı daha genel bir mekanizma lehine terk edilmiştir . Ne yazık ki, yeni bir mekanizma sadece tek bir karakter sonra kısaltmalar verir <, böylece, <sgenişletilmiş olacak #+BEGIN_SRC...#+END_SRCgibi OP istiyor dize, ancak şeyler <el@ manandearth cevabı olacak içinde DEĞİL çalışır. Bu hala devam eden bir çalışmadır, bu nedenle işler değişebilir, ancak çok harfli <XXXkısaltmalar ile giderseniz, kuruluş modunu böyle bir sürüme yükselttiğinizde kırılmaları için hazırlıklı olun.

: Orada başka mekanizma da C-c C-,bağlıdır org-insert-structure-templateeklemek istediğiniz bloğun türlü hangi istemleri size (yani liste mevcut tüm bloklar bir menü ve tek bir tuşa basarak seçim yapmanızı sağlar). Avantajı, begin/endbir bölgeyi sarmasıdır, bu yüzden zaten bir sürü şey yazdıysanız ve bir blokta sarmak istiyorsanız, tek yapmanız gereken bölgeyi seçip C-c C-.tek bir karakterle yazmanızdır. blok türünü seçmek için.

Bkz bu notu , (yeni) fonksiyonunun doc dizesi: [1 fn] org-insert-structure-templateve dosyanın org-tempo.el .

[fn: 1] Bağlantı yanlış olabilir çünkü bir dosyada değişebilecek sabit bir satır numarasını gösterir (nay, değişecek!). Bağlantı sizi doğru yere götürmezse, "yapı şablonu genişletme" dizesini arayın - ve bu yanıtı düzenlemek ve satır numarasını düzeltmekten çekinmeyin - teşekkürler!


C-c C-,Üzerinde tercih ettiğim bir şey <s, bir metin seçmenize ve sadece yazarak yapı şablonunun etrafına "sarmanıza" izin vermesidir C-c C-,. İle <sşablonu (yani #+END_SRC) biten satırı kesip yapıştırmanız gerekir .
SaMeji

Evet, cevapta bundan bahsediyorum.
NickD

14

Kaynak bloğu davranışı Org 9.2 değiştirilebilir . Kısaltma <sartık varsayılan olarak çalışmaz. Bunun yerine, C-c C-,hangi çağrıları kullanırsınız org-insert-structure-template.

Kaynak bloğu ekleme

Tuşuna basıldığında C-c C-,bir iletişim kutusu açılır. Tuşuna basıp TABgirin src R. Bu ekler bir kaynak bloğu ve koyar ikinci satırın başında imleci (let |olmak noktası ):

#+begin_src R
|#+end_src

Ardından bloğun içinde düzenlemek için, C-oyeni bir satır açmak üzere tuşuna basın .

Öğesine bir giriş ekleyerek bir şablonu kaydedebilirsiniz org-structure-template-alist. Aşağıdakileri kendinize bir yere koyun init.elveya kullanarak çalıştırın C-x C-e:

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

Şimdi bunu C-c C-,yaptığınızda rlistede bir giriş göreceksiniz . Aynı yaklaşımı Python, Ruby, vb. Gibi diğer diller için de uygulayabilirsiniz. Yukarıdaki noktalı çiftte ("src R" kısmı) cdr'yi değiştirmeniz yeterlidir .

Ayrıca, kaynak blok sınırlayıcıları arasına bir çizgi eklemek için tuşlarını kullanarak yeni satır karakteri ekleyebilirsiniz C-q C-j. Kendisine, tip src R C-q C-jolarak CDR'nin bir noktalı çifti üzerindedir. Sonuç şöyle görünecektir:

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

Eğer bastığınızda R, Emacs kaynak bloğu ekler ve (LET yeni bir satırda aralarında farenizin imlecini |olmak noktası ):

#+begin_src R
|
#+end_src

4
<sBağlayıcı hala sadece eklemeleri gerektiğini mevcutsa (require org-temp)bunu etkinleştirmek için init.
Tyler

(require 'org-tempo)
Yazım hatası

8

kod blokları için tuş ciltleri için, ciltlemek için babel-orgaşağıdakileri deneyin ve <rardından a <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>"))

Kaynağı ESS olarak da değiştirebilirsiniz.

<pArdından <tab>a'yı bir python blok koduna bağlamak için, örneğin:

;; 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>"))

bir emacs-lisp ve <elardından a <tab>olacak şekilde ayarlanır :

;; 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>"))

diğer yararlı bağlamalar 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: " ""))

Kaynağı ESS olarak da değiştirebileceğim konusunda biraz daha açıklayabilir misiniz? Teşekkürler!
Xianwen Chen

babil R sayfasına bu bağlantıya bir göz atın Python ve Jupyter defter kullanıyorum einhangi aracılığıyla da R desteklemelidir.
manandearth

Kuruluş sürümü> 9.2 için sözdizimi şu şekilde olur:(add-to-list 'org-structure-template-alist '("p" . "src python"))
ギ ョ ー ム

2

YASnippet Emacs paketine bir göz atın. Sonra bazı anahtar kelimeler ve SEKME ile kod parçacıkları eklemenizi sağlar. Hem org modunda hem de R komut dosyalarıyla çok daha basit ve kullanışlıdır. .Emacs.d / snippets / ess-mode'da (ve org-mode için bir klasör) aşağıdaki gibi dosyaları kaydettiğiniz bir klasörünüz olmalıdır:

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

SEKME yazdığınızda, benzer şekilde% olarak yapışır:

# -*- 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

Kuruluş moduna yeni bir tuş kombinasyonu eklemek için şunu kullanabilirsiniz:

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

Bu, tuşuna basarsanız dizeyi ekler C-cs.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.