美文网首页程序员
org mode中的源码控制

org mode中的源码控制

作者: LeaForest | 来源:发表于2018-10-26 14:33 被阅读0次

    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

    相关文章

      网友评论

        本文标题:org mode中的源码控制

        本文链接:https://www.haomeiwen.com/subject/lvnktqtx.html