学习使用org-mode
Your life in plain text
时间没办法管理,只能管理任务
官方文档的单词
英文 | 中文 |
---|---|
reproducible | 可复制的 |
Outliner | 大纲编辑器 |
sheer | 陡峭的 |
derivative | 衍生 |
terminology | 术语 |
前置知识
什么是自由软件
“自由软件”尊重用户的自由,并且尊重整个社区。粗略来讲,一个软件如果是自由软件,这意味着用户可以自由地运行,拷贝,分发,学习,修改并改进该软件。因此,“自由软件”是关乎自由的问题,与价格无关。要理解这个概念,你要按照 Free Software 中的“Free”是指“自由言论(free speech)”中的自由,而非“免费午餐(free lunch)”的免费这一意项。为避免歧义,在使用英文时,我们也会借用法语或西班牙语的“Libre Software”来指自由软件,这样可以明确表示我们说得不是免费。
你可能花钱购买了自由软件的拷贝,也可能免费拿到。但是无论你如何获得你的拷贝,你都有自由复制和修改该软件,乃至 出售 该软件的拷贝。
GTD
GTD就是Getting Things Done的缩写,意思是“把需要做的事情处理好”,是一个管理时间的方法。GTD的核心理念概括就是必须记录下来要做的事,然后整理安排并使自己一一去执行。GTD的五个核心原则是:收集、整理、组织、回顾、执行。
emacs中的buffer概念
在 Emacs 编辑器中,Buffer(缓冲区)是一个非常重要的概念。Buffer 是 Emacs 用来存储文件或者其他信息的数据结构。你可以把 Buffer 看作是 Emacs 中打开的“文档”。
当你使用 Emacs 打开一个文件时,Emacs 会将文件的内容加载到一个新的 Buffer 中。在这个 Buffer 中,你可以对文件内容进行编辑、搜索、替换等操作。当你对文件进行修改后,可以将 Buffer 中的内容保存回文件,这样文件就会更新为你编辑过的新内容。
实际上,Emacs 中的大部分操作都是针对 Buffer 进行的。除了用于存储文件内容的 Buffer 之外,还有很多其他类型的 Buffer。例如:
- Emacs 启动时会显示一个名为 “scratch” 的 Buffer,这是一个用于输入临时文本或 Lisp 表达式的 Buffer。
- 执行命令时,命令的输出会显示在名为 “Messages” 的 Buffer 中。
- 在运行一个 REPL(如 Python,Shell 等)时,会在名为 “Python” 或 “Shell” 的 Buffer 中进行交互。
总之,在 Emacs 编辑器中,几乎所有的操作都涉及到 Buffer。学会有效地管理和操作各种 Buffer 是使用 Emacs 的关键。
参考文献
讲的比较全:利用Org-mode处理TODO的探索之路(1)
Org Mode学习(一)Windows安装Emacs,配置Org mode
【Emacs】19岁小哥带你了解org-mode的神奇之处-01
- 工作任务管理、时间管理、工作记录,这些是org-mode的基本功能。
- 用org-roam进行知识管理。
- 结合ox-hugo生成网页。
- 在Org mode中,您可以使用“org-agenda”命令来打开任务列表。在任务列表中,按下“/”键后,输入过滤条件即可筛选出符合条件的任务。您还可以使用“M-x org-search-view”命令进行更高级的搜索和筛选。
现阶段体验
- 学习成本很高
- 没找到live preview的工具配合
- 一些高级的总结如何写脚本解决
问题
C-x 被识别为 C-M-x emacs
C-x 是 Emacs 中的一种按键绑定,用于执行命令。在 Emacs 中,C-x(表示 Ctrl 键和 x 键)是保留给主要操作的,如保存、退出等。
C-M-x 是指 Ctrl + Meta(一般是 Alt 键)+ x。
如果你在使用 Emacs 时,C-x 被识别为 C-M-x,可能是键盘布局或系统设置的问题。请检查你的键盘设置和 Emacs 配置文件(如 .emacs),确保按键绑定没有被错误地重新定义。如果问题仍然存在,可以尝试在 Emacs 配置文件中添加以下代码,将 C-x 映射回默认设置:
(global-set-key (kbd "C-x") 'Control-X-prefix)
这将帮助您恢复 C-x 的正常功能。
奇怪的bug
restart装不了?
Debugger entered–Lisp error: (error “Package ‘restart-emacs-’ is unavailable”)
error(“Package `%s-%s’ is unavailable” restart-emacs “”)
package-compute-transaction(nil ((restart-emacs)))
装不了这个package。。
smart-mode-line装不了
Debugger entered–Lisp error: (error “Package ‘smart-mode-line-’ is unavailable”)
【未解决】问题eval-buffer还是会去找清华的源
重启emacs让配置生效
emacs的使用
查看版本,M-x emacs-version
M
对饮alt
键
C-n
,下一行(速记:Nextline)C-p
,前一行(速记:Previous line)C-f
,向前移动一个字符(速记:Forward)C-b
,向后退一个字符(速记:Backforward)C-k
,从光标位置到末尾删掉(速记:Kill)C-a
,回到行首(速记:ahead)C-e
,去往行尾(速记:End of line)M-a
,光标移至句首M-e
,光标移至句尾M-<
,回到编辑区域最开始位置(速记:<)M->
,去往编辑区域最后的位置(速记:>)C-v
,向下翻一屏M-v
,向上翻一屏C-x 1
,关掉无用的窗口C-x C-s
,保存C-x C-f
,打开文件M-w
,复制C-w
,剪贴wipe outC-y
,粘贴C-x C-b
,查看已打开的缓冲区C-x o
,切换窗口(other-window)C-x 0
,关闭当前窗口C-x k
,关闭当前bufferC-x C-e
,执行C-x i
,插入文件TODO
,在工作buffer和init-buffer之间来回切换C-x b
,切换到上次的bufferC-g
,取消动作C-/
,undo,撤销M-x kill-buffer
,关闭当前bufferC-x n s
,只聚焦这一行的内容C-f
,启动查找C-s
,查找下一处C-r
,查找上一处C-S-RET
,在下一行插入一个TODOC-c C-c
,refresh当前缓冲区
启动界面的配置
将语言设置为utf-8
代码详情
1 | (when (fboundp 'set-charset-priority) |
emacs中使用shell
M-x shell
如何知道配置文件的地址
C-x C-f ~
优秀的前辈配置
- Spacemacs
- Centaur Emacs
- Doom Emacs
- Steve Purcell
- redguardtoo(陈斌,一年成为emacs高手作者)
重新载入emacs的配置
M-x eval-last-sexp
使当前 elisp 配置中光标前的那一条语句立刻生效;M-x eval-region
使当前 elisp 配置中选中的 region 中的语句立刻生效;M-x eval-buffer
,使当前的 buffer 中的设置语句立刻生效;M-x load-file ~/.emacs
,载入 .emacs 文件,从而使其中的设置生效,要生效其它 elisp 文件只需要把 .emacs 文件名换成其它的即可。
org mode的使用
Bug?
Org-mode heading and blank lines,每一个heading之间有空行
如果你的header和你的正文有空白行,他就会给你自动加空白行,并且如果你修改deadline的话,会另外起一行,而不会修改deadline
agenda没有展示done item
需要的功能
快捷键
S-左右方向键
:在待办事项中切换状态C-c / t
: 显示当前所有的TODO状态的待办事项。C-c C-x C-a
:归档M-enter
:在某项任务的所在行按回车,会新建一个任务M-RIGHT
:将某个任务调低位级别(Demote the current subtree by one level.)M-LEFT
:调低某个任务的级别(Promote the current subtree by one level.)tab
:折叠任务C-c .
:激活的时间标签。用来记录一个确定会发生的事情的时间,比如开会什么的C-c !
:非激活的时间标签,insert an inactive timestamp that does not cause an agenda entry.我自己感觉可以用来记录这个项目的插入时间C-u C-c .
,默认带上时间的激活标签C-c C-s
,设置scheduleC-c C-d
,设置deadline,截止时间C-c C-t
,设置TODOC-u TAB
orS-TAB
,Rotate the entire buffer among the statesM-S-RET
,插入一个新的checkboxC-c C-c
,改变checkbox的状态S-UP/DOWN
,设置任务的优先级[%]
、[/]
,给任务设置状态
headers
#+STARTUP: indent
每一级header设置缩进#+STARTUP: content
只显示headlines#+STARTUP: showall
all entires,no drawer#+STARTUP: showeverything
show enven drawer
时间标签
- 激活的时间标签
C-c .
,尖括号,可以直接输入具体的时间,在所在位置直接 - 非激活的时间标签
C-c !
,中括号 C-u C-c .
,默认带上时间的激活标签+1
日期加131
,直接输入日期,这个月的31号07-18
,直接输入日期,这个7月的18号号C-c C-c
,修正时间--
,时间区间S-RIGHT
,往后一天
时间标签的三种状态
C-c C-u
,设置schedule,开始时间C-c C-u
,设置deadline,截止时间C-u
,加小时分钟- 一定确定的时间不要打schedule
#+STARTUP: logdone
,记录完成时间
GTD
- inbox:org-mode,capture
- context:org-mode,tag。按照场地设置情景,跟谁一起去做
context(tag)
#+TAGS: #tom(t) #jerry(j)
#+TAGS: 技术(t) 软实力(j)
#+TAGS: @home(h) @metro(m) @work(w)
agenda
C-c [
,将这个文件交给agenda管理M-x org-agenda
、a
、b
上一个星期,f
下一个星期,g
刷新,s
保存q
,退出agenda视图
a
f
, (org-agenda-later) ,查看下一周b
,(org-agenda-earlier),查看上一周
what does “Sched. 5x” mean?
自定义颜色
org-store-link
(global-set-key (kbd "C-c l") #'org-store-link)
org-capture
(global-set-key (kbd "C-c c") #'org-capture)
org-clock,记录时间的持续时间
C-c C-x C-i
,(org-clock-in)C-c C-x C-o
,(org-clock-out)
logdone
Documentation for Org hooks, commands and options
默认展示状态
overview
像google canlenda一样展示
drawer
代码详情
1 | :PROPERTIES: |
配置设置状态
header中设置
#+TODO: TODO IN-PROGRESS WAITING DONE
emacs配置文件中添加
代码详情
1 | (setq org-todo-keywords |
忽略不存在的org agenda file
C-h v org-agenda-skip-unavailable-files
每隔1s自动保存
好像没办法做到
当父节点完成的时候,子节点自动标记为完成。当子节点全部完成的时候,父节点也完成。
【TODO】创建一个循环的事件
repeating task
参考文献
8.1 Calendar/Diary 支持
【TODO】org properties的使用
当deadline改变的话记录下
#+STARTUP: logdone lognoteredeadline logredeadline lognotereschedule logreschedule
安卓端使用org
同步
- 使用mgit同步文件
编辑
- 使用orgzly进行编辑
- mobile org(官方文档,但好像比较难用)