답변:
조직 모드에는 소스 블록을 삽입하기위한 메커니즘이 내장되어 있습니다. 조직 매뉴얼의 쉬운 템플릿 을 참조하십시오 . 기본 구성은 다수의 # + BLOCKS에 대한 템플릿을 제공하며을 사용자 정의하여 직접 추가 할 수 있습니다 ‘org-structure-template-alist’
.
예를 들어, 조직 버퍼를 열고 <sTABBEGIN / END_SRC 블록을 삽입하려면 입력하십시오.
, i b
에 spacemacs
?
[이것은 @glucas와 @manandearth의 답변에 대한 추가 / 설명입니다-그것은 독자적으로 서 있지 않습니다.]
org-mode의 최신 개발 버전 (> = 9.2)에서 (따라서 향후 안정적인 버전에서 상황이 변경되지 않는 한) org-structure-template-alist
유형이 변경되었습니다. 내장 된 쉬운 템플릿 메커니즘은 tempo
패키지를 기반으로 한보다 일반적인 메커니즘을 선호하여 포기되었습니다 . 불행히도 새로운 메커니즘은의 뒤에 단일 문자 약어 만 허용 <
하므로 OP가 요구 <s
하는 #+BEGIN_SRC...#+END_SRC
문자열 로 확장 되지만 <el
@manandearth의 답변 과 같은 것은 작동 하지 않습니다 . 이것은 여전히 진행중인 작업이므로 상황이 변경 될 수 있지만 다중 문자 <XXX
약어를 사용하는 경우 조직 모드를 해당 버전으로 업그레이드 할 때 중단 될 수 있도록 준비하십시오.
:이 또 다른 메커니즘은 또한 C-c C-,
에 바인딩 org-insert-structure-template
삽입 할 블록의 종류에 대해 어떤 메시지를 (그 목록 가능한 모든 블록 메뉴와 함께 당신은 하나의 키 프레스로 선택할 수 있습니다). 장점은 begin/end
영역 주위 를 감싸는 것이므로 이미 많은 항목을 입력하고 블록으로 묶으려면 영역과 유형으로 선택한 C-c C-.
다음 단일 문자를 사용하면됩니다. 블록 유형을 선택하십시오.
참조 이 메모 의 (새) 함수의 문서화 문자열 : [1 FN] org-insert-structure-template
와 파일을 org-tempo.el
.
[fn : 1] 링크가 파일에서 수정 된 줄 번호를 가리 키므로 정확하지 않을 수 있습니다 (나일 것입니다!). 링크가 올바른 위치로 이동하지 않으면 문자열 "구조 템플릿 확장"을 검색하고이 답변을 편집하여 줄 번호를 수정하십시오. 감사합니다.
C-c C-,
이상은 <s
당신이 단순히 입력하여 구조 템플릿 주위에 텍스트와 "랩"을 선택 할 수 있다는 것입니다 C-c C-,
. 으로 <s
당신이 선을 잘라 붙여 넣을 필요가 끝 템플릿 (즉, #+END_SRC
).
소스 블록의 동작은 조직 9.2에서 변경 . 약어 <s
는 더 이상 기본적으로 작동하지 않습니다. 대신 C-c C-,
어떤 호출 을 사용 합니다 org-insert-structure-template
.
를 누르면 C-c C-,
대화 상자가 나타납니다. 를 눌러 TAB
다음 enter 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
이 표시됩니다. Python, Ruby 등과 같은 다른 언어에 대해서도 동일한 방법을 사용할 수 있습니다. 위 의 점선 쌍 ( "src R"부분) 으로 cdr 을 바꾸십시오 .
또한 소스 블록 구분 기호 사이에 줄을 삽입하려면을 사용하여 줄 바꿈 문자를 삽입 할 수 있습니다 C-q C-j
. 즉, 위 의 점선 쌍src
R
C-q C-j
의 cdr 을 입력 하십시오 . 결과는 다음과 같습니다.
(add-to-list 'org-structure-template-alist '("R" . "src R
"))
누를 때 지금 R
, 이맥스는 소스 블록을 삽입하고 (LET 새 줄에 그들 사이에 커서를 넣어 |
될 점 ) :
#+begin_src R
|
#+end_src
<s
바인딩 여전히 당신은 단지 포함해야 존재 (require org-temp)
를 활성화하려면 초기화에.
(require 'org-tempo)
코드 블록의 키 바인딩의 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>"))
소스를 ESS로 수정할 수도 있습니다.
<p
다음에 a <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-lisp <el
다음에 a <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: " ""))
(add-to-list 'org-structure-template-alist '("p" . "src python"))
YASnippet Emacs 패키지를 살펴보십시오. 일부 키워드와 TAB을 사용하여 코드 스 니펫을 추가 할 수 있습니다. 조직 모드와 R 스크립트 모두에서 훨씬 간단하고 유용합니다. .emacs.d / snippets / ess-mode (및 org-mode) 폴더에 다음과 같은 파일을 저장하는 폴더가 있어야합니다.
# -*- mode: snippet -*-
# name: in
# key: in
# --
%in%
Tab을 입력하면 다음과 같이 % in %로 고정됩니다.
# -*- 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
(require 'org-tempo)
추가해야합니다.emacs
. > - 또한, 여기에 쉬운 템플릿에 업데이트 된 링크입니다 orgmode.org/manual/Easy-templates.html