受这篇优秀文章的启发,我尝试使用
上述代码可以在块内使用
他们只是在URL上有所不同。我想定义两个宏:
然后将宏用作块的变量,这种做法可行吗?
org-mode
和babel
的组合来查询elasticsearch
。例如,计算索引中条目的数量:#+BEGIN_SRC sh
curl -XGET 'http://my.uri.example:8080/index/_count'
#+END_SRC
上述代码可以在块内使用
C-c C-c
进行评估。1
另一方面,可以在org文档中定义宏。我的问题是:是否可能定义一个宏?#+MACRO: live-db http://my.uri.example:8080
并将代码块改写如下:
#+BEGIN_SRC sh
curl -XGET '{{{live-db}}}/index/_count'
#+END_SRC
对我来说,开箱即用时它没有起作用......看起来像是 babel
没有在块的评估之前扩展宏。有什么想法吗?
编辑
现在,一旦我知道我可以使用 es-mode
,我想微调我的问题。考虑以下两个请求:
#+BEGIN_SRC es :url http://mu.uri.stage:8080
GET /users/_search?pretty
{
"query": {
"match_all":{}
}
}
#+END_SRC
并且
#+BEGIN_SRC es :url http://mu.uri.live:8080
GET /users/_search?pretty
{
"query": {
"match_all":{}
}
}
#+END_SRC
他们只是在URL上有所不同。我想定义两个宏:
#+MACRO staging http://my.uri.stage:8080
#+MACRO live http://my.uri.live:8080
然后将宏用作块的变量,这种做法可行吗?
1确保您启用了sh
的评估。添加类似以下内容:
(org-babel-do-load-languages
'org-babel-load-languages
'((sh . t)))
添加到你的.emacs
文件中。