org mode中的源码控制

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

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

代码块的结构

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

一个 src block 符合这个结构:

#+ NAME:<name>
#+ BEGIN_SRC <language> <switches> <header arguments>
  <BODY>
#+ END_SRC

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

src_<language>[<header arguments>]{<body>}

代码块的编辑

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
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,133评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,682评论 3 390
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,784评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,508评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,603评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,607评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,604评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,359评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,805评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,121评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,280评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,959评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,588评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,206评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,193评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,144评论 2 352

推荐阅读更多精彩内容