这样手动记一下就可以了,没必要折腾了
你可以多加个 todo 状态(started 什么的),然后切换到这个状态和 done 都自动记个时间
这个信息拿笔写在书上,比记在emacs里面靠谱
请接受我的核武器打击:
其实不太同意一些观点:
elisp太古老了,emacs太独特了,这种上古技术,就像一把绝世好剑,注定能用好它的人会很少。这意味着你写出来的东西很多人都看不懂,当然也就无法进行技术交流互动了,自己造轮子造到心累。
博主似乎不知道 emacs-china 的存在。
博客很不错呀
我的建议是,仍然使用 clock 功能,然后利用 org-clock-report
来汇总,具体来说可以这样:
- 在一个 org-mode 文件中,在一个特定的 headline 下记录一本书的读书历史,比如:
** 阅读《GEB》
:LOGBOOK:
CLOCK: [2019-12-28 六 19:50]--[2019-12-28 六 20:16] => 0:26
CLOCK: [2019-12-27 五 19:50]--[2019-12-27 五 20:00] => 0:10
CLOCK: [2019-12-26 四 19:40]--[2019-12-26 四 20:14] => 0:34
CLOCK: [2019-12-25 三 19:50]--[2019-12-25 三 20:13] => 0:23
CLOCK: [2019-12-24 二 19:50]--[2019-12-24 二 20:18] => 0:28
:END:
- 在这个阅读条目下,新增这么一段内容
#+BEGIN: clocktable :scope subtree :block untilnow
#+END
- 将光标移动到
#+BEGIN
所在一行,执行C-c C-c
(或M-x org-control-c-control-c
),将会得到如下结果
#+BEGIN: clocktable :scope subtree :block untilnow
#+CAPTION: Clock summary at [2020-02-11 二 11:53], for now.
| Headline | Time | |
|-----------------+------+------|
| *Total time* | *2:01* | |
|-----------------+------+------|
| \_ 阅读《GEB》 | | 2:01 |
#+END
见文档:The clock table (The Org Manual)
至于你说的只能有一个正在运行的 Clock,那读书和平时的任务就冲突了
,一个办法是用 org-capture
来新建任务,通过 :clock-resume
来在完成一个任务后恢复原来的计时任务,详见文档:Template elements (The Org Manual) (搜索 clock-resume
)
李杀也不用 org-mode,手撸 html,都二十年了,我也想尝试一下。
谢谢,我感觉这样的话,和我期望的目标已经很接近了。
就是这个 Clock 还是要占用 Org Mode 任务的 Clock,不知道有没有办法能有多个 Clock 呢?
而且,如果同时在读多本书(时间精确度不需要太细),只有唯一的 Clock 也不能实现。
手动记一下
这样的话,就丢失了 Org Mode 的统计能力
我其实没太懂
- 每次
org-clock-in
都会在一个条目下生成一个时间记录,一个条目下是可以有多个时间记录的,不同的条目可以有自己的 clock 记录,不知道你说的多个 clock 是指什么 - 同时读多本书是指什么?在同一秒钟内,你面前有两本书都在看?
下面这样的记录不满足你的要求吗?
** 阅读《GEB》
:LOGBOOK:
CLOCK: [2019-12-28 六 19:50]--[2019-12-28 六 20:16] => 0:26
CLOCK: [2019-12-27 五 19:50]--[2019-12-27 五 20:00] => 0:10
CLOCK: [2019-12-26 四 19:40]--[2019-12-26 四 20:14] => 0:34
CLOCK: [2019-12-25 三 19:50]--[2019-12-25 三 20:13] => 0:23
CLOCK: [2019-12-24 二 19:50]--[2019-12-24 二 20:18] => 0:28
:END:
#+BEGIN: clocktable :scope subtree :block untilnow
#+CAPTION: Clock summary at [2020-02-11 二 11:53], for now.
| Headline | Time | |
|-----------------+------+------|
| *Total time* | *2:01* | |
|-----------------+------+------|
| \_ 阅读《GEB》 | | 2:01 |
#+END
** 阅读《世界观》
:LOGBOOK:
CLOCK: [2019-12-28 六 19:50]--[2019-12-28 六 20:16] => 0:26
CLOCK: [2019-12-27 五 19:50]--[2019-12-27 五 20:00] => 0:10
CLOCK: [2019-12-26 四 19:40]--[2019-12-26 四 20:14] => 0:34
CLOCK: [2019-12-25 三 19:50]--[2019-12-25 三 20:13] => 0:23
CLOCK: [2019-12-24 二 19:50]--[2019-12-24 二 20:18] => 0:28
:END:
#+BEGIN: clocktable :scope subtree :block untilnow
#+CAPTION: Clock summary at [2020-02-11 二 11:53], for now.
| Headline | Time | |
|-----------------+------+------|
| *Total time* | *2:01* | |
|-----------------+------+------|
| \_ 阅读《世界观》 | | 2:01 |
#+END
这个 clocktable 能不能放在一级 headline 下,然后统计所有二级 headline 的时间?像这样放在每个二级 headline下,每增加一个 「阅读 **」书的 headline,就要增加一行这个 clocktable 语句,感觉略繁琐。
可以的,我只是为了方便理解写了一个相对简单的示例而已。这个 report 是可以做很多设置的,看下我贴的文档链接吧。
一个示例如下:
* 读书记录
#+BEGIN: clocktable :scope subtree :block untilnow
#+CAPTION: Clock summary at [2020-02-11 二 17:01], for now.
| Headline | Time | |
|--------------------+------+------|
| *Total time* | *4:02* | |
|--------------------+------+------|
| 读书记录 | 4:02 | |
| \_ 阅读《GEB》 | | 2:01 |
| \_ 阅读《世界观》 | | 2:01 |
#+END
** 阅读《GEB》
:LOGBOOK:
CLOCK: [2019-12-28 六 19:50]--[2019-12-28 六 20:16] => 0:26
CLOCK: [2019-12-27 五 19:50]--[2019-12-27 五 20:00] => 0:10
CLOCK: [2019-12-26 四 19:40]--[2019-12-26 四 20:14] => 0:34
CLOCK: [2019-12-25 三 19:50]--[2019-12-25 三 20:13] => 0:23
CLOCK: [2019-12-24 二 19:50]--[2019-12-24 二 20:18] => 0:28
:END:
** 阅读《世界观》
:LOGBOOK:
CLOCK: [2019-12-28 六 19:50]--[2019-12-28 六 20:16] => 0:26
CLOCK: [2019-12-27 五 19:50]--[2019-12-27 五 20:00] => 0:10
CLOCK: [2019-12-26 四 19:40]--[2019-12-26 四 20:14] => 0:34
CLOCK: [2019-12-25 三 19:50]--[2019-12-25 三 20:13] => 0:23
CLOCK: [2019-12-24 二 19:50]--[2019-12-24 二 20:18] => 0:28
:END:
新的问题: 怎么在此基础上,汇总每年的阅读总时间?类似如下:
| Headline | Time | |
|------------------------+-----------+-------|
| *Total time* | *260:32:10* | |
|------------------------+-----------+-------|
| 2019 | 128:17:02 | |
| \_ 阅读《道德经》 | | 2:11 |
| \_ 阅读《庄子》 | | 12:01 |
| ... | | ... |
| 2020 | 132:15:08 | |
| \_ 阅读《曾国藩》 | | 3:02 |
| \_ 阅读《大唐悬疑录》 | | 10:01 |
| ... | | ... |
解决了,加个 :maxlevel N.
还可以 :block thisyear
,或者指定年份的话可以 :block 2017
再说一遍,看文档啊! ლ(╹◡╹ლ)
不好意思,我没有描述清楚。
-
org-clock-in
已经能很好满足我的需求了,我也想用org-clock-in
-
同时读多本书是指什么?
就像我上面说的,记录不需要精确到秒,举个例子就是像你说的
《世界观》
和《GEB》
交错着看。有一条 CLOCK:CLOCK: [2019-12-12 Thu 10:21]--[2020-02-12 Wed 10:21] => 1488:00
对我来说就足够了,需要每次看的时候都 clock-in -
主要的问题是:我通过
org-clock-in
在《世界观》
增加一个记录,当我在《世界观》
下使用org-clock-in
时,会自动org-clock-out
了《世界观》
的记录。
clock-in 一个记录时另外一个 clock-out 这个我觉得没有什么问题,设计就是这个样子……
如果你是要记录一本书从开始看到结束这中间的时间,而不是精确的在读的时间,那我觉得你不需要用 clock 功能,clock 功能应该也不是为此设计的。
你可以直接用 TODO -> DOING -> DONE 的状态变化:
- 创建任务的时候自动添加时间
- 通过设置可以让任务从非结束状态(TODO/DOING) 转到结束状态(DONE) 的时候再标记一下当前时间
- 利用这两个时间来计算持续时间
上述完整过程我不知道有没有现成的功能、工具支持,或许需要自己写一点代码。
另外,豆瓣读书的标记功能是不是就是你想要的?对任意一本书标记成在读,读完后标记一下读完,然后帮你计算一个读了多少天?
基本就是你说的思路了,找个时间试着写一下,谢谢
真有好东西O(∩_∩)O
想把 mode-line 信息改动一下:
不显示总时间, 只显示当前 clock 的计时.
** 阅读《GEB》
:LOGBOOK:
CLOCK: [2020-03-29 五 01:49]
CLOCK: [2019-12-28 六 19:50]--[2019-12-28 六 20:16] => 0:26
CLOCK: [2019-12-27 五 19:50]--[2019-12-27 五 20:00] => 0:10
CLOCK: [2019-12-26 四 19:40]--[2019-12-26 四 20:14] => 0:34
举个例子: 进入任务:阅读《GEB》后
mode-line 显示的是从 [2020-03-29 五 01:49] 开始的时间.
Solved:
(setq org-clock-mode-line-total 'current)