Skip to content

Latest commit

 

History

History
3464 lines (1673 loc) · 65.3 KB

doing.rdoc

File metadata and controls

3464 lines (1673 loc) · 65.3 KB

doing - A CLI for a What Was I Doing system

Doing uses a TaskPaper-like formatting to keep a plain text 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

/Users/ttscoff/.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|–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

Command: again|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 [©ase-sensitive, (i)gnore, (s)mart]

Default Value

smart

Must Match

(?i-mx:^.*?$)

–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)

Command: archive|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 [©ase-sensitive, (i)gnore, (s)mart]

Default Value

smart

Must Match

(?i-mx:^.*?$)

–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)

Command: 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

Command: 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 [©ase-sensitive, (i)gnore, (s)mart]

Default Value

smart

Must Match

(?i-mx:^.*?$)

-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)

Command: changes|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|–prefix

Include (CHANGE|NEW|IMPROVED|FIXED) prefix on each line

–render

Force rendered output

Command: colors

List available color variables for configuration templates and views

Command: commands

Enable and disable Doing commands

Commands
Command: add|enable [COMMAND [COMMAND...]]

Enable Doing commands

Run without arguments to select commands from a list.

Command: ls|list [QUERY]...

List enabled commands

Options
-s|–style QUERY

List style (column, tab, comma, *space)

Default Value

None

Must Match

(?-mix:^.*)

-d|–disabled

List disabled commands

Command: remove|disable [COMMAND [COMMAND...]]

Disable Doing commands

Default Command

add

Command: 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:^(?:(?:[ai]?sh)?|fig|all)$)

Commands
Command: 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

Command: install [zsh|bash|fish]

Install default completion scripts

Argument specifies which shell to install for: zsh, bash, fish, or all

Default Command

generate

Command: 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

DEPRECATED

-u|–update

DEPRECATED

Commands
Command: edit|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)

Command: get|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)?)$)

Command: 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.
Command: 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

Command: undo

Undo the last change to a config file

Command: update|refresh

Update default config file, adding any missing keys

Default Command

edit

Command: done|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 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

Command: 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 [©ase-sensitive, (i)gnore, (s)mart]

Default Value

smart

Must Match

(?i-mx:^.*?$)

–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 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)

Command: grep|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 [©ase-sensitive, (i)gnore, (s)mart]

Default Value

smart

Must Match

(?i-mx:^.*?$)

–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|–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|–times

Show time intervals on @done tasks

–totals

Show time totals at the end of output

-x|–exact

Force exact string matching (case sensitive)

Command: 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

List commands one per line, to assist with shell completion

Command: 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 [©ase-sensitive, (i)gnore, (s)mart]

Default Value

smart

Must Match

(?i-mx:^.*?$)

–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)

Command: 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 [©ase-sensitive, (i)gnore, (s)mart]

Default Value

smart

Must Match

(?i-mx:^.*?$)

–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|–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)

Command: 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

Command: mark|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 [©ase-sensitive, (i)gnore, (s)mart]

Default Value

smart

Must Match

(?i-mx:^.*?$)

-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)

Command: 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

Command: 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 [©ase-sensitive, (i)gnore, (s)mart]

Default Value

smart

Must Match

(?i-mx:^.*?$)

-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)

Command: now|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

Command: 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 [©ase-sensitive, (i)gnore, (s)mart]

Default Value

smart

Must Match

(?i-mx:^.*?$)

–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|–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)

Command: open

Open the “doing” file in an editor

‘doing open` defaults to using the editors.doing_file setting in /Users/ttscoff/.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

Command: 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:^(?:.*)$)

-c|–column

List in single column for completion

Command: 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|–times

Show time intervals on @done tasks

–totals

Show time totals at the end of output

Command: 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|–interactive

Select from an interactive menu

Command: reset|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 [©ase-sensitive, (i)gnore, (s)mart]

Default Value

smart

Must Match

(?i-mx:^.*?$)

–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 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

Change start date but do not remove @done (shortcut for –no-resume)

–not

Reset items that *don’t* match search/tag filters

-r|–resume

Resume entry (remove @done)

-x|–exact

Force exact search string matching (case sensitive)

Command: 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 [©ase-sensitive, (i)gnore, (s)mart]

Default Value

smart

Must Match

(?i-mx:^.*?$)

-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)

Command: sections

List, add, or remove sections in the Doing file

Commands
Command: add SECTION_NAME

Add a section

Command: list

List sections

Options
-c|–column

List in single column

Command: remove SECTION_NAME

Remove a section

Options
-a|–archive

Archive entries in section before deleting. –no-archive permanently deletes section contents

Default Command

list

Command: 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 s*b*t*r*k*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 [©ase-sensitive, (i)gnore, (s)mart]

Default Value

smart

Must Match

(?i-mx:^.*?$)

–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)

Command: 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 [©ase-sensitive, (i)gnore, (s)mart]

Default Value

smart

Must Match

(?i-mx:^.*?$)

–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|–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|–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)

Command: 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 [©ase-sensitive, (i)gnore, (s)mart]

Default Value

smart

Must Match

(?i-mx:^.*?$)

–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|–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)

Command: 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 [©ase-sensitive, (i)gnore, (s)mart]

Default Value

smart

Must Match

(?i-mx:^.*?$)

–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)

Command: 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

Command: 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 [©ase-sensitive, (i)gnore, (s)mart]

Default Value

smart

Must Match

(?i-mx:^.*?$)

-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|–counts

Show count of occurrences

-i|–interactive

Select items to scan from a menu of matching entries

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)

Command: 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

/Users/ttscoff/.config/doing/templates

-c|–column

List in single column for completion

-l|–list

List all available templates

-s|–save

Save template to file instead of STDOUT

Command: test

Test Stuff

This command is coming from /Users/ttscoff/.config/doing/commands/test.rb

Command: 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|–times

Show time intervals on @done tasks

–totals

Show time totals at the end of output

Command: 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

Command: 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

Redo last undo. Note: you cannot undo a redo

Command: 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

Command: 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 [©ase-sensitive, (i)gnore, (s)mart]

Default Value

smart

Must Match

(?i-mx:^.*?$)

–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|–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|–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)

Command: 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:^)

-c|–column

List in single column

-e|–editor

Open YAML for view in editor (requires argument)

-r|–remove

Delete view config

Command: 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

Command: 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|–times

Show time intervals on @done tasks

–totals

Show time totals at the end of output

Default Command

recent