# 何为 Org-mode

Org-modeEmacs 的一种 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=>  |       |       |       |

可以在任意一个表格的空白项内输入数字来限制其所在列的长度,可以可以通过 lcr 来设置左中右对齐(默认左对齐)。比如( => 代表内容隐藏内容,实际为 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 进行安装。


  1. emacs org-mode 的使用 ↩︎

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Linn 微信支付

微信支付

Linn 支付宝

支付宝