更改代码块的 emacs 组织模式键绑定
Posted
技术标签:
【中文标题】更改代码块的 emacs 组织模式键绑定【英文标题】:Change emacs org-mode key binding for code block 【发布时间】:2018-11-21 13:39:23 【问题描述】:在 org-mode 中,我使用 <s
然后 TAB 插入代码块。此操作将插入一个代码块,如
#+BEGIN_SRC
.
.
.
#+END_SRC
但我想修改此操作以插入类似的内容
#+BEGIN_SRC python -n :results output pp replace :exports both
.
.
.
#+END_SRC
我知道可以在 emacs 初始化文件中更改 :result
或 :exports
的默认行为,但我更喜欢更改此快捷方式行为,因为它使我能够更改行中的选项。
【问题讨论】:
【参考方案1】:根据legoscia 的answer 回答我自己的问题。
如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
【讨论】:
【参考方案2】:从 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
代表在点击标签时展开的命令。
感谢Omar's answer here
【讨论】:
【参考方案3】:如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
,展开成你想要的文字。
【讨论】:
谢谢,您的回答解决了我的问题,但是由于它将所有简单模板的配置添加到 init 文件中,我将根据您的回答添加另一个答案,这将使 init 文件更具可读性,只需添加一行新的或编辑过的简单模板。所有学分都归@legoscia以上是关于更改代码块的 emacs 组织模式键绑定的主要内容,如果未能解决你的问题,请参考以下文章