org-capture function is quite useful for some workflows, however, the
standard documentation for it quickly jumps into template writing without
really explaining its use case. The following essay attempts to be a gentle
org-capture. I will assume you are familiar with
both Org and Emacs, but don’t know anything about
org-capture feature is global, meaning that it may be called anywhere in
Emacs– whether you are editing an org file or reading email. Calling it
displays a buffer, allowing you to jot some notes. When dismissed, the notes are
saved in a specific location based on the type of note. Hrm…examples are in
- Wile reading my mail, I remember some items to buy at the store, I start
org-capture(specifying a task) and store a TODO header entitled Shopping with a list in my task file.
- While reading some code, I notice one of my team members clarified the
originally terse README with helpful examples. To remind myself to publicly
thank her at the next Sprint Retrospective, I launch
org-capture(specifying a “Sprint Goodness”), and jot down the note, knowing that at the Sprint Retro, I can retrieve the file containing my Sprint notes.
- While running
eshellon a remote server, I notice our Rakefile has a spelling mistake. Since I should fix that (just not now), I quickly start
org-capture(specifying a “Bug”), and jot the details for a bug fix at the end of the day.
- While analyzing a new code base, I select each interesting function, and
org-captureto copy it (maybe with some thoughts) to n “Project File”. Each code snippet is properly formatted (in a literate programming style) with a link back to the original code file. By the time, I have encountered something questionable, I can export my “Project File” and mail it to collegues with questions.
The list of these destinations, and types of notes, can be a long as you want. Here is a screenshot of Emacs running on my work computer where each type of note (with its destination) is associated with a single key:
Hopefully, this gives you some possibilities for how
org-capture can be used.
Let’s try it. The
org-capture function, being a globally called function
(and not just called within an Org file), should have some shortcut key. The
C-c c (in Spacemacs, this is
SPC a o c), however, you can just
issue a good ol’ fashioned,
t to create a
task, and an org-mode buffer appears with a
Enter a task as if it were part of a greater org-mode file (because it is):
C-c C-c to save, and Emacs mentions that the task was stored in
~/.notes. Let’s open it:
Notice that it is exactly as we typed it, just under a heading of
Well, there you have it, you have just created a nice Task List system.
As you know, Emacs is synonymous for possibilities, so let’s begin to
customize this feature by entering this code in the
(setq org-default-notes-file "~/Dropbox/notes/tasks.org")
This changes the default file location for our tasks from
~/.notes to an
entry in our Dropbox folder. Why there? Install a copy of Orgzly
on your phone, and point it to the
notes folder in your Dropbox account,
and you’ll find your new task shown there.
I can’t describe Orgzly here, and the documentation, while complete, isn’t a tutorial. I would suggest having it create a default example file, and playing around with it. Shouldn’t take long before your computer and phone are singing a song of todos…
Obviously having a single file where you throw all your TODOs will quickly
become unwieldy. I use
org-archive to essentially backup closed TODOs.
Each Org Capture Template consists of at least three parts:
- A key binding– to select a particular template
- A destination– a file, and some section in that file, like a heading, sub-heading, list item, etc.
- A formatting template– allowing you to fill in the details instead of typing
everything. In the example above, this included the sub-header (with the
two asterisks), the
If you wanted to divide tasks into personal and work. We will let the
tasks.org file (defined above) contain our personal stuff, and
work-related tasks will go into
(add-to-list 'org-capture-templates '("w" "Work-related Task" entry (file "~/Dropbox/notes/work.org") "* TODO %?" :empty-lines 1))
org-capture, and we now have our new
w template (but we lost our
q and let’s configure
org-capture to have both:
(add-to-list 'org-capture-templates '("t" "Personal Task" entry (file org-default-notes-file) "* TODO %?" :empty-lines 1))
Use either template to fill both files and then edit them to see the results.
You may find yourself placing bugs, feature requests, stories, and meeting
notes in your
work.org file. At the end of the day, you could deal
with the day’s clutter by moving tasks that could not be trivially completed
into other, dedicated project files. This is why Sacha mentions the
org-refile function in combination with
In this essay, we talked about the workflows associated with
well as how to start creating simple templates. At this point, I hope you
have enough context to dive into the org-template documentation to create a
Next, you might enjoy my following essay on capturing content in Emacs, or see my org-capture templates. If you own a Mac, you might try a capturing interface using a Mac program called Alfred. See the subsection on my Keyboard.io review.
Let me know if you do anything interesting with capturing content into org files.