Org Notes
文章目录
工具收集
提醒工具
- org-notify: GitHub - syohex/org-notify: System notifications of org agenda deadlines
- org-notifications: GitHub - doppelc/org-notifications: Desktop notifications for your org-agenda…
- org-alert: GitHub - spegoraro/org-alert: System notifications of org agenda items
- org-wild-notifier: GitHub - akhramov/org-wild-notifier.el: Alert notifications for org-agenda
org 官方工具列表
- 地址: Org Mode tools!
blog 工具
- org 官方列表:Blogs and Wikis with Org
- weblorg: weblorg - documentation
- hugo
- ox-hugo
visibility
- 注:以下功能在设置完后要使用 C-c C-c 刷新 org mode
starup
| |
注:上面的逗号,我本没写,是 emacs 自动添加的
VISIBILITY 属性
- 可能的值: ‘folded’, ‘children’, ‘content’, and ‘all
- 经验证,这个不靠谱
使用 drawer
- 只有在“#+STARUP: showeverything”时才会自动显示其他时候,自动隐藏
- 添加 drawer 快捷键:c-c c-x d
drawer 隐藏更靠谱
1 2 3:DRAWERNAME: your centent :END:
table
spreadsheet
formula syntax 公式格式
- 一般情况
if($1 < 20, teen, string("")) 特别情况
if("$1" == "nan" || "$2" == "nan", string(""), $1 + $2); E f-1遇到公式的结果是 string 的,前面的公式也要是 string,即加上双引号
- eg:结果“nan”,原来公式“$2”
遇到公式结果是特别符号,写出来可能 org 或 calc 不能理解,同样适用
if("$1..$7" == "[]", string(""), vmean($1..$7))- eg:上面空 vector 向量,“[]”
空字符串
- string("")
formula input shortcuts 公式输入快捷键
range formula 区域范围公式
- 快捷键:C-u C-c =
column formula 列公式(即 Excel 中常用的公式)
快捷键:
- C-c =
C-u 5 C-c =
带前缀参数的列公式
- 参数:应用于下面连续的 num 个单元格
edit all formula 编辑所有公式
- 快捷键:C-c '
帮助
显示所有单元格坐标
- 快捷键:C-c }
elisp 格式公式
‘'(concat (substring $1 1 2) (substring $1 0 1) (substring $1 2))’
"'(concat $1 $2)"
- 目前为止,只发现这种方式连接与修剪字符串
不能使用的形式
- eg: '(concat (substring $1 0 (string-width $1)) $2)
hyperlink 链接
内部链接
链接的锚 target, anchor
- 使用 <<My Target>>
- 具体用法,参考 Org Manual
- 注意:有#+NAME 必有 #+CAPTION
headline
注意:
- 不是好的锚选择
即使很长,也要全名,
- 可以使用 C-M-i 自动补全
- headline, 在编辑中,很可能经常改变
链接
添加描述 description
使用 C-c C-x 快捷键
打开链接
- C-c C-o
- 使用鼠标
日期时间
格式
时间点 C-c .
- <2020-09-21 周一>
- <2020-09-21 周一 08:20>
重复发生的时间点
- <2020-09-28 周一 +1w>
- "+1d": day
- "+1w": week
- "+1m": month
- "+1y": year
时间间隔(范围)“–”
- <2020-09-21 周一>–<2020-09-28 周一>
无效日期 "<>" –> "[]"
- [2020-09-21 周一]
Diary-style
22:00-23:00 The nerd meeting on every 2nd Thursday of the month <%%(diary-float t 4 2)>
- <%%(diary-float t 4 2)>
格式
- (diary-float 月份 星期 Nth)
月份
- t –> 表示所有的
- 取值:1~12
星期
- 0: 星期天
- 1~6: 周一~周六
Nth
- 表示,这个日子(星期),在这个月出现的第几次
取值:
>0
- 正数,正向排序,如: (diary-float t 4 2) 表示第二个星期四
<0
- 负数,逆序
更多格式
- Org Manual -> Dates and Times -> Creating Timestamps -> the date/time prompt
创建
当前 C-c .
- 不带时间 C-c . <2020-09-21 周一>
- 带时间 C-u C-c . <2020-09-21 周一 22:35>
无效日期 C-c !
- 不带时间 [2020-09-21 周一]
- 带时间 [2020-09-21 周一 22:30]
格式修复 C-c C-c
使用日历 输入
C-c >
- 打开日历
- 可以移动光标,到想要的日期
C-c <
- 提取日期
- 提取,日历上面选定的日期
- C-c . 的快速方式
操纵日期时间
打开日期 C-c C-o
- org-open-at-point
修改日期
- 加天数 S-<RIGHT>
- 减天数 S-<LEFT> [2020-09-10 周四 03:05]
修改时间
- 加 S-<UP>
- 减 S-<DOWN>
注意
- 光标移动到合适的位置
<2020-09-21 周一>–<2020-10-03 周六>
日期计算 C-c C-y
- 原地插入结果 C-u C-c C-y
注意:
- 计算的是时间范围
<2020-09-23 周三 11:20-20:20>–<2022-11-07 周一>
钟表计时(一个时间点 到 另一个时间点)
设置,不随 Emacs 关闭而终止计时
- 跨 Emacs Sessions,计时
| |
计时命令
按键前缀 C-c C-x
prefix
开始计时 C-c C-x C-i
clock in
停止计时 C-c C-x C-o
clock out
重启计时 C-c C-x C-x
- 默认重新启动光标下的任务即时
重启计时(带任务选择菜单) C-u C-c C-x C-x
可以用来切换计时任务
- 比如,正在做 Task A, 中间切换到 Task B
- 这个命令,会自动暂停 Task A
刷新计时 C-c C-x C-e
- estimate, 统计
取消计时 C-c C-x C-q
跳转到计时位置 C-c C-x C-j
jump, 跳转到正在计时的 headline
汇总 org-clock-report
(显眼地)显示总计时 C-c C-x C-d
统计的是,一个 Task,所有的时间段的“总”计时
Test Area
CLOCK: [2022-02-20 日 23:05]–[2022-02-20 日 23:08] => 0:03 CLOCK: [2020-09-22 周二 00:37]–[2020-09-24 周四 21:02] => 68:25 CLOCK: [2020-09-22 周二 00:21]–[2020-09-22 周二 00:36] => 0:15 CLOCK: [2020-09-22 周二 00:19]–[2020-09-22 二 00:25] => 0:06
| Headline | Time |
|---|---|
| Total time | 2d 21:53 |
dfdferer
TODO sdfdf
- State "TODO" from [2020-09-24 周四 20:39]
hello todo note 01
task demo01
CLOCK: [2020-09-24 周四 21:11]–[2020-09-24 周四 22:02] => 0:51 CLOCK: [2020-09-24 周四 21:11]–[2020-09-24 周四 21:11] => 0:00 CLOCK: [2020-09-24 周四 20:52]–[2020-09-24 周四 20:55] => 0:03
To Cancel demo02
CLOCK: [2020-09-24 周四 21:08]–[2020-09-24 周四 21:08] => 0:00 CLOCK: [2020-09-24 周四 21:00]–[2020-09-24 周四 21:00] => 0:00
- to cancel demo
task try restart
CLOCK: [2020-09-24 周四 20:52]–[2020-09-24 周四 20:55] => 0:03
task try start with menu
CLOCK: [2020-09-24 周四 20:48]–[2020-09-24 周四 20:55] => 0:07
倒计时(秒表)
开始倒计时 C-c C-x ;
当前(插入)剩余时间 C-c C-x .
记录的是 time stamp
- eg: 0:08:40
剩余时间(带描述文字)C-c C-x -
- 0:01:21
- 描述文字
- 0:00:00
- 没有已经存在的计时器
没有已启动的计时器
- 自动启动一个从 0 开始的正向计时器
暂停倒计时 C-c C-x ,(逗号)
继续倒计时 C-c C-x ,
停止倒计时 C-u C-c C-x ,
Test Area
hello countdown
This is a countdown note
- 0:00:00
- hello note with stamp
计时器(秒表)
开始计时 C-c C-x 0
不从零开始的计时 C-u C-x 0
暂停和重新开始计时 C-c C-x , (逗号)
- 与倒计时的暂停方法相同
停止计时 C-u C-c C-x ,
预估时间
作用:
- 做一个任务之前,我们会估计一下,需要多少时间
使用 C-c C-x C-i 等 时间段计时,获取的时间差总和
- 最终的应该预期和这个 EFFORT 相差不多
- 说明你估计的挺好
实现方法
- 使用 :EFFORT: property 设置
日程安排(Deadlines and Scheduling)
格式
Deadlines
- 截止时间 –> DEADLINE
1 2* TODO we must finish this mission on time DEADLINE: <2020-09-23 周三>Scheduling
开工时间 –> SCHEDULED
1 2 3* TODO we plan to start this job next week. SCHEDULED: <2020-09-21 周一> SCHEDULED: <2020-09-21 周一 -2d> : 推迟2天,弹出时间
带时间范围
| |
使用 “-”
- eg: <12:00-13:00>
创建
Deadline C-c C-d
DEADLINE: <2022-02-20 日>
Schedule C-c C-s
SCHEDULED: <2022-02-20 日>
检查到期的 Deadline C-c / d
- org-check-deadlines
检查 Schedule
before, 已经到的(过的)Schedule: C-c / b
- org-before-date
after, 还没到的 Schedule: C-c / a
- org-after-date
重复性任务 Repeated tasks
- 即:过一段时间,再次触发任务
格式
| |
注释
"+1m": 每隔一个月再次触发
- h, w, d, m, y 等
- 时,周,天,月,年
操纵
单次设置成完成 C-c C-t
| |
记录 “时间” 和 “notes” C-u C-c C-t
TODO 永久性设置完成 C-u - 1 C-c C-t
- State "TODO" from "DONE" [2022-02-20 日 22:31]
- 即: C-u "-1" C-c C-t
必须每次(截止日期前)都要完成的任务 "++1d" or ".+1d"
如果,没有按时完成
- "+1d"
一次 C-c C-t: 即可恢复状态
- "++1d"
C-c C-t: 也不可恢复
如,忘记吃饭
- 明天补吃,今天还是每次,补不过来了
- 忘记充电,手机已经关机,充多次,也不能弥补了
Test Area
Study Java
DEADLINE: <2020-09-30 周三> SCHEDULED: <2020-09-28 周一>
dfdf
[B] Priority 优先级任务
按键: C-c , 可选值:A, B, C
raw input: =* TODO [#A]=
修改优先级可选值
| |
例子
[A] A
[B] B
[C] C
[#E] E
TODO Todo 任务
设置 todo 的可选值
1#+SEQ_TODO: NEXT(n) TODO(t) WAITING(w) SOMEDAY(s) PROJ(p) | DONE(d) CANCELLED(c)- 在上面 “|” 左侧的是红色,右面的是绿色
生效
- revert buffer 后,生效
- C-c C-c 立刻生效
生成 Todo Task C-c C-t
顺序调节 S-<LEFT> 或者 S-<RIGHT>
Test Area
TODO one todo task
PROJ cancelled task
Agenda View 日程表 C-c a
文件位置
- 必须放置在 ~/org 文件夹下,才能被侦测到
翻页
向前 f –> forword
向后 b –> backward
切换视图
天 d
周 w
年 y
follow mode 跟踪切换 task 所在文件 Shift - f
属性(Properties and Columns)
property
特点
- 与 org mode entry(条目)相关联的 key-value(键值对)
作用范围
可选值
- 一个条目
- 一个条目树 Entry tree 中的所有条目
- 整个 org 文件
具体实现
一个 tag 可以有值
eg:
Release 标签
- 可选值:1, 2, …
类似 database
- 一个 property –> database 一个字段
- 一个条目 –> database 一个记录
eg:
对于歌曲
拥有的字段
- 歌手
- 风格
- 名称
- …
- 把这些字段做成 标签 (property)
- 一个条目,对应一首歌,即一条记录
语法
例子
1 2 3 4 5 6 7 8 9 10* CD collection ** Classic *** Goldberg Variations :PROPERTIES: :Title: Goldberg Variations :Composer: J.S. Bach :Artist: Glenn Gould :Publisher: Deutsche Grammophon :NDisks: 1 :END:
继承
相关变量
org-use-property-inheritance
可选值
- t
- nil
继承特殊的 property
- COLUMNS
- CATEGORY
- ARCHIVE
- LOGGING
特殊的 property
特点
类似保留字,emacs org 另有专门用途
- 不能个人用作它途
作用
- 设置访问特性
这些值
- TODO
- SCHEDULED
- DEADLINE
- …
property 可选值设定 语法
设置所有可选值
语法格式
property 名称以 “_ALL” 结尾
注意
- 这个 特殊 property 会被默认继承
对于条目树 entry tree
1 2 3 4 5* CD collection :PROPERTIES: :NDisks_ALL: 1 2 3 4 :Publisher_ALL: "Deutsche Grammophon" Philips EMI :END:对于整个文件
1#+PROPERTY: NDisks_ALL 1 2 3 4解说
- 这样设置条目的 NDisks 属性,可选值就成了 1, 2, 3, 4
添加可选值
语法格式
property 名称以 “+” 结尾
整个文件
1 2#+PROPERTY: Animal cat #+PROPERTY: Animal+ dog解说
- 给 Animal 设置并添加可选值 dog
整个条目
1 2 3 4 5 6 7 8 9 10 11 12* CD collection ** Classic :PROPERTIES: :Genres: Classic :END: *** Goldberg Variations :PROPERTIES: :Title: Goldberg Variations :Genres+: Baroque :END:解说
- 给 Genres 设置并添加可选值 Baroque
操纵 property
(从零)创建 C-c C-x p
设置已有 C-c C-x s
只能修改(已有) C-c C-c
徧历可选值 S-<LEFT> 和 S-<RIGHT>
插入 property drawer C-u C-c C-x d
查询
sparse tree 创建和查找 C-c \ 或者 C-c / m
- 创建 sparse tree
M-x org-agenda m (M)
单个 property 查找 C-c / p
Test Area
demo
demo sub
Column View
- 作用:以表格的形式,显示条目
格式设置
全局设置
1#+COLUMNS: %7TODO(To Do) %58ITEM(Task) %TAGS(Tags) %6CLOCKSUM(Clock) %EFFORT(estimate time){:}解说
%7TODO(To Do)
- %7: 宽度,7 表示字符数量
- TODO: 关联的 property 名称
- (To Do): 注释,用于 Emacs 在顶部显示,当作表头(Column View 模式下)
%EFFORT(estimate time){:}
{:}: 表示合计
- 把各个子条目的 EFFORT 属性值,求和
本地设置
- 使用 COLUMNS property 属性
操作
进入 Column View 模式 C-c C-x C-c
注意
- 生效位置
- 要在 item tree 的 父节点,才能对下面的条目都生效
退出 Q (q)
退出无效
- 先关闭文件
- 再重新打开文件即可
注意
- 使用 M-x revert-buffer 无效
标签(tags)
定义标签可选项
| |
解说
PHONE(p)
- (p): 定义的编辑快捷键
设置标签 C-c C-q
- 按<TAB> 键可以输入没有预定义的标签
语法
| |
- 继承性
- 可以有多个标签
图片
使用 Caption 设置标题
1 2 3#+CAPTION: My picture #+ATTR_HTML: alt:my_demo :align center [[./image/demo.png]]
预览
C-c C-x C-v
- M-x org-display-inline-images
强制预览
C-c C-x C-M-v
M-x org-redisplay-inline-images
latex 与 方程公式
居中格式
1 2 3\begin{equation} x^2+y^2=1 \end{equation}以
\begin开头- 导出时,自动加入计数
以 $$ formula $$ 编写
仅仅居中,不会加入计数
1$$x^2+y^2=9$$
内联格式
$ formula $ 样式
1$x^2+y^2=4$
Blog 使用 Org Mode
教程
使用 project publish
配置
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27(setq org-publish-project-alist '(("demo-notes" :base-directory "~/org/blog/test" :base-extension "org" :publishing-directory "~/org_blog_export/" :recursive t :publishing-function org-html-publish-to-html :headline-levels 4 :auto-preamble t ) ("demo-static" :base-directory "~/org/blog/test" :base-extension "css\\|js\\|png\\|jpg\\|gif" :publishing-directory "~/org_blog_export/" :recursive t :publishing-function org-publish-attachment ) ("demo" :components ("demo-notes" "demo-static") ) ) )
发布命令
- M-x org-publish-project
图片
宽度配置
1 2 3#+ATTR_HTML: :width 300 #+ATTR_ORG: :width 300 [[file:/path/to/picture.png]]
模板 Structure Template
- 位置:Org > Miscellaneous > Structure Templates
- 快捷键: C-c C-,
流程图
使用 ditaa 外部辅助工具
#+HEADER: :exports results #+begin_src ditaa :file flow.png :cmdline -r /--------------\ |{d} | | Hello World! | | | \--------------/ #+end_srcditaa 配置
- github
jar 包放置路径
windows:
- D:\soft\emacs\emacs-27.1-x86_64\share\emacs\27.1\lisp\contrib\scripts
绘制工具
- 使用 picture-mode
rich format
source block
代码行数标记
-n: 设定起始行数1 2;; This exports with line number 20. 当前行是第 20 行 (message "This is line 21")+n: 设定为上面的代码-n 20加上设定的增加值1 2;; This is listed as line 31. (1) -n 20 (2) +n 10 (3) 所以 20 + 10 = 30, 当前行是30 + 1 = 31 行 (message "This is line 32")
代码内 anchor 引用和链接
设定 anchor
1 2(save-excursion ;; (ref:sc) (goto-char (point-min)) ;; (ref:jump)- 这里 (ref:sc) 和 (ref:jump) 就是
代码块内部的 anchor
- 这里 (ref:sc) 和 (ref:jump) 就是
链接中使用 代码快 anchor
- 例句: (sc) 是可以跳转到代码块内部链接, link_label
格式:
- 不加 label:
[[(anchor_name)]] - 加上 label:
[[(anchor_name)][label_text]]
- 不加 label:
代码块 anchor 取消显示 -r
方法: 在 +begin_src lang 后面加上 -r 选项
水平分割线
格式:=—–= 要点:使用的横杠“-”要 不少于五个
Footnote 脚注制作
由两部分组成:
脚注解释
- 这个脚注的详细说明
脚注引用
- 给定出现地方,引用了什么,是哪个脚注
格式:
分离格式
脚注解释
[fn:num] This is the detail info
要点
- 从 第 0 列 开始,才有效
- num 是数字或者起的唯一化名字 name
脚注引用
I used the article[fn:num]
合一模式 inline
- 解释内容和引用放在一起
格式:
没有 name 自动计数形式
This is my used article[fn:: This is the detail info]
包含 引用名称
This is my used article[fn:name: detail info]
标题 Captions
用法:
把 #CAPTION: Title info 放到要添加标题的对象上方
添加短标题:
#+CAPTION[Short caption]: Longer caption.
转义字符
功能:输入 org mode 语法中的特殊字符
解决方法:
- "\" 强制转义
零宽度空格
- 用零宽度空格打断 org mode 语法,使其变成普通文本
零宽度空格输入方法
- C-x 8 <RET> zero width space <RET>
- C-x 8 <RET> 200B <RET>
例子
下标问题(subscript)
- constituent_dimensions 会被输出成下标
- constituent_[零宽度空格]dimensions 就不会转换了
attachment
C-c C-a org-attatch 子命令
创建
a- 根据设置,选择 attach 方法
c/m
- copy / move
l/y
- hard link / soft link
- 注意 hard link 可能在有的 OS 不支持
b
- buffer
n
- new buffer and save as attachment
- o : 打开当前附件
- f : 打开文件夹
- F : 打开文件夹,强制使用 Dired
- d : 删除附件
s : 设置附件存储位置
- 多少文件都会被存在这个目录
- 不单独指定各个新附件的 id
S : 取消 附件文件夹设置
- 文件夹本身不会删除
- 只是不再作为作为附件目录
格式转换工具
ipynb 转换成 org-mode 文件
| |
文章作者
上次更新 2025-06-20 (811ee6f)