8

我在一个 .org 文件中生成多个文件,其中包含多个源代码块。例如:

#+begin_src rst :tangle file1.rst :noweb yes
<<file1>>
#+end_src

#+begin_src rst :tangle file2.rst :noweb yes
<<file2>>
#+end_src

有没有办法只纠结一个特定的代码块而不改变标题选项?

我正在为 Sphinx 生成这些文件并减少编译时间,我只想处理我当前正在处理的文件。

如果有这样的命令会很棒org-babel-tangle-current-block- 有没有办法做到这一点?

(这是一个与Orgmode 相关的问题:如何过滤要缠结的块?

4

3 回答 3

11

这可以通过org-babel-tangle使用前缀参数调用。

所以C-u C-c C-v t应该做你想做的。

从文档字符串:

使用一个通用前缀参数,仅在点处缠结块。当有两个通用前缀参数时,仅在该点的块的缠结文件中为缠结块。

于 2015-02-25T20:37:00.310 回答
7

以防万一有人有兴趣将密钥绑定到此 - 我的 init 文件包括以下内容:

(defun org-babel-tangle-block()
  (interactive)
  (let ((current-prefix-arg '(4)))
     (call-interactively 'org-babel-tangle)
))

(eval-after-load "org"
  '(progn
     (define-key org-mode-map (kbd "C-c b") 'org-babel-tangle-block)
))

我可以将光标下的代码块与C-c b.

于 2016-09-22T01:35:48.457 回答
0

为了扩展 joon 的有用答案,我想分享这个片段:

(defun org-babel-tangle-from-edit-special ()
    (interactive)
    (org-edit-src-exit)
    (let ((current-prefix-arg '(4)))
      (call-interactively 'org-babel-tangle))
    (org-edit-special))

...可以与诸如...的键绑定结合使用

(add-hook 'org-src-mode-hook
  (lambda ()
   (local-set-key [f9] 'org-babel-tangle-from-edit-special)))

它允许您从org-edit-special模式中缠结一个源块(因此,每当您点击 时C-c ')。这就是我在找到这篇文章时真正要寻找的东西。

于 2021-08-28T08:39:09.730 回答