Table of Contents
org-mode学习笔记
头信息注释
#+TAGS: { 桌面(d) 服务器(s) } 编辑器(e) 浏览器(f) 多媒体(m) 压缩(z) #+TAGS: { @Windows(w) @Linux(l) } #+TAGS: { 糟糕(1) 凑合(2) 不错(3) 很好(4) 极品(5) } #+SEQ_TODO: TODO(T) WAIT(W) | DONE(D!) CANCELED(C@) #+COLUMNS: %10ITEM %10PRIORITY %15TODO %65TAGS
- 启动时概览
- 设定标签,括弧中的为标签快捷键(如果没有指定,默认为首字母)。可以设置在多行中
- 花括号为标签组,组中的标签只能选一个
- 设定待办状态。将项设置为 | 后面的状态时(DONE CANCELED),会打上 CLOSED 标志
- 设定列视图
- 更新了参数后在参数区域按C-c C-c进行更新
这里的内容可以随时更改,但是要记得在改后用 C-c C-c 刷新设置
安装最新的org
http://orgmode.org/org-mode-download.html
下载最新的org版本,然后解压到home的emacs目录,在.emacs中添加load-path。
(require ‘org)
然后可以使用org-version查看版本号。
文档结构相关的操作
Motion
向前 | 向后 | |
---|---|---|
同级 | C-c C-f | C-c C-b |
跨级 | C-c C-n | C-c C-p |
上一级 | C-c C-u | |
跳转 | C-c C-j |
C-c C-j
org-goto 这个功能强大,随意跳转
S-TAB
收起所有目录树,相当与C-u TAB
headline结构移动
M-left,right
移动一级
M-S-left,righ
subtree移动一级
M-S-up,down
subtree上下移动一级
C-c C-x C-w
kill subtree
Structure editing
M-RET
添加同级head
M-S-RET
插入TODO
M-LEFT,RIGHT,UP,DOWN
上下左右调级
Sparse Tree
C-/
搜索关键字,折叠其他所有,只显示关心内容
C-/ r
M-g M-n
在结果中跳转
M-g M-p
List
-,+,* 1. 1) :: 添加描述在list中同样支持类似header中的motion快捷键
注意一定后边要有个空格
Footnotes
C-c C-x f
自动在此处添加脚注,再按一次就可以回到刚才的地方
加粗
*name* /斜体/ _下划线_
链接
C-c C-l
添加一个链接
[[链接地址][链接名称]] [[链接地址]]如果想修改这个链接,在链接后按下 backspace。
在一个链接上按=C-c C-o=即可访问,至于调用什么程序访问,取决于链接的内容
内部链接 Internal Link
如下命令定义了一个名为target的跳转目标:
#<<target>>如下方式可以设置到target的链接:
[[target]] 或 [[target][description]]其他常用链接命令
C-c l
可以在光标所在处创建一个跳转目标点,在需要跳转至该目标的位置输入命令
C-c C-l
可以建立到目标的链接
当输入 C-c C-l
命令,光标若处在已经存在的一个链接上的时候,可以编辑改链接。
添加附件
给文档添加附件非常简单 C-c C-a
然后就着菜单选好了,其中 C-c C-a a
是添加文件系统中的文件作为附件。
TABLES
在table中按TAB,跳到下一个table
在tab中按RET,跳到下一行
C-c C-c
整理格式
以 |-
开始的行TAB后扩充为分隔栏
C-c | 自动把一个空格排列的字段转化为表格
C-c RET
创建下一行表格
C-c -
在下一行插入一行分隔符
C-c ^
按当前列排序
表格宽度
在一列中添加<n>
如果一行显示不完全会显示为==>
此时通过 C-c `
进入编辑默认, C-c C-c
编辑完毕。
还可以添加左中右对齐。
l,c,r
比如:
<r10>
行列操作
M-上下左右
M-S-上下左右
表格计算
比较复杂,而且不常用,用得时候再说,还可以使用Org-Plot进行画图
tag
使用冒号扩起来,在headline后边。 :tag1:
快捷键: C-c C-q
如果光标在headline行,则可以直接使用 C-c C-c
search
C-c \
或者 C-c / m
C-c a m
全局搜索
C-c \
搜索标签
C-c / T
C-u C-c \
搜索带 TODO 的标签
可以使用逻辑表达式限制条件,更准确灵活的搜索
+ 和 a+b 同时有这两个标签 - 排除 a-b 有 a 但没有 b | 或 a|b 有 a 或者有 b & 和 a&b 同时有 a 和 b,可以用“+”替代在查询视图中
C-c C-c
退出
code
语法:
#+NAME: <name> #+BEGIN_SRC <language> <switches> <header arguments> <body> #+END_SRC引用文字 #+BEGIN_EXAMPLE/#+END_EXAMPLE
为了保留引文的格式,还可以使用
#+BEGIN_VERSE/#+END_VERSE
#+BEGIN_QUOTE/#+END_QUOTE
将引文居中排版可以使用
#+BEGIN_CENTER/#+END_CENTER
例子:
(defun org-xor (a b) "Exclusive or." (if a (not b) b))输入<e和TAB,得到
#+end_example 输入<s和TAB,得到 #+begin_example #+begin_src #+end_src咳,相应的还有:
("s" "#+begin_src ?\n\n#+end_src" "<src lang=\"?\">\n\n</src>") ("e" "#+begin_example\n?\n#+end_example" "<example>\n?\n</example>") ("q" "#+begin_quote\n?\n#+end_quote" "<quote>\n?\n</quote>") ("v" "#+begin_verse\n?\n#+end_verse" "<verse>\n?\n/verse>") ("c" "#+begin_center\n?\n#+end_center" "<center>\n?\n/center>") ("l" "#+begin_latex\n?\n#+end_latex" "<literal style=\"latex\">\n?\n</literal>") ("L" "#+latex: " "<literal style=\"latex\">?</literal>") ("h" "#+begin_html\n?\n#+end_html" "<literal style=\"html\">\n?\n</literal>") ("H" "#+html: " "<literal style=\"html\">?</literal>") ("a" "#+begin_ascii\n?\n#+end_ascii") ("A" "#+ascii: ") ("i" "#+include %file ?" "<include file=%file markup=\"?\">"))这些都是定义在org-structure-template-alist中的变量。
定义快捷插入操作
(define-skeleton iexp "Input #+BEGIN_EXAMPLE #+END_EXAMPLE in org-mode" "" "#+BEGIN_EXAMPLE\n" _ "\n" "#+END_EXAMPLE" ) (define-abbrev org-mode-abbrev-table "iexp" "" 'iexp)如果你想插入代码片段,直接M-x iexp RET即可,
会自动出现#+BEGIN_EXAMPLE #+END_EXAMPLE,并且光标自动停留在中间等待你的输入,
如果文章中已经有了一段内容,直接选中这段内容,
M-x iexp RET
,同样可以将这段内容引用起来,非常方便.
貌似使用等号也是有这个作用,用在行内,比如 这样
TODO使用
任何headline前加上TODO都可以变为TODO item
C-c C-t
循环变化TODO的状态
C-c / t
在sparse tree中查看TODO
C-c a t
显示aganda全局TODO
设置多个状态,并添加简写,可以使用 C-c C-t + brief
直接设置状态
(setq org-todo-keywords '((sequence "TODO(t)" "|" "DONE(d)") (sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)") (sequence "|" "CANCELED(c)")))
C-u C-c C-t
手动输入 TODO 状态,如果设定快捷则使用快捷键输入S-right
循环切换 TODO 状态,两个以上 TODO 状态时使用S-left
C-S-right
组间切换C-S-left
C-c C-v
查询视图C-c / t
C-c a t
全局 TODO 列表
TODO依赖关系
父级TODO只有等子TODO都done后才能done
例子: 添加ORDERED属性,subclass也是按照先后顺序执行
* Parent :PROPERTIES: :END: **TODO a **TODO b, needs to wait for (a) **TODO c, needs to wait for (a) and (b)
tracking todo state change
This is achieved by adding special markers ‘!’(for a timestamp)
or ‘@’ (for a note with timestamp) in parentheses after each keyword.
exp:
(setq org-todo-keywords
’((sequence “TODO(t)” “WAIT(w@/!)” “|” “DONE(d!)” “CANCELED(c@)”)))
priotify
在headline添加priority cookie
*** TODO [#A] Write letter to Sam Fortune
A,B,C
不写priority cookie的headline默认为B
=C-c ,= 设置优先级
S-up,down 调高低
对于显示效果还要设置:
org-priority-faces
checkbox
每行以- [ ] 开头,就是checkbox,注意[ ]之间必须有空格
实际上是列表,所有要加- + 或者*在[ ]之前
但checkbox不加入global todo list。
试用于把一个任务分成若干个小项。
C-c C-c
toggle checkbox
C-u C-c C-c
在list符后添加一个空的checkbox或者删除
C-u C-u C-c C-c
把checkbox设置为中间状态[-]
还headline后添加[/]或者[%] 可以显示当前项完成的个数或者百分比。
org capture
用于快速记录一些想法,可以设置一些模板。
(setq org-directory "~/lwemacs/org") (setq org-default-notes-file (concat org-directory "/notes.org")) (global-set-key "\C-cc" 'org-capture)
C-c C-c
完成编辑C-c C-k
放弃编辑C-u C-c c
查看模板,或者定制模板C-u C-u C-c c
查看last note
添加模板,设置org-capture-templates变量:
(setq org-capture-templates '(("t" "Todo" entry (file+headline (concat org-directory "/gtd.org") "Tasks") "* TODO %?\n %i\n %a") ("j" "Journal" entry (file+datetree (concat org-directory "/journal.org")) "* %?\nEntered on %U\n %i\n %a")))要学习模板的格式,查看org-capture-templates变量描述。
exports
设置如下tag可以控制导出和不导出的headline
(:export:) and ‘(:noexport:)
export option
放在文章的任何位置都可以
C-c C-e t
插入option模板
最好把统一的配置放在一个独立的文件中,然后进行引用
#+SETUPFILE
其中OPTIONS字段是最重要的,有很多选项:
C-c C-e
开始export命令,org-export,然后会提示导出什么格式。
注意,一定要加上\n:t, 导出的时候加入回行,否则都会显示为一行
防止下横杠被转义
关闭这个功能
也可以直接在配置文件中
(setq org-export-with-sub-superscripts nil)
或者只对某个site配置生效,在site的属性中添加
:sub-superscript nil
export html
org-export-html-postamble 默认此变量时true,会往结尾添加一些作者信息。
css相关:
org-export-html-style 或者
view:
info Info-like interface with one section per page.
overview Folding interface, initially showing only top-level.
content Folding interface, starting with all headlines visible.
showall Folding interface, all headlines and text visible.
遇到的问题:
使用了org-info.js,但是运行不成功,原因是只要页面出现加载错误,js就无法运行。
我的问题是sitemap.html写错了,无法加载,所以info.js没有效果,修改后正常了。
export pdf
apt install letex-recommend 结果还是导出失败。以后再搞吧。
有可能是版本的问题, 网上说要用最新的。我用的org才6.3版本。
解决了问题:需要安装一些包。
texlive-fonts-recommended, texlive-fonts-recommended, texlive-latex-extra
LaTeX Error: File `marvosym.sty’ not found. solution: apt-get install texlive-fonts-recommended
LaTeX Error: File `fullpage.sty’ not found. solution: apt-get install texlive-latex-extra
LaTeX Error: File `multibib.sty’ not found. solution: apt-get install texlive-bibtex-extra
LaTeX Error: File `algorithm.sty’ not found. solution: apt-get install texlive-science
中文问题:
安装texlive-xetex,这样就会有xelatex了。
暂时放弃,太费劲了,有空参考一下:
http://orgmode.org/worg/org-contrib/babel/examples/article-class.html
用 org-mode 写 LaTeX
http://www.cnblogs.com/visayafan/archive/2012/06/16/2552023.html
我这里生成不了org-article.cls?
这是从org-article中提取代码,org-babel-tangle总是执行失败。
使用org-jekyll导出
在一个headline上添加:blog:的tag和on的属性
然后执行:
org-jekyll-export-blog
dates and times
M-x org-time-
C-c .
创建时间, 还可以添加C-u前缀,可以插入当前时间,默认只是日期
C-c C-d
插入deadline
C-c C-s
插入Schedule
C-c !
插入非激活的时间戳,并不激活到agenda
C-u C-c .
插入date+time
C-c C-o
访问agenda在这个时间点
S-up,down,left,right
调整当前j时间戳
M-x org-clock-
C-c C-x C-i
clock in,一个工作的开始计时
C-c C-x C-o
clock out
属性
在headline的下一行输入:
C-c C-x p
添加属性
在属性栏上
C-c C-c
弹出属性的action,可以添加删除
属性的搜索
c-c \
搜索属性
未分类
C-c C-x b
在一个新缓冲区中显示当前分支
5个或以上的“-”是一个水平分割符。
byte-recompile-directory
编译整个目录el
C-u 0 M-x byte-recompile-directory
will compile all the .el files in the directory and in all subdirectories below.
The C-u 0 part is to make it not ask about every .el file that does not have a .elc counterpart.
emacs -batch -f batch-byte-compile <filename>
e.g.: emacs -batch -f batch-byte-compile *.el
简单解释一下,-batch=–batch 不打开交互界面(emacs窗口),-f=–funcall 执行一个函数,后面跟的就是函数: batch-byte-compile 编译成字节码。
给大家补充一点编译知识:
lisp是函数式语言,它的程序不能编译成可执行程序独立执行,只能通过解释器解释执行。
所以emacs只能将.el文件字节编译,编译后的目标代码其实还是源程序,只是用字节码的方式存储,而且在字节编译的过程中进行了语法检查,所以可以提高执行效率。
问题
1.如果自动添加下一级head,如在lev1中回车后添加lev2,而M-RET添加的是同级的?
2.C-c | 转换的表格对不齐,不知如何对其?
主要是中文宽度的问题。
3.如果添加不让org解析的字段?
参考资料
http://emacser.com/org-mode.htm
org结合octopress
这个非常好:orgcard
http://orgmode.org/worg/orgcard.html
http://orgmode.org/orgcard.pdf
这是orgmode的专业社区,完全用orgmode组织
http://orgmode.org/worg/
可以试试自己搭建worg
http://orgmode.org/worg/worg-setup.html