更改代码块的emacs组织模式键绑定

时间:2018-11-21 13:39:24

标签: emacs org-mode

在组织模式下,我先使用<s然后使用 TAB 插入代码块。该操作将插入一个代码块,例如

 #+BEGIN_SRC
    .
    .
    .
 #+END_SRC

但是我想修改此操作以插入类似的内容

#+BEGIN_SRC python -n :results output pp replace :exports both
    .
    .
    .
#+END_SRC

我知道可以在emacs初始化文件中更改:result:exports的默认行为,但我更喜欢更改此快捷方式行为,因为它使我能够在线更改选项。

3 个答案:

答案 0 :(得分:2)

根据legosciaanswer回答我自己的问题。

Easy Templates section of the org-mode manual中所述,您可以通过自定义变量org-structure-template-alist来修改这些模板。使用M-x customize-option并进行更改会将所有简单的模板添加到您的init文件中,如果您不喜欢它,则可以仅在您的init文件中添加一行以更改模板或添加一。

就我而言,我将此行添加到了emacs init文件中,先添加<p,然后添加 TAB

(add-to-list 'org-structure-template-alist '("p" "#+BEGIN_SRC python -n :results output pp replace :exports both\n?\n#+END_SRC"))

所有积分都归legoscia

答案 1 :(得分:0)

the Easy Templates section of the org-mode manual中所述,您可以通过自定义变量org-structure-template-alist来修改这些模板。 (使用M-x customize-option。)

对于<s,默认扩展名为"#+BEGIN_SRC ?\n\n#+END_SRC"。您可以对其进行编辑,以在BEGIN_SRC之后包含所需的选项。或者,您可以添加一个新模板,例如<p,即会扩展为所需的文本。

答案 2 :(得分:0)

从 Org 9.2 开始,@shae128 使用的方法不再有效。相反,您需要使用 tempo-define-template,如下所示:

(tempo-define-template "python-block"
           '("#+begin_src python :results raw output"
             n n p n n
             "#+end_src")
           "<p"
           "Insert an outputting Python block"
           'org-tempo-tags)

n 代表换行符,p 代表标记的位置,<p 代表点击 Tab 时展开的命令。

感谢Omar's answer here