如何为 org-mode 代码块 header 设置全局 :var 绑定?
How can I have global :var binding for org-mode code block header?
使用 emacs/org-mode,我可以为每个代码块定义变量绑定,如下所示。
#+HEADER: :var release="release-0.5"
#+begin_src shell :results output verbatim
echo $release
#+end_src
#+RESULTS:
: release-0.5
#+HEADER: :var release="release-0.5"
#+begin_src shell
echo "Indeed the release is $release"
#+end_src
#+RESULTS:
: Indeed the release is release-0.5
但是,我想知道是否有办法避免重复,全局或按部分定义变量绑定?
我尝试了以下方法,它不起作用:
* Release Package the script to be portable
:PROPERTIES:
:header-args:var: release="release-0.5"
:END
#+begin_src shell :results output verbatim
echo $release
#+end_src
#+RESULTS:
:
#+begin_src shell
echo "Indeed the release is $release"
#+end_src
#+RESULTS:
: Indeed the release is
编辑:(采纳@Enze Chi 的建议)
以下仍然无效:
:PROPERTIES:
:header-args:shell:var release="release-0.5"
:END
#+begin_src shell :results output verbatim
echo $release
#+end_src
#+RESULTS:
:
#+begin_src shell
echo "Indeed the release is $release"
#+end_src
#+RESULTS:
: Indeed the release is
不知道有没有办法让它起作用?
应该是headers-arg
之后的语言
:header-args:shell: :var release="release-0.5"
属性的名字是header-args:shell
; 属性 的值为 :var release="release-0.5"
。属性抽屉的语法是:
:PROPERTIES:
:NAME: VALUE
:END:
所以在这种情况下:
:PROPERTIES:
:header-args:shell: :var release="release-0.5"
:END:
注意 属性 的名称必须用冒号括起来 (:
) 并且在结束冒号之后必须有一个 space 以将名称部分与值部分,因为这就是 属性 名称在句法上的识别方式。
因此 属性 (header-args:shell
) 名称前后的冒号是 属性 语法的一部分, header-args:shell
中的冒号是 header-args:shell
语法的一部分名称本身,:var release="release-0.5"
中的冒号是值本身的一部分;而您需要在“殖民化”名称和值之间添加一个space。你必须保持冒号笔直!
有关所有详细信息,请参阅 Org 模式手册中的 Property Syntax and Using header arguments。
使用 emacs/org-mode,我可以为每个代码块定义变量绑定,如下所示。
#+HEADER: :var release="release-0.5"
#+begin_src shell :results output verbatim
echo $release
#+end_src
#+RESULTS:
: release-0.5
#+HEADER: :var release="release-0.5"
#+begin_src shell
echo "Indeed the release is $release"
#+end_src
#+RESULTS:
: Indeed the release is release-0.5
但是,我想知道是否有办法避免重复,全局或按部分定义变量绑定?
我尝试了以下方法,它不起作用:
* Release Package the script to be portable
:PROPERTIES:
:header-args:var: release="release-0.5"
:END
#+begin_src shell :results output verbatim
echo $release
#+end_src
#+RESULTS:
:
#+begin_src shell
echo "Indeed the release is $release"
#+end_src
#+RESULTS:
: Indeed the release is
编辑:(采纳@Enze Chi 的建议) 以下仍然无效:
:PROPERTIES:
:header-args:shell:var release="release-0.5"
:END
#+begin_src shell :results output verbatim
echo $release
#+end_src
#+RESULTS:
:
#+begin_src shell
echo "Indeed the release is $release"
#+end_src
#+RESULTS:
: Indeed the release is
不知道有没有办法让它起作用?
应该是headers-arg
之后的语言
:header-args:shell: :var release="release-0.5"
属性的名字是header-args:shell
; 属性 的值为 :var release="release-0.5"
。属性抽屉的语法是:
:PROPERTIES:
:NAME: VALUE
:END:
所以在这种情况下:
:PROPERTIES:
:header-args:shell: :var release="release-0.5"
:END:
注意 属性 的名称必须用冒号括起来 (:
) 并且在结束冒号之后必须有一个 space 以将名称部分与值部分,因为这就是 属性 名称在句法上的识别方式。
因此 属性 (header-args:shell
) 名称前后的冒号是 属性 语法的一部分, header-args:shell
中的冒号是 header-args:shell
语法的一部分名称本身,:var release="release-0.5"
中的冒号是值本身的一部分;而您需要在“殖民化”名称和值之间添加一个space。你必须保持冒号笔直!
有关所有详细信息,请参阅 Org 模式手册中的 Property Syntax and Using header arguments。