# 何为 Org-mode
Org-mode
是 Emacs
的一种 Mode,主要的应用场景有笔记管理、任务计划、项目管理等日常工作场景。我主要计划用它做笔记管理和任务计划,笔记管理后续可以结合 Org-roam
打造一个双链的个人知识库。
# 语法
这里简单记录一些较常用的语法及相关快捷键。这一部分参考了一些博客。[1]
# 标题
#+TITLE: emacs org-mode 的使用 | |
* 这是一个一级标题 | |
** 这是一个二级标题 | |
*** 以此类推(最多10个*) |
注意: *
要位于行首; *
后面要有一个空格。
每个标题可以看作一个大纲。
# 常用快捷键
# 大纲折叠
快捷键 | 功能 |
---|---|
S-TAB | 循环切换整个文档的大纲状态(三种状态:折叠,打开下一级,打开全部) |
TAB | 循环切换光标所在大纲的状态 (三种状态:折叠,打开下一级,打开全部) |
# 在大纲间移动
快捷键 | 功能 |
---|---|
C-c C-n/p | 下 / 上一标题 |
C-c C-f/b | 下 / 上一标题(仅限同级标题) |
C-c C-u | 跳到上一级标题 |
C-c C-j | 切换到大纲浏览状态 |
# 基于大纲的编辑
快捷键 | 功能 |
---|---|
M-RET | 插入一个同级标题 |
M-S-RET | 插入一个同级 TODO 标题 |
M-LEFT/RIGHT | 将当前标题升 / 降级 |
M-S-LEFT/RIGHT | 将子树升 / 降级 |
M-S-UP/DOWN | 将子树上 / 下移 |
C-c * | 将本行设为标题 / 正文 |
C-c C-w | 将子树或区域移动到另一标题处(跨缓冲区) |
C-x n s/w | 只显示当前子树 / 返回 |
C-c C-x b | 在新缓冲区显示当前分支(类似 C-x n s) |
C-c / | 只列出包含搜索结果的大纲,并高亮,支持多种搜索方式 |
C-c C-c | 取消高亮 |
# 大纲的显示格式
org
的大纲显示模式会对不同级标题采用不同颜色显示,但是默认的大纲显示没有缩进,如果想添加缩进显示,可以用 M-x,输入 org-indent-mode
。如果想让某个文件默认用这种方式打开,可以在文件头部增加:
#+STARTUP: indent |
(setq org-startup-indented t) |
# 段落
在 org-mode
中需要两个回车来分隔一个段落,这点和 Markdown
一致。
# 字体
*粗体* | |
/斜体/ | |
+删除线+ | |
_下划线_ | |
下标: H_2 O | |
上标: E=mc^2 | |
高亮: =git= 或者 ~git~ (在我的终端里显示不同颜色) |
这里和 Markdown
有一些差距,有需要的时候查找即可。
# 列表
- 无序列表以
-
、+
或者*
开头 - 有序列表以
1.
或者1)
开头 - 描述列表用
::
- 列表层级用缩进体现
列表符号后面都要有空格;同级别的列表缩进要相同;空两行之后列表结束;
示例:
+ treeroot | |
+ branch1 | |
+ branch2 | |
+ treeroot | |
1) branch1 | |
2) branch2 |
# 快捷键
快捷键 | 功能 |
---|---|
TAB | 折叠列表项 |
M-RET | 插入项 |
M-S-RET | 插入带复选框的项 |
M-S-UP/DOWN | 移动列表项 |
M-LEFT/RIGHT | 升 / 降级列表项,不包括子项 |
M-S-LEFT/RIGTH | 升 / 降级列表项,包括子项 |
C-c C-c | 改变复选框状态 |
C-c - | 更换列表标记(循环切换) |
# 表格
一个普通表格:
#+CAPTION: 表格的标题 | |
| Name | Height | Weight | Age | | |
|----------+--------+--------+-----| | |
| Abcdefgh | 178 | 123 | 18 | |
注意表头和表格内容的分隔线和 Markdown
有略微不同。表头之上可以添加表格的标题(可选)。
对于内容较多的表格,可以设置每一列显示的长度以及对齐方式:
| <5> | <l5> | <r5> | <c5> | | |
| Name | Hei=> | Wei=> | Age | | |
|-------+-------+-------+-------| | |
| Ab=> | | | | |
可以在任意一个表格的空白项内输入数字来限制其所在列的长度,可以可以通过 l
、 c
、 r
来设置左中右对齐(默认左对齐)。比如( =>
代表内容隐藏内容,实际为 Abcedfgh
)
快捷键 | 功能 |
---|---|
C-c | |
创建或转换成表格 |
C-c C-c | 调整表格,不移动光标 |
TAB | 移动到下一区域,必要时新建一行 |
S-TAB | 移动到上一区域 |
RET | 移动到下一行,必要时新建一行 |
M-LEFT/RIGHT | 移动列 |
M-UP/DOWN | 移动行 |
M-S-LEFT/RIGHT | 删除 / 插入列 |
M-S-UP/DOWN | 删除 / 插入行 |
C-c - | 添加水平分割线 |
C-c RET | 添加水平分割线并跳到下一行 |
C-c ^ | 根据当前列排序,可以选择排序方式 |
目前表格不支持拆分和合并,只能使用如下格式替代。(本主题中安装的插件可以支持复杂格式的表格,具体参考插件 markdown-it-multimd-table
,或者我之前的博客 Shoka 主题测试)
| 一级部门 | 二级部门 | 人数 | | |
|----------+----------+------| | |
| A | A.1 | 5 | | |
| | A.2 | 6 | | |
|----------+----------+------| | |
| B | B.1 | 7 | | |
| | B.2 | 3 | |
# Org-roam
配置
在 .emacs.d/lisp/
下创建 init-org-roam.el
文件,并写入以下内容:
(use-package org-roam | |
:ensure t | |
:init | |
(setq org-roam-v2-ack t) | |
:custom | |
(make-directory "~/org-roam") | |
(setq org-roam-db-gc-threshold most-positive-fixnum) | |
(setq org-roam-directory "~/org-roam/") | |
(setq org-roam-completion-everywhere t) | |
(setq org-roam-v2-ack t) | |
(add-hook 'after-init-hook 'org-roam-mode) | |
:bind (("C-c n l" . org-roam-buffer-toggle) | |
("C-c n f" . org-roam-node-find) | |
("C-c n i" . org-roam-node-insert) | |
:map org-mode-map | |
("C-M-i" . completion-at-point)) | |
:config | |
(org-roam-setup) | |
(use-package websocket | |
:ensure t) | |
(use-package simple-httpd | |
:ensure t) | |
(add-to-list 'load-path "~/.emacs.d/site-lisp/org-roam-ui") | |
(load-library "org-roam-ui") | |
(use-package org-roam-ui | |
:after org-roam | |
:config | |
(setq org-roam-ui-sync-theme t | |
org-roam-ui-follow t | |
org-roam-ui-follow-mode t | |
org-roam-ui-update-on-save t | |
org-roam-ui-open-on-start t)) | |
) | |
(use-package deft | |
:ensure t | |
:after org | |
:bind | |
("C-c n d" . deft) | |
:custom | |
(deft-recursive t) | |
(deft-use-filter-string-for-filename t) | |
(deft-default-extension "org") | |
(deft-directory org-roam-directory)) | |
(provide 'init-org-roam) |
在 init.el
中加入:
(require 'use-package) ;; just for org-roam installation | |
(require 'init-org-roam) |
注意这里需要安装 use-package
,如果报错,可以在 Emacs
界面中使用 M-x package-install RET use-package RET 进行安装。
emacs org-mode 的使用 ↩︎