gpt4 book ai didi

emacs - 如何计算 emacs org 模式下子树的字符数?

转载 作者:行者123 更新时间:2023-12-01 12:52:50 25 4
gpt4 key购买 nike

我想在 org 模式下计算子树(标题)中的字符数。现在我已经想出了如何计算单个段落中的字符数,而不是多个段落中的字符数。我首先定义一个源代码块:

#+NAME: countChars
#+BEGIN_SRC sh :var X="" :results output
echo "$X" | wc --chars
#+END_SRC

然后我在命名段落上使用它:

#+NAME: paragraph
This is the paragraph

#+CALL: countChars(paragraph)

这很好用,但是#+NAME: 只覆盖了一个段落。我曾尝试使用标题作为参数,但无法使其正常工作。

编辑:根据评论,我想出了:

#+NAME: countChars
#+BEGIN_SRC emacs-lisp :results output :eval no-export :exports results
(interactive)
(save-excursion
(org-mark-subtree)
(setq a (- (mark) (point)))
(deactivate-mark)
(prin1 'Count= )
(prin1 a))
#+END_SRC

当被调用时几乎可以满足我的需求

#+CALL: countChars()

但是有计算源代码块(包括它自己)和文本的问题。我只想计算文本(不包括标题)。

最佳答案

您只能在源代码块前使用#+NAME,而不能在子树前使用。

用 emacs lisp 写这个更容易。

此代码块将计算当前子树中的字符数,不包括标题或内容的最后一行:如果你想使用 emacs lisp 计算当前子树中的字符数,试试这个:

(save-excursion
(org-mark-subtree) ;mark the whole subtre
(forward-line 1) ;move past header
(exchange-point-and-mark) ;swap point and mark (ends of region)
(forward-line -1) ;move backwards past the last line
(let ((nchars (- (point) (mark))))
(deactivate-mark) ;clear the region
(message "%d" nchars))))

关于emacs - 如何计算 emacs org 模式下子树的字符数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50955982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com