답변:
당신이 설정 한 경우 2017 기준으로 월 22, org-src-tab-acts-natively
및 org-src-fontify-natively
다음 소스 블록 TAB 블록의 언어의 조각을 확장됩니다. yas-buffer-local-condition
조직 모드 스 니펫이 블록 모드의 스 니펫을 가리지 않도록 설정할 수 있습니다 .
(defun my-org-mode-hook ()
(setq-local yas-buffer-local-condition
'(not (org-in-src-block-p t))))
(add-hook 'org-mode-hook #'my-org-mode-hook)
도 참조 https://github.com/joaotavora/yasnippet/issues/761 , https://github.com/joaotavora/yasnippet/pull/760
나는 이것을 위해 두 가지 방법을 사용합니다. babel 헤더를 만드는 데 도움이되는 몇 가지 조직 스 니펫이 있습니다. 예를 들어, Babel에 대한 C ++-14 헤더를 만듭니다. 입력 <s C++_
하고 확장합니다.
# -*- mode: snippet -*-
# name: c++_header
# key: C++_
# --
C++ :main no :flags -std=c++14 -Wall --pedantic -Werror :results output :exports both
#include <iostream>
int main()
{
$0
return 0;
}
그런 다음 Cc '를 사용하여 특정 언어 모드로 전환하고 해당 언어의 스 니펫을 사용합니다. 그런 다음 Cc '를 사용하여 org 파일로 돌아갑니다. 잘 작동한다.
npostav가 이미 응답 했으므로 스 니펫은 하나의 조직 모드 파일 내의 언어에 따라 다르게 확장됩니다.
Python 또는 Emacs Lisp 코드 블록 내에 "co"및 [tab]을 입력하십시오.
#+BEGIN_SRC python :session *Python* :results output
co[tab]
# comment
#+END_SRC
#+BEGIN_SRC emacs-lisp :results value scalar
co[tab]
; comment
#+END_SRC
C-c '
어쨌든 해당 블록을 편집하는 것이라고 생각합니다 .이 경우 emacs-lisp 주요 모드에는 별도의 창에서 블록을 편집하는 동안 적절한 yasnippet 스 니펫이로드됩니다 (올바른 들여 쓰기도 처리합니다) 등)