一直用 Org Mode 来记录读书历史,之前都是用一个表格记录开始时间和结束时间,
类似这样:
*** TODO Book name :Tag:
:LOGBOOK:
CLOCK: [2020-02-09 Sun 22:15]--[2020-02-09 Sun 22:19] => 0:04
:END:
最近突然想到,Org Mode 有 clock 的功能,想着是不是可以用类似的方法可以记录开始和结束时间?
Org Mode 的 Clock 是用来记录每个任务的执行时间,精确到秒了,对于读书记录,有点细了,
而且只能有一个正在运行的 Clock,那读书和平时的任务就冲突了。
不知道大伙是怎么记录读书历史的呢?
我以前也喜欢阅读的时候用emacs计时,后来觉得太麻烦且意义不大。现在我更多的记录阅读时的思考。只记录开始阅读和读完的日期。
我的需求其实也是一个开始和读完的日期,就是想看有没有类似 CLOCK 的功能,但是精确度到天的就足够了
你可以多加个 todo 状态(started 什么的),然后切换到这个状态和 done 都自动记个时间
乃要是喜欢阅读中文博客:尝尝这个:
ps 我自己看了,有喜欢的人在上面,也有不喜欢的。乃要自己分辨啊。
pps: 搜集大家的 Blog 喽!
2 个赞
我的建议是,仍然使用 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
)
5 个赞
李杀也不用 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:
2 个赞
新的问题:
怎么在此基础上,汇总每年的阅读总时间?类似如下:
| Headline | Time | |
|------------------------+-----------+-------|
| *Total time* | *260:32:10* | |
|------------------------+-----------+-------|
| 2019 | 128:17:02 | |
| \_ 阅读《道德经》 | | 2:11 |
| \_ 阅读《庄子》 | | 12:01 |
| ... | | ... |
| 2020 | 132:15:08 | |
| \_ 阅读《曾国藩》 | | 3:02 |
| \_ 阅读《大唐悬疑录》 | | 10:01 |
| ... | | ... |
还可以 :block thisyear
,或者指定年份的话可以 :block 2017
再说一遍,看文档啊! ლ(╹◡╹ლ)
1 个赞
clock-in 一个记录时另外一个 clock-out 这个我觉得没有什么问题,设计就是这个样子……
如果你是要记录一本书从开始看到结束这中间的时间,而不是精确的在读的时间,那我觉得你不需要用 clock 功能,clock 功能应该也不是为此设计的。
你可以直接用 TODO -> DOING -> DONE 的状态变化:
- 创建任务的时候自动添加时间
- 通过设置可以让任务从非结束状态(TODO/DOING) 转到结束状态(DONE) 的时候再标记一下当前时间
- 利用这两个时间来计算持续时间
上述完整过程我不知道有没有现成的功能、工具支持,或许需要自己写一点代码。
另外,豆瓣读书的标记功能是不是就是你想要的?对任意一本书标记成在读,读完后标记一下读完,然后帮你计算一个读了多少天?
2 个赞