Emacs org-mode 的相关笔记
Table of Contents
1. 基本操作
org-mode 能够完美解决任务管理的各种问题,包括任务/子任务的划分,关键时间的设定, 任务状态变化的跟踪,以及任务的检索和查询。 再配合 org-mode 的强大编辑功能,能够 实现很多功能,比如时间管理(GTD),项目计划和管理,工作日志等。
1.1. 列表
1.1.1. 无序列表
- "M-<return>": 新建一个无序列表想
- "M-<return> <tab>": 新建列表项并且缩进到下一个级别
- "S-<left> / S-<right>": 修改列表样式
1.1.2. 有序列表
- 基本上和无序列表成本
- "S-<left> / S-<right>": 可以切换有序好无序列表
- "<tab>": 变换级别
1.1.3. Checklist
[ ]
这种的叫 checklist[ ]
"M-S-<return>": 新建 checklist 项[X]
"C-c C-c": check/uncheck[-]
"M-S-<return> <tab": 子选项[X]
sub1[ ]
sub2
[ ]
添加进度[1/2]
- task 1
- task 2
1.2. 表格
- "C-c -": 添加一个横杠
- "M-<arrow>": 移动行和列
- "M-S-<arrow>": 删除/新增行和列
ID | x | y | comments | note |
---|---|---|---|---|
A | 2 | 23 | bla | |
B | 3 | 9 | abcdefghijklmnopqrstuvwxyz | |
C | 3 | 9 | abcdefghijklmnopqrstuvwxyz |
1.3. 图片和链接
- "C-c C-l": 插入链接
- "C-u C-c C-l": 插入文件链接,可以通过修改变量 org-link-file-path-type 来控制相对路径和绝对路径
1.4. 格式化文本
- italicised text
- bold text
- underlines
literal text
code
(generally appears the same as literal text)
1.5. 代码
- "<s [Tab]": 插入 "#+BEGINSRC #+ENDSRC" 代码块
- "C-c '": 重新开个 buffer 来编辑代码块
- "C-c C-c": 执行代码块
在使用执行代码是需要配置相应的代码解释器,具体如下:
(org-babel-do-load-languages 'org-babel-load-languages '((js . t) (python . t)))
import matplotlib import matplotlib.pyplot as plt matplotlib.use('Agg') filename = '../static/image/2018/10/emacs-org-mode-note-fig.png' fig = plt.figure(figsize=(3,2)) plt.plot([1,3,2]) fig.tight_layout() plt.savefig(filename) return filename # return this to org-mode
2. 管理事件
2.1. "TODO" 事件
- "C-c C-t": 变换 <un-marked> TODO DONE 状态
- "C-c C-s": 插入 schedule
- "C-c C-d": 插入 deadline
- "C-S-<return>": 增加 TODO 项目
- "S-<arrow>": 修改日期
- "C-c / t": 显示当前文件中的所有 TODO 项目
2.2. 设置状态
;; "C-c C-t" toggle states (setq org-todo-keywords org-todo-keywords '((sequence "TODO" "DOING" "|" "WAITING" "DONE" "CANCLE")) org-todo-keyword-faces '(("TODO" :foreground "red" :weight bold) ("DOING" :foreground "red" :weight bold) ("WAITING" :foreground "magenta") ("DONE" :foreground "forest green") ("CANCEL" :foreground "forest green")))
org-todo-keywords 值得注意的是 "|" 用来分割“待办”状态和“完成”状态。
2.3. 设置优先级
(setq org-default-priority ?B org-highest-priority ?A org-lowest-priority ?C org-priority-faces '((?A . (:foreground "#d33682" :weight bold)) (?B . (:foreground "#c065db" :weight bold)) (?C . (:foreground "#268bd2"))))
2.4. 设置时间戳
- "C-c .": 插入时间戳
修改事件戳的显示方式
(setq-default org-display-custom-times t) (setq org-time-stamp-custom-formats '("<%d %b %Y %a" . "<%d %b %Y %a %H:%M>"))
3. 导出其它格式
3.1. 导出 html 格式
先安装 emacs-htmlize 插件,没有该插件的支持无法导出 HTML
git clone https://github.com/hniksic/emacs-htmlize.git ~/.emacs.d/site-lisp/emacs-htmlize
(require 'htmlize)
"C-c C-e": 导出文件,然后根据提示选择相应格式
4. 代码块
4.1. Java
可以添加基础类,例如
App
类public class App { class Foo { int x; } public void run() { Foo f1 = new Foo(); System.out.println(f1); } public static void main(String[] args) { new App().run(); } }
也可以直接写
System.out.println("hello world");
- 一些说明
:imports
导入一个或多个包,注意导入多个是使用空格分开
4.2. C++
直接编写代码
std::vector<int> v = {1, 2, 3, 4, 5}; std::vector<int>::iterator it; for(it = v.begin(); it != v.end(); ++it) { std::cout << *it << " "; } std::cout << std::endl;
- 一些说明
:includes
添加导入的同文件- C 使用 gcc 编译器
- C++ 使用 g++ 编译器
5. 参考链接
- Pragmatice Emacs Org-mode Tutorials: org-mode 基础入门
- Organize Your Lift In Plain Text!: org-mode 的详细介绍
- Dig into Org-mode: 非常实用的 org-mode 教程
- An Angenda for Life with Org-mode: 高效地使用 org-mode 的日程管理解决方案
- Appointments/Diary: emacs org-mode 周期性时间表示方法
- Python Source Code Blocks in Org Mode
- orgmode codeblock for results
- Emacs org-mode examples and cookbook: 很多开箱即用的例子