日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Org-mode, 用文本文件管理日常十四

發布時間:2023/12/3 综合教程 35 生活家
生活随笔 收集整理的這篇文章主要介紹了 Org-mode, 用文本文件管理日常十四 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文翻譯自 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, 用文本文件管理日常(十三)

提高生產力工具

清單處理

清單對于那種重復性并包含非常多需要做的事情的任務適用。曾經,當清單任務完成后,我會手動
清除復選框的選擇狀態,以保證后續能繼續執行。但是現在不會這樣麻煩了,因為有 rog-checklist 功能,
當重復的任務標記完成時候,清單中復選框就會自動清除選擇狀態。

在你的.emacs中添加如下腳本來完成上述功能。

(add-to-list 'load-path (expand-file-name "~/git/org-mode/contrib/lisp"))
(require 'org-checklist)

當需要在任務中使用時候,只需要設置 RESET_CHECK_BOXES 為 t .
像下面一樣:

* TODO Invoicing and Archive Tasks [0/7]
DEADLINE: <2009-07-01 Wed +1m -0d>
:PROPERTIES:
:RESET_CHECK_BOXES: t
:END:
- [ ] Do task 1
- [ ] Do task 2
...
- [ ] Do task 7

備份

= 及時備份那些還沒有完成的的任務 =

10年前,我曾經因為沒有很好的備份手段而丟失掉大量數據。那時我就告誡自己 = 我以后再也不想丟失任何數據 = 。到現在為止確實沒有丟失過了:).

我在備份時候很謹慎。org模式怎么來幫助完成備份的?確實沒有花很大力氣,并不是我不想花很多時間來備份–它時刻在發生–這節省我時間,并可以把這些時間花在處理其他更有趣的事情上。

我備份的原則就是方便恢復數據–但是這條卻并不容易實現。也并不需要非常容易/快速從備份中恢復,因為從備份數據將其恢復也并不經常發生?;謴蜁r候節省時間沒什么意義。相反,我希望備份時候能夠快速無痛點,因為我經常做備份。

10年前我就自動化網絡備份了,當然現在依然再用。我所用的所有電腦從網絡驅動獲取每日備份。每個月收集一次并寫入可移動硬盤。

我有個月備份任務,當滿一個月,就會提醒我備份當前數據到外部存儲中。我很開心現在備份執行時間變得越來越少。

自從 git 進入我生活, 多主機備份 git 代碼倉庫就變得更加簡單了。當前只要有修改推送發送遠程倉庫,就會自動備份該倉庫中所有東西。

處理受阻任務

受阻任務是那些包含子任務的任務,并且該任務至少有一個子任務不處于done狀態。
受阻任務在agenda視圖中以灰色來顯示。

可以通過如下腳本,啟用受阻任務功能:

(setq org-enforce-todo-dependencies t)

這個設置會阻礙試圖將包含未在完成狀態子任務的任務,設置為完成狀態。除了重復任務外。這樣做非常好。對于重復任務,我通常會在任務下面添加很多=TODO=狀態子任務,并且這些子任務也不一定要這個周期完成,可以在下個周期完成。

當然,可以通過快捷鍵 C-u C-u C-u C-c C-t 臨時修改任務設置,但我記不住
這組快捷鍵。我在重復任務設置了一個永久屬性:

* TODO New Repeating Task
SCHEDULED: <2009-06-16 Tue +1w>
:PROPERTIES:
:NOBLOCKING: t
:END:
...
** TODO Subtask

這可使得 新的重復任務 即使有子任務沒有完成,也可以正常對父任務設置完成狀態,不會受阻。

通常我會按照一個給定的順序來完成任務。org-mode有個 ORDERED 屬性來對子任務做順序限制。

* TODO Some Task
:PROPERTIES:
:ORDERED: t
:END:
** TODO Step 1
** TODO Step 2
** TODO Step 3

這種情況下,你需要在完成 Step 1 后再去完成 Step 2 。org mode會阻止你去對一個前面還有不在完成狀態的任務,設置完成狀態。

org任務結構以及展示

本節主要介紹我處理org文件時,是怎么設置任務顯示的大量定制化腳本。

控制標題前置符號顯示

對于任務的前置符號(*),org-mode可以定制化其是否顯示。也有可能在其它層級中出現標題,這樣前置符號以及標題就可以在子樹層對齊。

為使得org 顯示前置符號,可以做如下設置

(setq org-hide-leading-stars nil)

我當前使用 org-indent mode來隱藏前置符號(*).

org-indent模式

我最近開始使用org-indent模式。我很喜歡這個模式。它會在org文件中移除這些對齊符號,但是當編輯緩沖區時,這些對齊就會顯示。

org-indent模式當org-odd-level-only 值為true時顯示,但是顯示效果比我之前的設置更加整潔。因此我更喜歡它。

我的org-indent模式在emacs啟動時自動生效:

(setq org-startup-indented t)

處理空行

空行很邪惡 . 他們自動在標題行之間插入,但是當標題行折疊后我并不想看到他們。
當我用 TAB (循環)折疊標題時,不希望在標題間看到空行。

下列設置保證隱藏空行,這樣在標題折疊后,就會更加精煉整潔。

(setq org-cycle-separator-lines 0)

我發現在列表以及大綱顯示空行也有點令人討厭。為了獲取list列表后內容,你需要包含空行–合適縮放內容。我大部分list沒有內容,所有我也不希望list后面有空行。

下面設置,防止在創建標題時插入空行,但是允許list兼容空行。

(setq org-blank-before-new-entry (quote ((heading)
(plain-list-item . auto))))

快速添加不含當前任務內容的任務。

為在項目文件中創建一個新標題非常方便,可以通過快捷鍵 C-RET , C-S-RET,M-RET , 以及 M-S-RET . 這將插入一個新標題并包含 TODO 關鍵字。

通過如下設置:

(setq org-insert-heading-respect-content nil)

org在光標行通過 M- 插入大綱,通過 C- 插入內容。內容設置對于 C- 版本臨時開啟的,會添加新標題. 所以可以通過快捷鍵 C-S-RET 在當前條目上執行后,就會在后面添加一個新標題。也可以通過 M-S-RET 將一個標題分成兩個。

備忘放在任務前部

我通過 C-c C-z 創建一個備忘任務(或者在agenda中執行 z )。有時候修改任務狀態也會彈出要求輸入備忘(e.g. 移動到 WAITING 狀態,就會彈出備忘,我會輸入進入等待狀態的原因).這些備忘保存在任務最前端,因此當取消折疊任務時,備忘就會顯示最前端。

(setq org-reverse-note-order nil)

查找并顯示結果

當需要在你的org文件中查詢數據,org-mode的查找能力就起作用了。 C-c / / 會做正則表達式查找當前文件,并在org文件折疊視圖中顯示匹配結果。

當使用如下設置,我的org模式就可以顯示匹配項的任務,以及鄰近的任務(并不是所有相鄰任務):

(setq org-show-following-heading t)
(setq org-show-hierarchy-above t)
(setq org-show-siblings (quote ((default))))

這使得查找結果顯示更加精簡,也能夠避免由于使用 C-k 從org文件中剪切太多的數據。剪切折疊數據(包括…)非常危險,因為它也將那些你看不到的文本內容(包括相鄰的子任務)也會
剪切掉。正因為這樣,我總是在顯示查找結果時,也會顯示大綱。

編輯以及特殊按鍵處理

在處理標題時,org-mode快捷鍵C-a, C-e以及C-k快捷鍵都能正常工作。我也會用一些設置來處理粘貼(yanks)子任務以及根據任務調整子樹層級。通過查看幫助文檔(C-h v org-yank-adjust- subtrees), 可以查看詳細細節以及如何使用。

我使用 org-special-ctrl-a/e ,能夠快速移動光標到標題開始結束位置。我使用 M-m 或者 C-a C-a來移動光標到行開始處。因此,快捷鍵在org mode依然很好工作,并且通過快捷鍵 C-a ,我能夠將光標定位到行開始處。

附件

附件可以很方便在你的項目相關org-mode文件之外,添加關聯的大量數據。在附件功能出來之前我會在我的org文件中包含非常多的SQL代碼段,來保存項目數據庫的修改。這導致我的org文件非常大。

(setq org-id-method (quote uuidgen))

假如說,你想把 x.sql 添加到當前任務中。在 /tmp/x.sql 中創建文件保存。

通過快捷鍵 C-c C-a a ,添加附件,并輸入文件名: x.sql.這將為任務生成一個唯一ID,然后把文件拷貝到附件目錄。

* Attachments :ATTACH:
:PROPERTIES:
:Attachments: x.sql
:ID: f1d38e9a-ff70-4cc4-ab50-e8b58b2aaa7b
:END:

附件被保存在 data/f1/d38e9a-ff70-4cc4-ab50-e8b58b2aaa7b/.它的具體位置對
我來說并不重要–只要它保存下來了并且能夠方便取得就可以了。org-mode拷貝原來文件/tmp/x.sql 到備份目錄。

對于有附件的任務,都會添加一個 ATTACH 標簽,因此你可以很方便通過tag標簽找到這些任務。

通過 C-c C-a o 打開一個帶有附件的任務。這個命令會彈出輸入要打開文件的提示,按 TAB就可以自動補全。

ID 對于每個任務都會生成一個唯一的。

當然也可以自己定義附件存儲位置,但是我并不需要這么做 – 存在默認位置就行,只要能找到就可以了。

我將我的org文件所有附件,都存儲在子目錄 data 中。這樣就可以通過 git 來管理。當有附件添加,我就可以直接push到遠程倉庫中。

截止日以及agenda可視化

截止日在生活必不可少。默認我會在agenda視圖中顯示30天內的任務。

下面設置可以完成這個目的:

(setq org-deadline-warning-days 30)

這樣我就有足夠時間在截止日前完成這個任務。

將表格導出成CSV格式

我有時會為任務添加org-mode表格,用來記錄一些項目相關數據。我的客戶也喜歡這種表格。當然在org mode中,很方便將表格導出成HTML格式,但是對于希望編輯這種表格的人來說,就不是特別方便。為解決這個問題,我會將表格導出成逗號分割(CSV)格式然后發給客戶(或者通過表格讀取然后發送給可以)

org-mode可以將表格導出成TAB或者逗號分隔的格式。我設置導出默認的CSV格式腳本如下:

(setq org-table-export-default-format "orgtbl-to-csv")

我默認只導出成CSV格式,所有當導出時我只敲擊RETURN來完成導出工作。

為導出下面表格,我將光標移動到表格里邊然后執行 M-x org-table-export
,然后會提示輸入名字以及格式,默認是CSV格式。

One Two Three

1 1 2

3 6 5

fred kpe mary

234.5 432.12 324.3

這將導出下列格式的數據文件

One,Two,Three
1,1,2
3,6,5
fred,kpe,mary
234.5,432.12,324.3

最小化Emacs Frames

我的org文件中包含各種各樣的email鏈接,網頁以及其他文件鏈接。下面設置控制
org-mode處理鏈接方法。

(setq org-link-frame-setup (quote ((vm . vm-visit-folder)
(gnus . org-gnus-no-new-news)
(file . find-file))))
; Use the current window for C-c ' source editing
(setq org-src-window-setup 'current-window)

我喜歡所有鏈接都在一個窗口打開,這樣我就不需要在我的窗口中管理多個frame了。通常我全屏工作,鏈接都是在這個窗口打開,這樣工作方式很適合我。

我如果需要處理多個文件,我會手動通過快捷鍵 C-x 5 2 創建第二個frame或者用快捷鍵 C-x 4 2 或者 C-x 4 3 分割窗口。當需要訪問文件時,會將當前窗口內容替換成新內容。

日志相關的

我大部分日志是通過全局 org-todo-keywords 來控制。

我的日志設置如下:

(setq org-log-done (quote time))
(setq org-log-into-drawer t)
(setq org-log-state-notes-insert-after-drawers nil)

我的 org-todo-keywords 設置如下:

(setq org-todo-keywords
(quote ((sequence "TODO(t)" "NEXT(n)" "|" "DONE(d)")
(sequence "WAITING(w@/!)" "HOLD(h@/!)" "|" "CANCELLED(c@/!)" "PHONE" "MEETING"))))

當任務狀態變化發生時, 日志就會被記錄下來:

  • 達到 DONE 狀態或者從 DONE 狀態退出
  • 到 WAITING 狀態(包含備忘)或者退出 WAITING 狀態= 到 HOLD 狀態
  • 到 CANCELLED 狀態(包含備忘)或者退出 CANCELLED 狀態。

我將計時信息以及狀態信息記錄在任務 LOGBOOK 抽屜中,以保持我的任務整潔。如果一個任務在等待狀態,那么在LOGBOOK里,就會顯示等待原因,LOGBOOK也會處于展開狀態,用來提示信息。在agenda視圖中,只要對任務單擊 SPC 就可以取得LOGBOOK信息。

限制任務計時

org-mode新引入一個非常棒的功能,就是一個任務評估時間到的時候會發送通知。我用這個功能來限制每天某些任務執行時間。

例如,這個文檔我已經花了將近2個月時間。我想盡快把它完成但是我沒法只做這件事,這樣其他事情就沒法做了。我想每天做點,比如限制每天只花1個小時在org-mode文檔編寫上。

因此我建了下面一個任務:

* NEXT Document my use of org-mode
:LOGBOOK:...
:PROPERTIES:
:CLOCK_MODELINE_TOTAL: today
:Effort: 1:00
:END:

這個任務有一個小時評估時間,當我開始做這個任務時候,mode-line顯示如下

--:** org-mode.org 91% (2348,73) Git:master (Org Fly yas Font)-----[0:35/1:00 (Document my use of org-mode)]-------

我今天在這個項目中已經花了35分鐘了。

我會設置一個報警聲,當評估時間到了的時候就會想起星際迷航聲音(是的,我是星際迷)。

(setq org-clock-sound "/usr/local/lib/tngchime.wav")

當一個小時評估時間到了,報警聲就會想起,并且會彈出消息提示這個任務應該完成了。如果我切換到其他任務,又切換回來,每次切換回來報警聲都會想起來。這讓我不得不做其他工作

你也可以對重復任務做相應設置。默認情況下最后一次時間將會被記錄下來。對于重復任務mode-line時間顯示的是最后一次計時。這方便幾天后來評估自己花的時間。

習慣跟蹤

John Wiegley最近在org-mode中添加了對習慣跟蹤的功能支持。

我有很多習慣(有些是不好的習慣),但是我還是希望來改進并建立一些好的習慣。這就是習慣跟蹤做的事。它通過圖形形式顯示在agenda視圖上,顯示出你的習慣做的怎么樣。

我有如下習慣:

  • 手洗碟子
  • 30分鐘快步走
  • 打掃家庭衛生

等等。大部分習慣需要規律性完成,所以有時候需要給點壓力才能這么做。為跟蹤習慣是否正常完成,需要記錄狀態切換日志。

習慣任務與一般的任務很像,除了它設置了特別的 屬性 。該屬性被設置為習慣,有個計劃 時間項,就像下面這樣:

* TODO Update Org Mode Doc
SCHEDULED: <2009-11-21 Sat .+7d/30d>
[2009-11-14 Sat 11:45]
:PROPERTIES:
:STYLE: habit
:END:

這樣習慣任務就可以和一般任務有所區別,agenda視圖就會把它當做一個習慣任務來顯示。當習慣完成后,并被標記完成后,在agenda視圖中就根據計劃項,顯示下次任務發生時間。(.+7d).SCHEDULED 項特殊地方是,我希望這個任務每天都被執行,或者每兩天要執行。如果3天沒有標記習慣完成,那么在agenda視圖中它就會顯示紅色,表示我很久沒有執行這個習慣了。

如果習慣被忽略了,那么也不是什么世界末日的大事。你可以通過 K 鍵來在agenda顯示或隱藏習慣任務。

如下是我的習慣設置:

; Enable habit tracking (and a bunch of other modules)
(setq org-modules (quote (org-bbdb
org-bibtex
org-crypt
org-gnus
org-id
org-info
org-jsinfo
org-habit
org-inlinetask
org-irc
org-mew
org-mhe
org-protocol
org-rmail
org-vm
org-wl
org-w3m)))
; position the habit graph on the agenda to the right of the default
(setq org-habit-graph-column 50)

每日,我會通過 K 在agenda中關閉習慣任務顯示。當關閉后,這個設置就會永久保持了,當我的emacs后臺運行幾天后,習慣任務也不會自動顯示在agenda視圖中。為保證我每天早上都能看到習慣執行情況,我做了如下設置,這樣每天早上,習慣任務就能顯示在agenda視圖中。

(run-at-time "06:00" 86400 '(lambda () (setq org-habit-show-habits t)))

對于習慣只記錄完成狀態修改

我通常將習慣放在第一層任務 * Habits 中,并且僅當任務完成時候才會記錄屬性。這樣我就可以在取消一個習慣時候不會記錄一個時間戳,從而讓這些信息填滿習慣任務中.當要取消一個習慣,只要從agenda中移除。如果習慣沒有執行,那么沒法重做(例如早上6點起床),對于沒有遵循的習慣任務,就不能標記成完成。我就會取消每日重復的習慣。

我的習慣任務就像下面一樣-我習慣為每個org文件都添加習慣標題。

* Habits
:PROPERTIES:
:LOGGING: DONE(!)
:ARCHIVE: %s_archive::* Habits
:END:

自動復原模式

我使用git在我的筆記本以及我的工作站之間同步org-mode文件。常規執行流程是保存當前修改,推送到repo中,在其他系統中獲取,然后我需要對我的所有org-mode文件執行revert buffer操作,這樣才能夠獲在buffer中顯示更新的文件內容。

曾經我使用 org-revert-all-org-buffers 但是自從我發現 global-auto-revert-mode之后,我就不再使用原來方法了。使用新的方法,只要緩沖區內容和硬盤中文件內容不一致,緩沖區就會自動revert buffer。

這個模式對于我這種跨系統使用org-mode文件非常實用。

(global-auto-revert-mode t)

總結

以上是生活随笔為你收集整理的Org-mode, 用文本文件管理日常十四的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。