本文翻译自 http://doc.norang.ca/org-mode.html ,原文作者为Bernt Hansen 。由于原文较长,因此会分多篇文章来发布。转载请标记出处。 #+end_src
Org-mode, 用文本文件管理日常(一)
Org-mode, 用文本文件管理日常(二)
Org-mode, 用文本文件管理日常(三)
Org-mode, 用文本文件管理日常(四)
Org-mode, 用文本文件管理日常(五)
Org-mode, 用文本文件管理日常(六)
Org-mode, 用文本文件管理日常(七)
Org-mode, 用文本文件管理日常(八)
Org-mode, 用文本文件管理日常(九)
Org-mode, 用文本文件管理日常(十)
Org-mode, 用文本文件管理日常(十一)
Org-mode, 用文本文件管理日常(十二)
Org-mode, 用文本文件管理日常(十三)
Org-mode, 用文本文件管理日常(十四)
Org-mode, 用文本文件管理日常(十五)
1 提高生产力工具
使用emacs书签来快速导航
我开始使用emacs书签来保存位置,以方便通过标签自动返回。通常我想回到当前计时任务,这很简单-只要执行 F11 。当我在查看列表,对任务设置一个书签,就可以快速跳转到该列表处理,当完成后,可以快速回到任务,然后将它的复选框标记上。
我emacs书签相关设置如下:
;; Bookmark handling ;; (global-set-key (kbd "<C-f6>") '(lambda () (interactive) (bookmark-set "SAVED"))) (global-set-key (kbd "<f6>") '(lambda () (interactive) (bookmark-jump "SAVED")))
当我想保存当前位置,我只需要执行快捷键 C-f6 ,当我想返回,我只需要执行 f6 .我会每次重写这个标签来设置新位置。
使用org-mime发邮件
我现在正在使用通过mime来发送org相关邮件。我在 org-mode-hook 添加了 C-c M-o 按键绑定来从org子树生成邮件。
从agenda中移除多个状态切换日志
我在agenda视图中通过如下视图,跳过相同任务项包含多个时间戳这种情况。
(setq org-agenda-skip-additional-timestamps-same-entry t)
这样可以移除多于的状态转换log当多个时间戳存在于一个任务项中。
在表格中舍弃老的引用格式
我通过如下设置,舍弃了表格中老的 A3/B4格式引用。
(setq org-table-use-standard-references (quote from))
使用系统设置来完成file-application选择
为使任务打开方式体验一致,我会像如下方式设置 org-file-apps .
(setq org-file-apps (quote ((auto-mode . emacs) ("\.mm\'" . system) ("\.x?html?\'" . system) ("\.pdf\'" . system))))
当打开文件文件时,它使用定义在我系统 mailcap 中的项目设置,这使得我,在通过 C-c C-o打开一些HTML链接时候有一致体验。
复制时删除ID
(setq org-clone-delete-id t)
折叠文本列表
org mode能够折叠(展开)文本列表。
(setq org-cycle-include-plain-lists t)
我发现当我的重复任务包含很多复选框子列表时,这个功能非常有用。我可以折叠起完成项,并只关注那些还没有完成的。
代码块语法高亮
在org-mode中可以显示native形式的源码。这可以高亮 C以及shell脚本源码。当我要标记源码,我使用 =C-c '=(control-c单引号)会打开源码窗口,源码也会高亮。这个设置也会将org-mode缓冲区的语法高亮。
插入代码块模板
在org-mode中有一些快捷键用来快速插入代码块模板。
我在org中使用example以及代码块非常多
Key Sequence Expands to
< s TAB #+beginsrc … #+endsrc
< e TAB #+beginexample … #+endexample
我添加了一个代码模板块用来从MS outlook中拷贝内容到我的org-mode任务。
下面的lisp在org-mode中将默认将字符转化成小写。
(setq org-structure-template-alist (quote (("s" "#+begin_src ?nn#+end_src" "<src lang="?">nn</src>") ("e" "#+begin_examplen?n#+end_example" "<example>n?n</example>") ("q" "#+begin_quoten?n#+end_quote" "<quote>n?n</quote>") ("v" "#+begin_versen?n#+end_verse" "<verse>n?n</verse>") ("c" "#+begin_centern?n#+end_center" "<center>n?n</center>") ("l" "#+begin_latexn?n#+end_latex" "<literal style="latex">n?n</literal>") ("L" "#+latex: " "<literal style="latex">?</literal>") ("h" "#+begin_htmln?n#+end_html" "<literal style="html">n?n</literal>") ("H" "#+html: " "<literal style="html">?</literal>") ("a" "#+begin_asciin?n#+end_ascii") ("A" "#+ascii: ") ("i" "#+index: ?" "#+index: ?") ("I" "#+include %file ?" "<include file=%file markup="?">"))))
NEXT状态只适用于任务
NEXT 任务只适用 tasks 并不适用 projects 。我写了个函数来处理状态改变,以及当子任务状态变成 NEXT ,会将父任务从 NEXT 转换成 TODO ,因为父任务是项目,并不是任务。
默认折叠模式显示
启动时显示折叠模式
(setq org-startup-folded t)
我以前使用内容模式,因此可以在归档前查看子树内容,但是我的归档流程已经修改了,因此我不需要这步了。
只允许字符类表项
下列设置添加如下的字符列表
a. item one b. item two (setq org-alphabetical-lists t)
为使得能正常工作,这个需要在exporter之前设置。
使用orgstruct 发邮件
orgstruct++-mode 在 Gnus 消息缓冲区开启,用以创建结构化邮件消息。
(add-hook 'message-mode-hook 'orgstruct++-mode 'append) (add-hook 'message-mode-hook 'turn-on-auto-fill 'append) (add-hook 'message-mode-hook 'bbdb-define-all-aliases 'append) (add-hook 'message-mode-hook 'orgtbl-mode 'append) (add-hook 'message-mode-hook 'turn-on-flyspell 'append) (add-hook 'message-mode-hook '(lambda () (setq fill-column 72)) 'append)
使用flyspell mode减少拼写错误
flyspell-mode 默认在任何模式都开启,用来检查文档中包含拼写错误。
;; flyspell mode for spell checking everywhere (add-hook 'org-mode-hook 'turn-on-flyspell 'append) ;; Disable keys in org-mode ;; C-c [ ;; C-c ] ;; C-c ; ;; C-c C-x C-q cancelling the clock (we never want this) (add-hook 'org-mode-hook '(lambda () ;; Undefine C-c [ and C-c ] since this breaks my ;; org-agenda files when directories are include It ;; expands the files in the directories individually (org-defkey org-mode-map "C-c[" 'undefined) (org-defkey org-mode-map "C-c]" 'undefined) (org-defkey org-mode-map "C-c;" 'undefined) (org-defkey org-mode-map "C-cC-xC-q" 'undefined)) 'append) (add-hook 'org-mode-hook (lambda () (local-set-key (kbd "C-c M-o") 'bh/mail-subtree)) 'append) (defun bh/mail-subtree () (interactive) (org-mark-subtree) (org-mime-subtree))
维持源码块对齐
我不会在源码块中维持对齐,因为这样看起来不是很好。唯一一个我觉得需要保留对齐是在文件中的TABs需要保留(例如 Makefiles)。我不怎么在org-mode编辑这种文件,所以我默认将对齐关闭。
我修改了默认代码块对齐方式,这样就不会从文本开始对齐。这允许立即编辑源码而不需要执行C-c ' ,因此代码看上去就正确了。
(setq org-src-preserve-indentation nil) (setq org-edit-src-content-indentation 0)
阻止修改不可见文档
当光标在折叠去,下面设置阻止不小心修改隐藏文档。这种情况会发生在当光标在标题体内,然后通过执行 S-TAB 折叠org文件。
我发现不可见编辑(撤销)很难处理,因此现在我禁止编辑不可见文本。 C-c C-r (org-reveal) 将会显示光标,当光标折叠在不可见区域时,这样就可以编辑了。
(setq org-catch-invisible-edits 'error)
使用utf-8作为默认文字编码
我对我所有的org文件使用 utf-8 作为默认编码格式。
(setq org-export-coding-system 'utf-8) (prefer-coding-system 'utf-8) (set-charset-priority 'unicode) (setq default-process-coding-system '(utf-8-unix . utf-8-unix))
使用小时来计时
默认计时时长变成以24小时每日计时。工作中我通常认为一天有6小时来工作(其它时间用在开会以及其他事情上)所以以日计时对我来说没有什么意义。
下列设置修改计时为以小时以及分钟来计时(C-c C-x C-d )
(setq org-time-clocksum-format '(:hours "%d" :require-hours t :minutes ":%02d" :require-minutes t))
创建唯一ID为任务做链接
当设置下面设置后,使用 C-c l, 就会为标题在 PROPERTY 属性抽屉中,创建唯一ID.当有了唯一ID,我即使将任务在文档中移动,链接到该任务的链接依然有效。
(setq org-id-link-to-org-use-id 'create-if-interactive-and-no-custom-id
还没有评论,来说两句吧...