Doing - All Commands
doing: A CLI for a What Was I Doing system
Doing uses a TaskPaper-like formatting to keep a plain text
Table of Contents
- Global Options
- Commands
- again (or resume)
- archive (or move) SECTION_OR_TAG
- autotag
- cancel COUNT
- changes (or changelog)
- colors
- commands
- Commands
- completion
- Commands
- config
- Commands
- done (or did) [ENTRY]
- finish [COUNT]
- grep (or search) SEARCH_PATTERN
- help command
- import PATH
- last
- later ENTRY
- mark (or flag)
- meanwhile [ENTRY]
- note [NOTE_TEXT]
- now (or next) ENTRY
- on DATE_STRING
- open
- plugins
- recent COUNT
- redo COUNT
- reset (or begin) [DATE_STRING]
- rotate
- sections
- Commands
- select
- show [SECTION|@TAGS]
- since DATE_STRING
- tag TAG…
- tag_dir TAG [TAG..]
- tags [MAX_COUNT]
- template TYPE
- test
- today
- todo ENTRY
- undo COUNT
- update
- view VIEW_NAME
- views [NAME(S)]
- wiki
- yesterday
record of what you’ve been doing, complete with tag-based time tracking. The
command line tool allows you to add entries, annotate with tags and notes, and
view your entries with myriad options, with a focus on a “natural” language syntax.
v2.1.86
Global Options
--config_file arg
- Use a specific configuration file. Deprecated, set $DOING_CONFIG instead
- Default Value:
~/.config/doing/config.yml
-f|--doing_file arg
- Specify a different doing_file
- Default Value:
None
--[no-]color
- Colored output
--debug
- Verbose output
--default
- Answer yes/no menus with default option
--help
- Show this message
--no
- Answer all yes/no menus with no
--[no-]notes
- Output notes if included in the template
-p|--[no-]pager
- Use a pager when output is longer than screen
-q|--quiet
- Silence info messages
--stdout
- Send results report to STDOUT instead of STDERR
--version
- Display the program version
-x|--noauto
- Exclude auto tags and default tags
--yes
- Answer all yes/no menus with yes
Commands
again (or resume)
Repeat last entry as new entry
This command is designed to allow multiple time intervals to be created
for an entry by duplicating it with a new start (and end, eventually) time
Options
-b|--back|--started|--since DATE_STRING
- Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]
- Default Value:
None
--bool BOOLEAN
- Boolean used to combine multiple tags (AND|OR|NOT). Use PATTERN to parse + and - as booleans
- Default Value:
pattern
- Must Match:
(?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
--case TYPE
- Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
- Default Value:
smart
- Must Match:
(?i-mx:^[cis].*?$)
--in SECTION_NAME
- Add new entry to section (default: same section as repeated entry)
- Default Value:
None
-n|--note TEXT
- Include a note
- Default Value:
None
-s|--section NAME
- Get last entry from a specific section
- Default Value:
All
--search QUERY
- Filter entries using a search query, surround with slashes for regex (e.g. “/query.*/”), start with single quote for exact match (“‘query”)
-
Default Value:
None
--tag TAG
- Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
- Default Value:
None
--val QUERY
- Perform a tag value query (“@done > two hours ago” or “@progress < 50”). May be used multiple times, combined with –bool
-
Default Value:
None
- Must Match:
(?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
-X|--noauto
- Exclude auto tags and default tags
--ask
- Prompt for note via multi-line input
-e|--editor
- Edit entry with vim
-i|--interactive
- Select item to resume from a menu of matching entries
--not
- Repeat items that don’t match search/tag filters
-x|--exact
- Force exact search string matching (case sensitive)
archive (or move) SECTION_OR_TAG
Move entries between sections
Argument can be a section name to move all entries from a section,
or start with an “@” to move entries matching a tag.
Default with no argument moves items from the “Currently” section to Archive.
Options
--after DATE_STRING
- Archive entries newer than date (natural language).
- Default Value:
None
--before DATE_STRING
- Archive entries older than date (natural language).
- Default Value:
None
--bool BOOLEAN
- Boolean used to combine multiple tags (AND|OR|NOT). Use PATTERN to parse + and - as booleans
- Default Value:
pattern
- Must Match:
(?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
--case TYPE
- Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
- Default Value:
smart
- Must Match:
(?i-mx:^[cis].*?$)
--from DATE_OR_RANGE
- Date range (natural language) to archive:
doing archive --from "1/1/21 to 12/31/21"
. - Default Value:
None
-k|--keep X
- How many items to keep (ignored if archiving by tag or search)
- Default Value:
None
- Must Match:
(?-mix:^\d+$)
--search QUERY
- Filter entries using a search query, surround with slashes for regex (e.g. “/query.*/”), start with single quote for exact match (“‘query”)
-
Default Value:
None
-t|--to SECTION_NAME
- Move entries to
- Default Value:
Archive
--tag TAG
- Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
- Default Value:
None
--val QUERY
- Perform a tag value query (“@done > two hours ago” or “@progress < 50”). May be used multiple times, combined with –bool
-
Default Value:
None
- Must Match:
(?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
--[no-]label
- Label moved items with @from(SECTION_NAME)
--not
- Archive items that don’t match search/tag filters
-x|--exact
- Force exact search string matching (case sensitive)
autotag
Autotag last entry or filtered entries
Options
--bool BOOLEAN
- Boolean (AND|OR|NOT) with which to combine multiple tag filters
- Default Value:
AND
- Must Match:
(?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
-c|--count COUNT
- How many recent entries to autotag (0 for all)
- Default Value:
1
- Must Match:
(?-mix:^\d+$)
-s|--section SECTION_NAME
- Section
- Default Value:
All
--search QUERY
- Autotag entries matching search filter, surround with slashes for regex (e.g. “/query.*/”), start with single quote for exact match (“‘query”)
- Default Value:
None
--tag TAG
- Autotag the last X entries containing TAG. Separate multiple tags with comma (–tag=tag1,tag2), combine with –bool
- Default Value:
None
--force
- Don’t ask permission to autotag all entries when count is 0
-i|--interactive
- Select item(s) to tag from a menu of matching entries
-u|--unfinished
- Autotag last entry (or entries) not marked @done
cancel COUNT
End last X entries with no time tracked
Adds @done tag without datestamp so no elapsed time is recorded.
Alias for `doing finish --no-date`
Options
--bool BOOLEAN
- Boolean used to combine multiple tags (AND|OR|NOT). Use PATTERN to parse + and - as booleans
- Default Value:
pattern
- Must Match:
(?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
--case TYPE
- Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
- Default Value:
smart
- Must Match:
(?i-mx:^[cis].*?$)
-s|--section NAME
- Section
- Default Value:
None
--search QUERY
- Filter entries using a search query, surround with slashes for regex (e.g. “/query.*/”), start with single quote for exact match (“‘query”)
-
Default Value:
None
--tag TAG
- Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
- Default Value:
None
--val QUERY
- Perform a tag value query (“@done > two hours ago” or “@progress < 50”). May be used multiple times, combined with –bool
-
Default Value:
None
- Must Match:
(?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
-a|--archive
- Archive entries
-i|--interactive
- Select item(s) to cancel from a menu of matching entries
--not
- Cancel items that don’t match search/tag filters
-u|--unfinished
- Cancel last entry (or entries) not already marked @done
-x|--exact
- Force exact search string matching (case sensitive)
changes (or changelog)
List recent changes in Doing
Display a formatted list of changes in recent versions.
Without flags, displays only the most recent version.
Use --lookup or --all for history.
Options
-l|--lookup VERSION
- Look up a specific version. Specify versions as “MAJ.MIN.PATCH”, MIN
and PATCH are optional. Use > or < to see all changes since or prior
to a version. Wildcards (*?) accepted unless using < or >.
-
Default Value:
None
- Must Match:
(?-mix:^(?:(?:(?:[<>=]+|p(?:rior)|b(?:efore)|o(?:lder)|s(?:ince)|a(?:fter)|n(?:ewer))? *[0-9.*?]{1,10} *)+|(?:[\d.]+ *(?:-|to)+ *[0-9.]{1,10}))$)
--only TYPES
- Only show changes of type(s), comma-separated
- Default Value:
changed,new,improved,fixed
-s|--search arg
- Show changelogs matching search terms (uses pattern-based searching).
Add slashes to search with regular expressions, e.g.
--search "/output.*flag/"
-
Default Value:
None
--sort ORDER
- Sort order (asc/desc)
- Default Value:
desc
- Must Match:
(?i-mx:^(?:a(?:sc)?|d(?:esc)?)$)
-C|--changes
- Only output changes, no version numbers, headers, or dates
-a|--all
- Display all versions
-i|--interactive
- Open changelog in interactive viewer
-m|--md|--markdown
- Output raw Markdown
-p|--[no-]prefix
- Include (CHANGE|NEW|IMPROVED|FIXED) prefix on each line
--render
- Force rendered output
colors
List available color variables for configuration templates and views
commands
Enable and disable Doing commands
Commands
add (or enable) [COMMAND [COMMAND…]]
Enable Doing commands
Run without arguments to select commands from a list.
ls (or list) [QUERY]…
List enabled commands
Options
-s|--style QUERY
- List style (column, tab, comma, *space)
- Default Value:
None
- Must Match:
(?-mix:^[cts].*)
-d|--[no-]disabled
- List disabled commands
remove (or disable) [COMMAND [COMMAND…]]
Disable Doing commands
Default Command:
add
completion
Generate shell completion scripts for doing
Generates the necessary scripts to add command line completion to various shells,
so typing ‘doing’ and hitting tab will offer completions of subcommands and their options.
Options
-t|--type arg
- Deprecated, specify shell as argument to subcommand
- Default Value:
None
- Must Match:
(?i-mx:^(?:[bzf](?:[ai]?sh)?|fig|all)$)
Commands
generate [zsh|bash|fish|all]
Generate completion scripts, including custom plugins and command options
Argument specifies which shell to generate for: zsh, bash, fish, all
Options
-f|--file PATH
- Alternative file to write output to
- Default Value:
None
Argument specifies which shell to generate for: zsh, bash, fish, all --stdout
- Output result to STDOUT only
install [zsh|bash|fish]
Install default completion scripts
Argument specifies which shell to install for: zsh, bash, fish, or all
Default Command:
generate
config
Edit the configuration file or output a value from it
Run without arguments, doing config
opens your config.yml
in an editor.
If local configurations are found in the path between the current directory
and the root (/), a menu will allow you to select which to open in the editor.
It will use the editor defined in config_editor_app
, or one specified with --editor
.
Use doing config get
to output the configuration to the terminal, and
provide a dot-separated key path to get a specific value. Shows the current value
including keys/overrides set by local configs.
Options
-d|--[no-]dump
- DEPRECATED
-u|--[no-]update
- DEPRECATED
Commands
edit (or open)
Open config file in editor
Options
-a|--app APP_NAME
- Application to use
- Default Value:
None
-b|--bundle_id BUNDLE_ID
- Application bundle id to use
- Default Value:
None
-e|--editor EDITOR
- Editor to use
- Default Value:
None
-x|--default
- Use the config editor defined in ~/.config/doing/config.yml (Sublime Text)
get (or dump)
Output a key’s value
Options
-o|--output FORMAT
- Format for output (json|yaml|raw)
- Default Value:
yaml
- Must Match:
(?-mix:^(?:y(?:aml)?|j(?:son)?|r(?:aw)?)$)
list
List configuration paths, including .doingrc files in the current and parent directories
Config files are listed in order of precedence (if there are multiple configs detected). Values defined in the top item in the list will override values in configutations below it.
set
Set a key’s value in the config file
Options
--local
- Force update to .doingrc in the current directory
-r|--remove
- Delete specified key
undo
Undo the last change to a config file
update (or refresh)
Update default config file, adding any missing keys
Default Command:
edit
done (or did) [ENTRY]
Add a completed item with @done(date). No argument finishes last entry
Use this command to add an entry after you’ve already finished it. It will be immediately marked as @done.
You can modify the start and end times of the entry using the –back, –took, and –at flags, making it an easy
way to add entries in post and maintain accurate (albeit manual) time tracking.
Options
--at|--finished DATE_STRING
- Set finish date to specific date/time (natural langauge parsed, e.g. –at=1:30pm). Used with –took, backdates start date
-
Default Value:
None
-b|--back|--started|--since DATE_STRING
- Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]
- Default Value:
None
--from TIME_RANGE
- Start and end times as a date/time range
doing done --from "1am to 8am"
. Overrides other date flags. -
Default Value:
None
- Must Match:
(?i-mx:^\S+.*? +(?:to|through|thru|(?:un)?til|-+) +\S+.*?$)
-n|--note TEXT
- Include a note
- Default Value:
None
-s|--section NAME
- Section
- Default Value:
None
-t|--took|--for INTERVAL
- Set completion date to start date plus interval (XX[mhd] or HH:MM).
If used without the –back option, the start date will be moved back to allow
the completion date to be the current time.
-
Default Value:
None
-X|--noauto
- Exclude auto tags and default tags
-a|--archive
- Immediately archive the entry
--ask
- Prompt for note via multi-line input
--[no-]date
- Include date
-e|--editor
- Edit entry with vim
-r|--remove
- Remove @done tag
-u|--unfinished
- Finish last entry not already marked @done
finish [COUNT]
Mark last X entries as @done
Marks the last X entries with a @done tag and current date. Does not alter already completed entries.
Options
--at|--finished DATE_STRING
- Set finish date to specific date/time (natural langauge parsed, e.g. –at=1:30pm). Used with –took, backdates start date
-
Default Value:
None
-b|--back|--started DATE_STRING
- Backdate completed date to date string [4pm|20m|2h|yesterday noon]
- Default Value:
None
--bool BOOLEAN
- Boolean used to combine multiple tags (AND|OR|NOT). Use PATTERN to parse + and - as booleans
- Default Value:
pattern
- Must Match:
(?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
--case TYPE
- Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
- Default Value:
smart
- Must Match:
(?i-mx:^[cis].*?$)
--from TIME_RANGE
- Start and end times as a date/time range
doing done --from "1am to 8am"
. Overrides other date flags. -
Default Value:
None
- Must Match:
(?i-mx:^\S+.*? +(?:to|through|thru|(?:un)?til|-+) +\S+.*?$)
-s|--section NAME
- Section
- Default Value:
None
--search QUERY
- Filter entries using a search query, surround with slashes for regex (e.g. “/query.*/”), start with single quote for exact match (“‘query”)
-
Default Value:
None
-t|--took|--for INTERVAL
- Set completion date to start date plus interval (XX[mhd] or HH:MM).
If used without the –back option, the start date will be moved back to allow
the completion date to be the current time.
-
Default Value:
None
--tag TAG
- Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
- Default Value:
None
--val QUERY
- Perform a tag value query (“@done > two hours ago” or “@progress < 50”). May be used multiple times, combined with –bool
-
Default Value:
None
- Must Match:
(?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
-a|--archive
- Archive entries
--auto
- Auto-generate finish dates from next entry’s start time.
Automatically generate completion dates 1 minute before next item (in any section) began.
--auto overrides the --date and --back parameters.
--[no-]date
- Include date
-i|--interactive
- Select item(s) to finish from a menu of matching entries
--not
- Finish items that don’t match search/tag filters
-r|--remove
- Remove @done tag
-u|--unfinished
- Finish last entry (or entries) not already marked @done
--update
- Overwrite existing @done tag with new date
-x|--exact
- Force exact search string matching (case sensitive)
grep (or search) SEARCH_PATTERN
Search for entries
Search all sections (or limit to a specific sections) for entries matching text or regular expression. Normal strings are fuzzy matched.
To search with regular expressions, single quote the string and surround with slashes: doing search '/m.*?x/'
Options
--after DATE_STRING
- Search entries newer than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
-
Default Value:
None
--before DATE_STRING
- Search entries older than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
-
Default Value:
None
--bool BOOLEAN
- Boolean used to combine multiple tags (AND|OR|NOT). Use PATTERN to parse + and - as booleans
- Default Value:
pattern
- Must Match:
(?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
--case TYPE
- Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
- Default Value:
smart
- Must Match:
(?i-mx:^[cis].*?$)
--config_template TEMPLATE_KEY
- Output using a template from configuration
- Default Value:
default
--from DATE_OR_RANGE
- Date range (natural language) to search, or a single day to filter on.
To specify a range, use “to”:
doing grep --from "monday 8am to friday 5pm"
.If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered by time of day.
-
Default Value:
None
-o|--output FORMAT
- Output to export format (byday|csv|dayone|dayone-days|dayone-entries|doing|html|json|markdown|say|taskpaper|template|timeline|wiki)
- Default Value:
None
-s|--section NAME
- Section
- Default Value:
All
--save VIEW_NAME
- Save all current command line options as a new view
- Default Value:
None
--tag TAG
- Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
- Default Value:
None
--tag_order DIRECTION
- Tag sort direction (asc|desc)
- Default Value:
asc
- Must Match:
(?i-mx:^(?:a(?:sc)?|d(?:esc)?)$)
--tag_sort KEY
- Sort tags by (name|time)
- Default Value:
name
- Must Match:
(?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
--template TEMPLATE_STRING
- Override output format with a template string containing %placeholders
- Default Value:
None
--title TITLE
- Title string to be used for output formats that require it
- Default Value:
None
--val QUERY
- Perform a tag value query (“@done > two hours ago” or “@progress < 50”). May be used multiple times, combined with –bool
-
Default Value:
None
- Must Match:
(?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
-d|--delete
- Delete matching entries
--[no-]duration
- Show elapsed time on entries without @done tag
-e|--editor
- Edit matching entries with vim
-h|--[no-]hilite
- Highlight search matches in output. Only affects command line output
-i|--interactive
- Display an interactive menu of results to perform further operations
--not
- Search items that don’t match search/tag filters
--only_timed
- Only show items with recorded time intervals
-t|--[no-]times
- Show time intervals on @done tasks
--totals
- Show time totals at the end of output
-x|--exact
- Force exact string matching (case sensitive)
help command
Shows a list of commands or help for one command
Gets help for the application or its commands. Can also list the commands in a way helpful to creating a bash-style completion function
Options
-c
- List commands one per line, to assist with shell completion
import PATH
Import entries from an external source
Imports entries from other sources. Available plugins: calendar, doing, json, timing
Options
--after DATE_STRING
- Import entries newer than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
-
Default Value:
None
--before DATE_STRING
- Import entries older than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
-
Default Value:
None
--case TYPE
- Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
- Default Value:
smart
- Must Match:
(?i-mx:^[cis].*?$)
--from DATE_OR_RANGE
- Date range (natural language) to import, or a single day to filter on.
To specify a range, use “to”:
doing import --from "monday 8am to friday 5pm"
.If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered by time of day.
-
Default Value:
None
--prefix PREFIX
- Prefix entries with
- Default Value:
None
-s|--section NAME
- Target section
- Default Value:
None
--search QUERY
- Filter entries using a search query, surround with slashes for regex (e.g. “/query.*/”), start with single quote for exact match (“‘query”)
-
Default Value:
None
-t|--tag TAGS
- Tag all imported entries
- Default Value:
None
--type TYPE
- Import type (calendar|doing|json|timing)
- Default Value:
doing
--[no-]autotag
- Autotag entries
--not
- Import items that don’t match search/tag/date filters
--only_timed
- Only import items with recorded time intervals
--[no-]overlap
- Allow entries that overlap existing times
-x|--exact
- Force exact search string matching (case sensitive)
last
Show the last entry, optionally edit
Shows the last entry. Using –search and –tag filters, you can view/edit the last entry matching a filter,
allowing doing last
to target historical entries.
Options
--bool BOOLEAN
- Boolean used to combine multiple tags (AND|OR|NOT). Use PATTERN to parse + and - as booleans
- Default Value:
pattern
- Must Match:
(?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
--case TYPE
- Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
- Default Value:
smart
- Must Match:
(?i-mx:^[cis].*?$)
--config_template TEMPLATE_KEY
- Output using a template from configuration
- Default Value:
last
-o|--output FORMAT
- Output to export format (byday|csv|dayone|dayone-days|dayone-entries|doing|html|json|markdown|say|taskpaper|template|timeline|wiki)
- Default Value:
None
-s|--section NAME
- Specify a section
- Default Value:
All
--save VIEW_NAME
- Save all current command line options as a new view
- Default Value:
None
--search QUERY
- Filter entries using a search query, surround with slashes for regex (e.g. “/query.*/”), start with single quote for exact match (“‘query”)
-
Default Value:
None
--tag TAG
- Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
- Default Value:
None
--template TEMPLATE_STRING
- Override output format with a template string containing %placeholders
- Default Value:
None
--title TITLE
- Title string to be used for output formats that require it
- Default Value:
None
--val QUERY
- Perform a tag value query (“@done > two hours ago” or “@progress < 50”). May be used multiple times, combined with –bool
-
Default Value:
None
- Must Match:
(?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
-d|--delete
- Delete the last entry
--[no-]duration
- Show elapsed time if entry is not tagged @done
-e|--editor
- Edit entry with vim
-h|--[no-]hilite
- Highlight search matches in output. Only affects command line output
--not
- Show items that don’t match search/tag filters
-x|--exact
- Force exact search string matching (case sensitive)
later ENTRY
Add an item to the Later section
Options
-b|--back|--started DATE_STRING
- Backdate start time to date string [4pm|20m|2h|yesterday noon]
- Default Value:
None
-n|--note TEXT
- Note
- Default Value:
None
--ask
- Prompt for note via multi-line input
-e|--editor
- Edit entry with vim
mark (or flag)
Mark last entry as flagged
Options
--bool BOOLEAN
- Boolean used to combine multiple tags (AND|OR|NOT). Use PATTERN to parse + and - as booleans
- Default Value:
pattern
- Must Match:
(?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
-c|--count COUNT
- How many recent entries to tag (0 for all)
- Default Value:
1
- Must Match:
(?-mix:^\d+$)
--case TYPE
- Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
- Default Value:
smart
- Must Match:
(?i-mx:^[cis].*?$)
-s|--section SECTION_NAME
- Section
- Default Value:
All
--search QUERY
- Filter entries using a search query, surround with slashes for regex (e.g. “/query.*/”), start with single quote for exact match (“‘query”)
-
Default Value:
None
--tag TAG
- Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
- Default Value:
None
--val QUERY
- Perform a tag value query (“@done > two hours ago” or “@progress < 50”). May be used multiple times, combined with –bool
-
Default Value:
None
- Must Match:
(?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
-d|--date
- Include current date/time with tag
--force
- Don’t ask permission to flag all entries when count is 0
-i|--interactive
- Select item(s) to flag from a menu of matching entries
--not
- Flag items that don’t match search/tag filters
-r|--remove
- Remove flag
-u|--unfinished
- Flag last entry (or entries) not marked @done
-x|--exact
- Force exact search string matching (case sensitive)
meanwhile [ENTRY]
Finish any running @meanwhile tasks and optionally create a new one
The @meanwhile tag allows you to have long-running entries that encompass smaller entries.
This command makes it easy to start and stop these overarching entries. Just run `doing meanwhile Starting work on this
big project to start a @meanwhile entry, add other entries as you work on the project, then use
doing meanwhile` by
itself to mark the entry as @done.
Options
-b|--back|--started|--since DATE_STRING
- Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]
- Default Value:
None
-n|--note TEXT
- Include a note
- Default Value:
None
-s|--section NAME
- Section
- Default Value:
None
-X|--noauto
- Exclude auto tags and default tags
-a|--archive
- Archive previous @meanwhile entry
--ask
- Prompt for note via multi-line input
-e|--editor
- Edit entry with vim
note [NOTE_TEXT]
Add a note to the last entry
If -r is provided with no other arguments, the last note is removed. If new content is specified through arguments or STDIN, any previous note will be replaced with the new one.
Use -e to load the last entry in a text editor where you can append a note.
Options
--bool BOOLEAN
- Boolean used to combine multiple tags (AND|OR|NOT). Use PATTERN to parse + and - as booleans
- Default Value:
pattern
- Must Match:
(?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
--case TYPE
- Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
- Default Value:
smart
- Must Match:
(?i-mx:^[cis].*?$)
-s|--section NAME
- Section
- Default Value:
All
--search QUERY
- Filter entries using a search query, surround with slashes for regex (e.g. “/query.*/”), start with single quote for exact match (“‘query”)
-
Default Value:
None
--tag TAG
- Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
- Default Value:
None
--val QUERY
- Perform a tag value query (“@done > two hours ago” or “@progress < 50”). May be used multiple times, combined with –bool
-
Default Value:
None
- Must Match:
(?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
--ask
- Prompt for note via multi-line input
-e|--editor
- Edit entry with vim
-i|--interactive
- Select item for new note from a menu of matching entries
--not
- Note items that don’t match search/tag filters
-r|--remove
- Replace/Remove last entry’s note (default append)
-x|--exact
- Force exact search string matching (case sensitive)
now (or next) ENTRY
Add an entry
Record what you’re starting now, or backdate the start time using natural language.
A parenthetical at the end of the entry will be converted to a note.
Run without arguments to create a new entry interactively.
Run with –editor to create a new entry using vim.
Options
-b|--back|--started|--since DATE_STRING
- Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]
- Default Value:
None
--from TIME_RANGE
- Set a start and optionally end time as a date range (“from 1pm to 2:30pm”). If an end time is provided, a dated @done tag will be added
-
Default Value:
None
-n|--note TEXT
- Include a note
- Default Value:
None
-s|--section NAME
- Section
- Default Value:
None
-X|--noauto
- Exclude auto tags and default tags
--ask
- Prompt for note via multi-line input
-e|--editor
- Edit entry with vim
-f|--finish_last
- Timed entry, marks last entry in section as @done
on DATE_STRING
List entries for a date
Date argument can be natural language. “thursday” would be interpreted as “last thursday,”
and “2d” would be interpreted as “two days ago.” If you use “to” or “through” between two dates,
it will create a range.
Options
--after TIME_STRING
- View entries after specified time (e.g. 8am, 12:30pm, 15:00)
- Default Value:
None
--before TIME_STRING
- View entries before specified time (e.g. 8am, 12:30pm, 15:00)
- Default Value:
None
--bool BOOLEAN
- Boolean used to combine multiple tags (AND|OR|NOT). Use PATTERN to parse + and - as booleans
- Default Value:
pattern
- Must Match:
(?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
--case TYPE
- Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
- Default Value:
smart
- Must Match:
(?i-mx:^[cis].*?$)
--config_template TEMPLATE_KEY
- Output using a template from configuration
- Default Value:
default
--from TIME_RANGE
- Time range to show
doing on --from "12pm to 4pm"
- Default Value:
None
- Must Match:
(?i-mx:^(?:\d{1,2}+(?::\d{1,2}+)?(?: *(?:am|pm))?|midnight|noon)(?: +(?:to|through|thru|(?:un)?til|-+) +(?:\d{1,2}+(?::\d{1,2}+)?(?: *(?:am|pm))?|midnight|noon))?$)
-o|--output FORMAT
- Output to export format (byday|csv|dayone|dayone-days|dayone-entries|doing|html|json|markdown|say|taskpaper|template|timeline|wiki)
- Default Value:
None
-s|--section NAME
- Section
- Default Value:
All
--save VIEW_NAME
- Save all current command line options as a new view
- Default Value:
None
--search QUERY
- Filter entries using a search query, surround with slashes for regex (e.g. “/query.*/”), start with single quote for exact match (“‘query”)
-
Default Value:
None
--tag TAG
- Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
- Default Value:
None
--tag_order DIRECTION
- Tag sort direction (asc|desc)
- Default Value:
asc
- Must Match:
(?i-mx:^(?:a(?:sc)?|d(?:esc)?)$)
--tag_sort KEY
- Sort tags by (name|time)
- Default Value:
name
- Must Match:
(?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
--template TEMPLATE_STRING
- Override output format with a template string containing %placeholders
- Default Value:
None
--title TITLE
- Title string to be used for output formats that require it
- Default Value:
None
--val QUERY
- Perform a tag value query (“@done > two hours ago” or “@progress < 50”). May be used multiple times, combined with –bool
-
Default Value:
None
- Must Match:
(?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
--[no-]duration
- Show elapsed time on entries without @done tag
--not
- Show items that don’t match search/tag filters
--only_timed
- Only show items with recorded time intervals
-t|--[no-]times
- Show time intervals on @done tasks
--totals
- Show time totals at the end of output
-x|--exact
- Force exact search string matching (case sensitive)
open
Open the “doing” file in an editor
doing open
defaults to using the editors.doing_file setting
in ~/.config/doing/config.yml (TaskPaper).
Options
-a|--app APP_NAME
- Open with app name
- Default Value:
None
-b|--bundle_id BUNDLE_ID
- Open with app bundle id
- Default Value:
None
-e|--editor COMMAND
- Open with editor command (e.g. vim, mate)
- Default Value:
None
plugins
List installed plugins
Lists available plugins, including user-installed plugins.
Export plugins are available with the --output
flag on commands that support it.
Import plugins are available using doing import --type PLUGIN
.
Options
-t|--type TYPE
- List plugins of type (import, export)
- Default Value:
all
- Must Match:
(?i-mx:^(?:[iea].*)$)
-c|--column
- List in single column for completion
recent COUNT
List recent entries
Options
--config_template TEMPLATE_KEY
- Output using a template from configuration
- Default Value:
recent
-o|--output FORMAT
- Output to export format (byday|csv|dayone|dayone-days|dayone-entries|doing|html|json|markdown|say|taskpaper|template|timeline|wiki)
- Default Value:
None
-s|--section NAME
- Section
- Default Value:
All
--save VIEW_NAME
- Save all current command line options as a new view
- Default Value:
None
--tag_order DIRECTION
- Tag sort direction (asc|desc)
- Default Value:
asc
- Must Match:
(?i-mx:^(?:a(?:sc)?|d(?:esc)?)$)
--tag_sort KEY
- Sort tags by (name|time)
- Default Value:
name
- Must Match:
(?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
--template TEMPLATE_STRING
- Override output format with a template string containing %placeholders
- Default Value:
None
--title TITLE
- Title string to be used for output formats that require it
- Default Value:
None
--[no-]duration
- Show elapsed time on entries without @done tag
-i|--interactive
- Select from a menu of matching entries to perform additional operations
--only_timed
- Only show items with recorded time intervals
-t|--[no-]times
- Show time intervals on @done tasks
--totals
- Show time totals at the end of output
redo COUNT
Redo an undo command
Shortcut for doing undo -r
, reverses the last undo command. Specify a count to redo multiple undos
Options
-f|--file PATH
- Specify alternate doing file
- Default Value:
None
-i|--[no-]interactive
- Select from an interactive menu
reset (or begin) [DATE_STRING]
Reset the start time of an entry
Update the start time of the last entry or the last entry matching a tag/search filter.
If no argument is provided, the start time will be reset to the current time.
If a date string is provided as an argument, the start time will be set to the parsed result.
Options
--bool BOOLEAN
- Boolean used to combine multiple tags (AND|OR|NOT). Use PATTERN to parse + and - as booleans
- Default Value:
pattern
- Must Match:
(?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
--case TYPE
- Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
- Default Value:
smart
- Must Match:
(?i-mx:^[cis].*?$)
--from TIME_RANGE
- Start and end times as a date/time range
doing done --from "1am to 8am"
. Overrides any date argument and disables –resume. -
Default Value:
None
- Must Match:
(?i-mx:^\S+.*? +(?:to|through|thru|(?:un)?til|-+) +\S+.*?$)
-s|--section NAME
- Limit search to section
- Default Value:
All
--search QUERY
- Filter entries using a search query, surround with slashes for regex (e.g. “/query.*/”), start with single quote for exact match (“‘query”)
-
Default Value:
None
-t|--took|--for INTERVAL
- Set completion date to start date plus interval (XX[mhd] or HH:MM). Disables –resume
- Default Value:
None
--tag TAG
- Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
- Default Value:
None
--val QUERY
- Perform a tag value query (“@done > two hours ago” or “@progress < 50”). May be used multiple times, combined with –bool
-
Default Value:
None
- Must Match:
(?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
-i|--interactive
- Select from a menu of matching entries
-n
- Change start date but do not remove @done (shortcut for –no-resume)
--not
- Reset items that don’t match search/tag filters
-r|--[no-]resume
- Resume entry (remove @done)
-x|--exact
- Force exact search string matching (case sensitive)
rotate
Move entries to archive file
As your doing file grows, commands can get slow. Given that your historical data (and your archive section)
probably aren’t providing any useful insights a year later, use this command to “rotate” old entries out to an archive
file. You’ll still have access to all historical data, but it won’t be slowing down daily operation.
Options
--before DATE_STRING
- Rotate entries older than date (Flexible date format, e.g. 1/27/2021, 2020-07-19, or Monday 3pm)
-
Default Value:
None
--bool BOOLEAN
- Boolean used to combine multiple tags (AND|OR|NOT). Use PATTERN to parse + and - as booleans
- Default Value:
pattern
- Must Match:
(?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
--case TYPE
- Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
- Default Value:
smart
- Must Match:
(?i-mx:^[cis].*?$)
-k|--keep X
- How many items to keep in each section (most recent)
- Default Value:
None
- Must Match:
(?-mix:^\d+$)
-s|--section SECTION_NAME
- Section to rotate
- Default Value:
All
--search QUERY
- Filter entries using a search query, surround with slashes for regex (e.g. “/query.*/”), start with single quote for exact match (“‘query”)
-
Default Value:
None
--tag TAG
- Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
- Default Value:
None
--val QUERY
- Perform a tag value query (“@done > two hours ago” or “@progress < 50”). May be used multiple times, combined with –bool
-
Default Value:
None
- Must Match:
(?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
--not
- Rotate items that don’t match search/tag filters
-x|--exact
- Force exact search string matching (case sensitive)
sections
List, add, or remove sections in the Doing file
Commands
add SECTION_NAME
Add a section
list
List sections
Options
-c|--column
- List in single column
remove SECTION_NAME
Remove a section
Options
-a|--[no-]archive
- Archive entries in section before deleting. –no-archive permanently deletes section contents
Default Command:
list
select
Display an interactive menu to perform operations
List all entries and select with typeahead fuzzy matching.
Multiple selections are allowed, hit tab to add the highlighted entry to the
selection, and use ctrl-a to select all visible items. Return processes the
selected entries.
Search in the menu by typing:
sbtrkt fuzzy-match Items that match sbtrk*t
‘wild exact-match (quoted) Items that include wild
!fire inverse-exact-match Items that do not include fire
Options
--after DATE_STRING
- Select entries newer than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
-
Default Value:
None
--before DATE_STRING
- Select entries older than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
-
Default Value:
None
--case TYPE
- Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
- Default Value:
smart
- Must Match:
(?i-mx:^[cis].*?$)
--from DATE_OR_RANGE
- Date range (natural language) to select, or a single day to filter on.
To specify a range, use “to”:
doing select --from "monday 8am to friday 5pm"
.If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered by time of day.
-
Default Value:
None
-m|--move SECTION
- Move selected items to section
- Default Value:
None
-o|--output FORMAT
- Output entries to format (byday|csv|dayone|dayone-days|dayone-entries|doing|html|json|markdown|say|taskpaper|template|timeline|wiki)
- Default Value:
None
-q|--query QUERY
- Initial search query for filtering. Matching is fuzzy. For exact matching, start query with a single quote, e.g. `–query “‘search”
-
Default Value:
None
-s|--section SECTION
- Select from a specific section
- Default Value:
None
--save_to FILE
- Save selected entries to file using –output format
- Default Value:
None
--search QUERY
- Filter entries using a search query, surround with slashes for regex (e.g. “/query.*/”), start with single quote for exact match (“‘query”)
-
Default Value:
None
-t|--tag TAG
- Tag selected entries
- Default Value:
None
--val QUERY
- Perform a tag value query (“@done > two hours ago” or “@progress < 50”). May be used multiple times, combined with –bool
-
Default Value:
None
- Must Match:
(?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
-a|--archive
- Archive selected items
--again|--resume
- Copy selection as a new entry with current time and no @done tag. Only works with single selections. Can be combined with –editor.
-c|--cancel
- Cancel selected items (add @done without timestamp)
-d|--delete
- Delete selected items
-e|--editor
- Edit selected item(s)
-f|--finish
- Add @done with current time to selected item(s)
--flag
- Add flag to selected item(s)
--force
- Perform action without confirmation
--[no-]menu
- Use –no-menu to skip the interactive menu. Use with –query to filter items and act on results automatically.
Test with
--output doing
to preview matches --not
- Select items that don’t match search/tag filters
-r|--remove
- Reverse -c, -f, –flag, and -t (remove instead of adding)
-x|--exact
- Force exact search string matching (case sensitive)
show [SECTION|@TAGS]
List all entries
The argument can be a section name, @tag(s) or both. “pick” or “choose” as an argument will offer a section menu. Run with --menu
to get a menu of available tags.
Show tags by passing @tagname arguments. Multiple tags can be combined, and you can specify the boolean used to combine them with --bool (AND|OR|NOT)
. You can also use @+tagname to require a tag to match, or @-tagname to ignore entries containing tagname. +/- operators require --bool PATTERN
(which is the default).
Options
-a|--age AGE
- Age (oldest|newest)
- Default Value:
newest
--after DATE_STRING
- Show entries newer than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
-
Default Value:
None
--before DATE_STRING
- Show entries older than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
-
Default Value:
None
--bool BOOLEAN
- Boolean used to combine multiple tags (AND|OR|NOT). Use PATTERN to parse + and - as booleans
- Default Value:
pattern
- Must Match:
(?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
-c|--count MAX
- Max count to show
- Default Value:
0
- Must Match:
(?-mix:^\d+$)
--case TYPE
- Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
- Default Value:
smart
- Must Match:
(?i-mx:^[cis].*?$)
--config_template TEMPLATE_KEY
- Output using a template from configuration
- Default Value:
default
--from DATE_OR_RANGE
- Date range (natural language) to show, or a single day to filter on.
To specify a range, use “to”:
doing show --from "monday 8am to friday 5pm"
.If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered by time of day.
-
Default Value:
None
-o|--output FORMAT
- Output to export format (byday|csv|dayone|dayone-days|dayone-entries|doing|html|json|markdown|say|taskpaper|template|timeline|wiki)
- Default Value:
None
-s|--section NAME
- Only show entries within section
- Default Value:
None
--save VIEW_NAME
- Save all current command line options as a new view
- Default Value:
None
--search QUERY
- Filter entries using a search query, surround with slashes for regex (e.g. “/query.*/”), start with single quote for exact match (“‘query”)
-
Default Value:
None
--sort ORDER
- Sort order (asc/desc)
- Default Value:
asc
- Must Match:
(?i-mx:^(?:a(?:sc)?|d(?:esc)?)$)
--tag TAG
- Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
- Default Value:
None
--tag_order DIRECTION
- Tag sort direction (asc|desc)
- Default Value:
asc
- Must Match:
(?i-mx:^(?:a(?:sc)?|d(?:esc)?)$)
--tag_sort KEY
- Sort tags by (name|time)
- Default Value:
name
- Must Match:
(?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
--template TEMPLATE_STRING
- Override output format with a template string containing %placeholders
- Default Value:
None
--title TITLE
- Title string to be used for output formats that require it
- Default Value:
None
--val QUERY
- Perform a tag value query (“@done > two hours ago” or “@progress < 50”). May be used multiple times, combined with –bool
-
Default Value:
None
- Must Match:
(?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
--[no-]duration
- Show elapsed time on entries without @done tag
-e|--editor
- Edit matching entries with vim
-h|--[no-]hilite
- Highlight search matches in output. Only affects command line output
-i|--interactive
- Select from a menu of matching entries to perform additional operations
-m|--menu
- Select section or tag to display from a menu
--not
- Show items that don’t match search/tag filters
--only_timed
- Only show items with recorded time intervals
-t|--[no-]times
- Show time intervals on @done tasks
--totals
- Show time totals at the end of output
-x|--exact
- Force exact search string matching (case sensitive)
since DATE_STRING
List entries since a date
Date argument can be natural language and are always interpreted as being in the past. “thursday” would be interpreted as “last thursday,”
and “2d” would be interpreted as “two days ago.”
Options
--bool BOOLEAN
- Boolean used to combine multiple tags (AND|OR|NOT). Use PATTERN to parse + and - as booleans
- Default Value:
pattern
- Must Match:
(?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
--case TYPE
- Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
- Default Value:
smart
- Must Match:
(?i-mx:^[cis].*?$)
--config_template TEMPLATE_KEY
- Output using a template from configuration
- Default Value:
default
-o|--output FORMAT
- Output to export format (byday|csv|dayone|dayone-days|dayone-entries|doing|html|json|markdown|say|taskpaper|template|timeline|wiki)
- Default Value:
None
-s|--section NAME
- Section
- Default Value:
All
--save VIEW_NAME
- Save all current command line options as a new view
- Default Value:
None
--search QUERY
- Filter entries using a search query, surround with slashes for regex (e.g. “/query.*/”), start with single quote for exact match (“‘query”)
-
Default Value:
None
--tag TAG
- Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
- Default Value:
None
--tag_order DIRECTION
- Tag sort direction (asc|desc)
- Default Value:
asc
- Must Match:
(?i-mx:^(?:a(?:sc)?|d(?:esc)?)$)
--tag_sort KEY
- Sort tags by (name|time)
- Default Value:
name
- Must Match:
(?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
--template TEMPLATE_STRING
- Override output format with a template string containing %placeholders
- Default Value:
None
--title TITLE
- Title string to be used for output formats that require it
- Default Value:
None
--val QUERY
- Perform a tag value query (“@done > two hours ago” or “@progress < 50”). May be used multiple times, combined with –bool
-
Default Value:
None
- Must Match:
(?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
--[no-]duration
- Show elapsed time on entries without @done tag
--not
- Since items that don’t match search/tag filters
--only_timed
- Only show items with recorded time intervals
-t|--[no-]times
- Show time intervals on @done tasks
--totals
- Show time totals at the end of output
-x|--exact
- Force exact search string matching (case sensitive)
tag TAG…
Add tag(s) to last entry
Add (or remove) tags from the last entry, or from multiple entries
(with `--count`), entries matching a search (with `--search`), or entries
containing another tag (with `--tag`).
When removing tags with `-r`, wildcards are allowed (`*` to match
multiple characters, `?` to match a single character). With `--regex`,
regular expressions will be interpreted instead of wildcards.
For all tag removals the match is case insensitive by default, but if
the tag search string contains any uppercase letters, the match will
become case sensitive automatically.
Tag name arguments do not need to be prefixed with @.
Options
--bool BOOLEAN
- Boolean used to combine multiple tags (AND|OR|NOT). Use PATTERN to parse + and - as booleans
- Default Value:
pattern
- Must Match:
(?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
-c|--count COUNT
- How many recent entries to tag (0 for all)
- Default Value:
1
- Must Match:
(?-mix:^\d+$)
--case TYPE
- Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
- Default Value:
smart
- Must Match:
(?i-mx:^[cis].*?$)
--rename ORIG_TAG
- Replace existing tag with tag argument, wildcards (*,?) allowed, or use with –regex
- Default Value:
None
-s|--section SECTION_NAME
- Section
- Default Value:
All
--search QUERY
- Filter entries using a search query, surround with slashes for regex (e.g. “/query.*/”), start with single quote for exact match (“‘query”)
-
Default Value:
None
--tag TAG
- Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
- Default Value:
None
-v|--value VALUE
- Include a value, e.g. @tag(value)
- Default Value:
None
--val QUERY
- Perform a tag value query (“@done > two hours ago” or “@progress < 50”). May be used multiple times, combined with –bool
-
Default Value:
None
- Must Match:
(?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
-a|--autotag
- Autotag entries based on autotag configuration in ~/.config/doing/config.yml
-d|--date
- Include current date/time with tag
--force
- Don’t ask permission to tag all entries when count is 0
-i|--interactive
- Select item(s) to tag from a menu of matching entries
--not
- Tag items that don’t match search/tag filters
-r|--remove
- Remove given tag(s)
--regex
- Interpret tag string as regular expression (with –remove)
-u|--unfinished
- Tag last entry (or entries) not marked @done
-x|--exact
- Force exact search string matching (case sensitive)
tag_dir TAG [TAG..]
Set the default tags for the current directory
Adds default_tags to a .doingrc file in the current directory. Any entry created in this directory or its
subdirectories will be tagged with the default tags. You can modify these any time using the config set
command or
manually editing the .doingrc file.
Options
--clear
- Remove all default_tags from the local .doingrc
-e|--editor
- Use default editor to edit tag list
-r|--remove
- Delete tag(s) from the current list
tags [MAX_COUNT]
List all tags in the current Doing file
Options
--bool BOOLEAN
- Boolean used to combine multiple tags (AND|OR|NOT). Use PATTERN to parse + and - as booleans
- Default Value:
pattern
- Must Match:
(?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
--case TYPE
- Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
- Default Value:
smart
- Must Match:
(?i-mx:^[cis].*?$)
-o|--order ORDER
- Sort order (asc/desc)
- Default Value:
asc
- Must Match:
(?i-mx:^(?:a(?:sc)?|d(?:esc)?)$)
-s|--section SECTION_NAME
- Section
- Default Value:
All
--search QUERY
- Filter entries using a search query, surround with slashes for regex (e.g. “/query.*/”), start with single quote for exact match (“‘query”)
-
Default Value:
None
--sort SORT_ORDER
- Sort by name or count
- Default Value:
name
- Must Match:
(?-mix:^(?:n(?:ame)?|c(?:ount)?)$)
--tag TAG
- Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
- Default Value:
None
--val QUERY
- Perform a tag value query (“@done > two hours ago” or “@progress < 50”). May be used multiple times, combined with –bool
-
Default Value:
None
- Must Match:
(?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
-c|--[no-]counts
- Show count of occurrences
-i|--interactive
- Select items to scan from a menu of matching entries
-l|--[no-]line
- Output in a single line with @ symbols. Ignored if –counts is specified.
--not
- Show items that don’t match search/tag filters
-x|--exact
- Force exact search string matching (case sensitive)
template TYPE
Output HTML, CSS, and Markdown (ERB) templates for customization
Templates are printed to STDOUT for piping to a file. Save them and use them in the configuration file under export_templates.
Options
-p|--path DIRECTORY
- Save template to alternate location
- Default Value:
~/.config/doing/templates
-c|--[no-]column
- List in single column for completion
-l|--list
- List all available templates
-s|--save
- Save template to file instead of STDOUT
test
Test Stuff
This command is coming from ~/.config/doing/commands/test.rb
today
List entries from today
List entries from the current day. Use –before, –after, and
–from to specify time ranges.
Options
--after TIME_STRING
- View entries after specified time (e.g. 8am, 12:30pm, 15:00)
- Default Value:
None
--before TIME_STRING
- View entries before specified time (e.g. 8am, 12:30pm, 15:00)
- Default Value:
None
--config_template TEMPLATE_KEY
- Output using a template from configuration
- Default Value:
today
--from TIME_RANGE
- Time range to show
doing today --from "12pm to 4pm"
- Default Value:
None
- Must Match:
(?i-mx:^(?:\d{1,2}+(?::\d{1,2}+)?(?: *(?:am|pm))?|midnight|noon)(?: +(?:to|through|thru|(?:un)?til|-+) +(?:\d{1,2}+(?::\d{1,2}+)?(?: *(?:am|pm))?|midnight|noon))?$)
-o|--output FORMAT
- Output to export format (byday|csv|dayone|dayone-days|dayone-entries|doing|html|json|markdown|say|taskpaper|template|timeline|wiki)
- Default Value:
None
-s|--section NAME
- Specify a section
- Default Value:
All
--save VIEW_NAME
- Save all current command line options as a new view
- Default Value:
None
--tag_order DIRECTION
- Tag sort direction (asc|desc)
- Default Value:
asc
- Must Match:
(?i-mx:^(?:a(?:sc)?|d(?:esc)?)$)
--tag_sort KEY
- Sort tags by (name|time)
- Default Value:
name
- Must Match:
(?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
--template TEMPLATE_STRING
- Override output format with a template string containing %placeholders
- Default Value:
None
--title TITLE
- Title string to be used for output formats that require it
- Default Value:
None
--[no-]duration
- Show elapsed time on entries without @done tag
--only_timed
- Only show items with recorded time intervals
-t|--[no-]times
- Show time intervals on @done tasks
--totals
- Show time totals at the end of output
todo ENTRY
Add an item as a Todo
Adds an item to a Todo section, and tags it with @todo
Options
-n|--note TEXT
- Note
- Default Value:
None
--ask
- Prompt for note via multi-line input
-e|--editor
- Edit entry with vim
undo COUNT
Undo the last X changes to the Doing file
Reverts the last X commands that altered the doing file.
All changes performed by a single command are undone at once.
Specify a number to jump back multiple revisions, or use –select for an interactive menu.
Options
-f|--file PATH
- Specify alternate doing file
- Default Value:
None
-p|--prune COUNT
- Remove old backups, retaining X files
- Default Value:
None
-i|--interactive
- Select from recent backups
-r|--[no-]redo
- Redo last undo. Note: you cannot undo a redo
update
Update doing to the latest version
Checks for the latest available version of doing and updates your local install if needed.
Options
-p|--pre|--beta
- Check for pre-release version
view VIEW_NAME
Display a user-created view
Views are defined in your configuration (use doing config
to edit).
Command line options override view configuration.
Options
--after DATE_STRING
- Show entries newer than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
-
Default Value:
None
--age AGE
- Age (oldest|newest)
- Default Value:
None
--before DATE_STRING
- Show entries older than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
-
Default Value:
None
--bool BOOLEAN
- Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
- Default Value:
None
- Must Match:
(?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
-c|--count COUNT
- Count to display
- Default Value:
None
- Must Match:
(?-mix:^\d+$)
--case TYPE
- Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
- Default Value:
smart
- Must Match:
(?i-mx:^[cis].*?$)
--config_template TEMPLATE_KEY
- Output using a template from configuration
- Default Value:
None
--from DATE_OR_RANGE
- Date range (natural language) to show, or a single day to filter on.
To specify a range, use “to”:
doing view --from "monday 8am to friday 5pm"
.If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered by time of day.
-
Default Value:
None
-o|--output FORMAT
- Output to export format (byday|csv|dayone|dayone-days|dayone-entries|doing|html|json|markdown|say|taskpaper|template|timeline|wiki)
- Default Value:
None
-s|--section NAME
- Section
- Default Value:
None
--search QUERY
- Filter entries using a search query, surround with slashes for regex (e.g. “/query.*/”), start with single quote for exact match (“‘query”)
-
Default Value:
None
--tag TAG
- Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
- Default Value:
None
--tag_order DIRECTION
- Tag sort direction (asc|desc)
- Default Value:
None
- Must Match:
(?i-mx:^(?:a(?:sc)?|d(?:esc)?)$)
--tag_sort KEY
- Sort tags by (name|time)
- Default Value:
None
- Must Match:
(?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
--template TEMPLATE_STRING
- Override output format with a template string containing %placeholders
- Default Value:
None
--val QUERY
- Perform a tag value query (“@done > two hours ago” or “@progress < 50”). May be used multiple times, combined with –bool
-
Default Value:
None
- Must Match:
(?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
--[no-]color
- Include colors in output
--duration
- Show elapsed time on entries without @done tag
-h|--[no-]hilite
- Highlight search matches in output. Only affects command line output
-i|--interactive
- Select from a menu of matching entries to perform additional operations
--not
- Show items that don’t match search/tag filters
--only_timed
- Only show items with recorded time intervals (override view settings)
-t|--[no-]times
- Show time intervals on @done tasks
--totals
- Show intervals with totals at the end of output
-x|--exact
- Force exact search string matching (case sensitive)
views [NAME(S)]
List available custom views. Specify view names to see YAML configurations.
Options
-o|--output FORMAT
- Output/edit view in alternative format (json, yaml)
- Default Value:
yaml
- Must Match:
(?i-mx:^[jy])
-c|--column
- List in single column
-e|--editor
- Open YAML for view in editor (requires argument)
-r|--remove
- Delete view config
wiki
Output a tag wiki
Options
--after DATE_STRING
- Include entries newer than date
- Default Value:
None
-b|--bool BOOLEAN
- Tag boolean (AND,OR,NOT)
- Default Value:
OR
- Must Match:
(?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
--before DATE_STRING
- Include entries older than date
- Default Value:
None
-f|--from DATE_OR_RANGE
- Date range to include, or a single day to filter date on.
Date range argument should be quoted. Date specifications can be natural language.
To specify a range, use “to” or “through”:
doing show --from "monday to friday"
-
Default Value:
None
-s|--section SECTION_NAME
- Section to rotate
- Default Value:
All
--search QUERY
- Search filter, surround with slashes for regex (/query/), start with single quote for exact match (“‘query”)
- Default Value:
None
--tag TAG
- Tag filter, combine multiple tags with a comma, use with –bool
- Default Value:
None
--only_timed
- Only show items with recorded time intervals
yesterday
List entries from yesterday
Show only entries with start times within the previous 24 hour period. Use –before, –after, and –from to limit to
time spans within the day.
Options
--after TIME_STRING
- View entries after specified time (e.g. 8am, 12:30pm, 15:00)
- Default Value:
None
--before TIME_STRING
- View entries before specified time (e.g. 8am, 12:30pm, 15:00)
- Default Value:
None
--config_template TEMPLATE_KEY
- Output using a template from configuration
- Default Value:
today
--from TIME_RANGE
- Time range to show
doing yesterday --from "12pm to 4pm"
- Default Value:
None
- Must Match:
(?i-mx:^(?:\d{1,2}+(?::\d{1,2}+)?(?: *(?:am|pm))?|midnight|noon)(?: +(?:to|through|thru|(?:un)?til|-+) +(?:\d{1,2}+(?::\d{1,2}+)?(?: *(?:am|pm))?|midnight|noon))?$)
-o|--output FORMAT
- Output to export format (byday|csv|dayone|dayone-days|dayone-entries|doing|html|json|markdown|say|taskpaper|template|timeline|wiki)
- Default Value:
None
-s|--section NAME
- Specify a section
- Default Value:
All
--save VIEW_NAME
- Save all current command line options as a new view
- Default Value:
None
--tag_order DIRECTION
- Tag sort direction (asc|desc)
- Default Value:
asc
- Must Match:
(?i-mx:^(?:a(?:sc)?|d(?:esc)?)$)
--tag_sort KEY
- Sort tags by (name|time)
- Default Value:
name
- Must Match:
(?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
--template TEMPLATE_STRING
- Override output format with a template string containing %placeholders
- Default Value:
None
--title TITLE
- Title string to be used for output formats that require it
- Default Value:
None
--[no-]duration
- Show elapsed time on entries without @done tag
--only_timed
- Only show items with recorded time intervals
-t|--[no-]times
- Show time intervals on @done tasks
--totals
- Show time totals at the end of output
Default Command:
recent