org mode中的源码控制

org mode 是 emacs 下的神器,不仅可以作时间管理,笔记管理,也可以做文学编程。这时用到的一个重要功能就是 org-babel 了。

Org 可以获取#+BEGIN_SRC 和 #+END_SRC 标签之间的块中的代码,并格式化,编译,执行和显
示结果。Org 可以简化许多对现代代码维护至关重要的内务处理任务。这就是为什么 Org 模式
文献中的这些块有时被称为'实时代码'块(与静态文本和文档相比)。用户可以控制如何'
生活'他们想要通过调整标题来编译,执行,提取每个块。

代码块的结构

Org 提供了两种在 Org 文档中构造源代码的方法:SRC 块。

一个 src block 符合这个结构:

#+ NAME:
#+ BEGIN_SRC   
#+ END_SRC

一个 inline code block 符合这个结构:

src_[
]{}

代码块的编辑

C-c '可以用于编辑当前代码块,并且会新开 buffer 编辑文件(可以使用对应 minor-mode 下所有的高亮和补全等操作),再次按下会完成并插入代码

代码块的控制

src 块中有能够控制代码块的参数,利用这些参数可以控制代码块。src 的参数一般是:parameter value的格式。
也有一些全局的控制可以写在标题或文件头。

export 参数

code,results,both,none四个参数,分别表示输出代码,输出结果,都输出,都不输出。表示的是 org-export 时的控制参数。

tangle 参数

tangle是一个 bool 值的参数,取值为yes,no,filename,其作用是将所有源代码导出到一个文件。

类似的参数还有

  • mkdirp: 目录不存在时是否创建目录
  • comments: 在导出源码时将代码以外的部分的输出为注释no,link,yes,org,both,noweb
  • shebang: 导出文件可执行“添加#!/bin/XXX”
  • padline:
  • no-expand:

var 参数

向代码块传递参数用的是parameter=value的形式。

results 参数

在 org 中有四类 results 头参数。每个'SRC'代码块每个类只能有一个选项。

采集

关于如何从收集'SRC'代码块的结果。

  • value 默认。功能模式。结果是'中最后一个语句返回的值 SRC'代码块。Python 之类的语言可能需要 return 在''中显式声明 SRC'代码块。用法示例::results value。
  • output 脚本模式。在执行代码期间从 STDOUT 收集结果 SRC'代码块。用法示例::results output。

类型

类型代码块将返回的结果类型; 影响 Org 如何在 Org 缓冲区中处理和插入结果。默认行为是自动确定结果类型。

  • table,vector 将结果解释为组织表。如果结果是单个值,请创建一个包含一行和一列的表。用法示例::results value table。
  • list 将结果解释为组织列表。如果结果是单个值,则创建一个元素的列表。
  • scalar,verbatim 字面解释并插入引用文本。不要创建表。用法示例::results value verbatim。
  • file 解释为文件的路径。插入文件的链接。用法示例: :results value file。

格式

格式与'返回的结果类型有关 SRC'代码块。选择其中一个选项; 它们是相互排斥的。默认值来自上面指定的类型。

  • raw 解释为原始组织模式。直接插入缓冲区。如果它是一个表格,则对齐。用法示例::results value raw。
  • org 结果包含在一个 BEGIN_SRC org 块中。对于逗号转义, 块中的 TAB 或导出文件。用法示例::results value org。
  • html 结果包含在一个 BEGIN_EXPORT html 块中。用法示例: :results value html。
  • latex 结果包含在一个 BEGIN_EXPORT latex 块中。用法示例: :results value latex。
  • code 结果附在''SRC'代码块。用于解析。用法示例::results value code。
  • pp 结果转换为漂亮的源代码。附在''SRC'代码块。支持的语言:Emacs Lisp,Python 和 Ruby。用法示例: :results value pp。
  • drawer 结果包含在结果抽屉中。用于包含 raw 或 org 结果以用于以后的脚本和自动处理。用法示例::results value drawer。

处理

收集结果后处理选项。

  • silent 不要将结果插入组织模式缓冲区,而是在迷你缓冲区中回显它们。用法示例::results output silent。
  • replace 默认。将结果插入 Org 缓冲区。删除以前的结果。用法示例::results output replace。
  • append 将结果附加到 Org 缓冲区。最新结果在底部。不删除以前的结果。用法示例::results output append。
  • prepend 将结果前置到 Org 缓冲区。最新结果排在首位。不删除以前的结果。用法示例::results output prepend。

file 参数

指定结果保存路径

同样的参数还有

  • file-desc: 指定文件描述

  • file-ext: 指定文件扩展

  • output-dir: 指定输出目录

  • dir: 指定执行目录(可远程)

session 参数

指定运行上下文,如果该参数一样,则运行上下文相同

noweb 参数

代码的引用

  • noweb-ref: Specify block’s noweb reference resolution target
  • noweb-sep: String to separate noweb references

cache 参数

缓存没有改变的结果,避免重复计算

其他

  • sep: Delimiter for writing tabular results outside Org
  • hlines: Handle horizontal lines in tables
  • colnames: Handle column names in tables
  • rownames: Handle row names in tables
  • tangle-mode: Set permission of tangled files
  • eval: Limit evaluation of specific code blocks
  • wrap: Mark source block evaluation results
  • post: Post processing of results of code block evaluation
  • prologue: Text to prepend to body of code block
  • epilogue: Text to append to body of code block

你可能感兴趣的:(org mode中的源码控制)