Org-mode
see Emacs: the software that runs org-mode.
An org-mode manual pass condensing the important shortcuts and custom configurations for quick future reviews.
The core philosophy behind the tool is structuring the files as a hierarchical tree. Further specific features that are explored below make it more complete in terms of its capabilities regarding handling information.
I'll personally use org-mode for my GTD-setup and my note-taking zettelkasten
I refrain from using timestamps in the latter but do so in the former for the org-agenda and calendar functionality.
Literate programming is another powerful concept conveniently realizable via org-mode that is essential for any pedagogical content creator.
I'm covering a pretty minimal subset of all the capabilities of org-mode that I use frequently (exclusive to org-roam)
1. Basics
Some functionality that I use with high frequency
functionality | keystroke | description |
---|---|---|
capture | "C-c c" | quick templated entry into your capture buffer |
store-link | "C-c l" | cache links for future convenient use |
insert-link | "C-c C-l" | insert links from cache with typecasting |
agenda | "C-c a" | agenda view for schedulable todos and events |
my GTD-oriented capture templates are as follows:
(let ((base-gtd-path "<your base GTD file path>")) (setq org-capture-templates '(("n" "Next Action" entry (file+headline base-gtd-path "NA") "* TODO %?\n %i\n %a") ("e" "Event" entry (file+headline base-gtd-path "Events") "* %?\nSCHEDULED: %T\n %i") ("i" "IN" entry (file+headline base-gtd-path "INQ") "* %?\nEntered on %U\n %i\n %a") ("c" "consolidate" entry (file+headline base-gtd-path "Consolidate") "* %?\nEntered on %U\n %i\n %a") ("t" "Tickler" entry (file+headline base-gtd-path "Tickler") "* %?\nDEFER THOUGHT TO: %T\n %i"))))
Given the hierarchical structure of org files, folding, narrowing and widening is a staple way to manage your attention when navigating a file.
Folding a subtree is bound to be toggled by <TAB>
and a global fold/unfold toggle can be triggered by <SHIFT>-<TAB>
.
Narrowing is disabled by default to avoid confusion for beginners and can be activated by placing (put 'narrow-to-region 'disabled nil)
in your init.el
I use evil emacs and to narrow the buffer to a particular region, simply select region via visual mode (or complete subtree with a <SHIFT-v>
when collapsed) and stroke out C-x C-n C-n
. To widen the buffer to the original contents, stroke out C-x C-n C-w
.
Leave out not more than one line between consecutive subtrees so that the tree's neat when collapsed.
2. Agenda
I find C-c a n
to be sufficient for my GTD setup. I also use org-clock to monitor the time dedicated to particular tasks and a simple <TAB>
in the respective agenda line leads you to the exact place of description of that task.
(general-define-key :prefix "C-c" "C-x C-i" #'org-clock-in "C-x C-o" #'org-clock-out "C-x C-g" #'org-clock-goto)
Org-calendar and timing is feature explored in its own subtree.
Controlling other aspects of your GTD setup within the agenda buffer is convenient:
<SHIFT>-<left,right>
: helps reschedule items a day before or after<SHIFT>-<up,down>
: helps change priorities for tasks quickly- hitting
t
(I use evil bindings) over a task toggles itsTODO
status
One can set deadlines and schedules for a task subtree in a buffer convenienly with C-c C-d
and C-c C-s
: this pops up a calendar buffer for a date to be chosen. Inserting inactive timestamps is also possible via C-c C-!
. Once inserted, timestamps and ranges can be manipulated intuitively with <SHIFT>
+ Arrow keys.
Setting recurring events can be done by suffixing the timestamp with +<quantifier><unit of time>
(+1w/d/m
for instance). More complicated frequencies can be captured programatically as one liners : to capture recurrence on weekdays, one would use <%%(memq (calendar-day-of-week date) '(1 2 3 4 5))>