Search
2Do searches task titles, notes, tags, action values, and locations, and its structured filters cover dates, lists, groups, and other task properties. The same search language powers Smart Lists, so anything useful enough to keep can become a permanent list.
Opening Search
Tap the search button at the top of the task list, or press ⌘F with a hardware keyboard. The search field takes over the top of the list, and a row of five controls appears under it. Tap the close control to leave search and go back to the full list.
Typing filters the list live, matching titles, notes, tags, action values, and locations.
The Search Controls
Five controls sit under the search field:
| Control | What it does |
|---|---|
| New Smart List | Saves the current search as a Smart List |
| Date Filter | Opens the Search Dates editor |
| Search Scope | Switches between All Lists and Current List Only |
| Presets | Opens the Search Presets sheet |
| Sounds-Like Search | Turns sound-alike matching on or off |
Scope and sound-alike matching each confirm the change with a short toast naming the new setting, so you always know which way they are set. Both are remembered for next time.
Search Scope
Search Scope decides how wide the search goes:
- Current List Only keeps the search inside the list you are viewing, and the field's placeholder names that list.
- All Lists searches everything you have, and the placeholder reads All Lists.
A few keywords widen the scope on their own. A lists:, groups:, or completed: filter always searches across every list, whichever scope is set. See Smart Lists.
Search Presets
The Search Presets sheet is the quickest way to build a structured filter without typing. It lists 2Do's built-in filters in groups: what kind of task it is, whether it has notes or repeats, its due date, its start date, either date, duration and state, priority, tags, locations, attachments, actions, and whether it was captured from email.
- Tap a filter to include it.
- Tap the ! control beside a filter to turn it into an exclusion instead.
- Match ALL filters and Match ANY filter decide whether the chosen filters must all apply or just one of them.
A Preview box at the top shows the exact type: expression the sheet will put in the search field, in a fixed-width face, so you can see what you are building and edit it by hand afterwards.
Whatever else your search already holds, such as typed text, tags, lists, or a date range, is kept. Only the preset part is replaced.
For example, select Today and Overdue under Due Date, then turn off Match ALL filters so the sheet reads Match ANY filter. This combines the two sets of tasks in one search. See Combine Today and Overdue for the steps to save it as a Smart List and check for a date range that could still exclude older tasks.
Build the structure with the Search Presets sheet, then add the text and named criteria by hand in the field. The two mix freely.
Search Dates
The Date Filter control opens the Search Dates editor, which adds a date condition on top of whatever else the search holds. It has two modes:
- Date range: pick a From day and a To day on the calendar. The line above it says what it does: Select a date range to find tasks due in those dates. Two chips show the ends of the range, reading From and To until you pick a day, then naming the day itself, with today, yesterday, and tomorrow written by name.
- Dynamic: search for upcoming tasks due in the next N Days, Weeks, Months, or Years. It moves with the calendar, so a saved search stays current.
In date-range mode, an alternative sits below the calendar: No Due Date, for finding everything without a deadline. It replaces the range rather than adding to it, which is why the two are separated by a rule.
Include Scheduled brings tasks with a future start date into the results. To remove the date filter, tap Clear, then tap the checkmark to apply.
By default the date filter is applied on top of everything else in the search. To place it yourself, for example as one side of an OR, use the special {datefilter} keyword in the query. See Smart Lists.
Sounds-Like and Full Text
2Do matches text two ways:
- Sounds-Like Search tolerates spelling mistakes, missing letters, and pronunciation variants. It is on by default and syncs across your devices.
- Full text matching is literal, and supports exclusions,
OR, wildcards, and exact phrases. Turn Sounds-Like Search off to use it precisely.
A few characters switch to literal matching on their own: including # or @ in your text, or wrapping the whole query in quotes, turns sound-alike matching off for that search.
Sounds-Like Search is good for everyday "I half remember the name" searches. Turn it off when you need exact OR, exclusions, or wildcards.
Full Text Operators
With Sounds-Like Search off:
| Pattern | Behaviour | Example |
|---|---|---|
word | Matches anywhere inside a word | ject finds project, subject, rejected |
word1 word2 | Implicit AND, both words must appear | new job |
word1 OR word2 | Either word | Call OR new |
word1 AND word2 | Explicit AND, same as a plain space | new AND job |
word -word2 | Excludes a word | new job -find |
!word | Excludes a word, alternate syntax | !work |
word* | Anchored to the start of a word | new* finds new, newer, newest, not renew |
*word | Anchored to the end of a word | *book finds book, notebook, not bookshop |
*word* | Anywhere inside a word | *ject* |
"exact phrase" | The words together, in order | "new job" |
* | Matches every task | Pair it with keywords for a broad text base |
Worked examples, using the tasks Get a haircut one day, Buy a new car some day, Find a new job, Call: Mum, tell about my new job, and Call: Tim:
new jobfinds Find a new job and Call: Mum, tell about my new job.new job -findfinds Call: Mum, tell about my new job.a dayfinds Get a haircut one day and Buy a new car some day.Call OR newfinds all but the haircut.
OR, AND, or, and and between two words are always read as operators, so you cannot search for those words on their own. Wrap one in quotes, as "and", to search for it as text.
Sounds-Like Examples
| You type | 2Do can still find |
|---|---|
plumver | plumber |
Steven | Stephen |
alexnder | Alexander |
Jon | John |
Structured Keywords
Text is only half of it. Search also understands nine structured keywords: type:, tags:, taggroups:, locations:, lists:, groups:, modified:, created:, and completed:. Mix them freely with text, keeping any typed words first:
plumber type: starred tags: builders groups: home
The complete reference, including every type: token and how AND and OR combine, is in Smart Lists.
Saving a Search as a Smart List
When the search shows what you want, tap the New Smart List control in the row under the field. The Smart List is created straight away, named after the query, and joins your source panel.
It keeps the query, the date range, the search scope, and the sound-alike setting exactly as you had them.
If you are already viewing a Smart List when you tap the control, the same command updates that Smart List instead of making another one. A Smart List keeps its saved query visible in the search field while it is selected, so you can adjust and save again in a few taps.
Search vs. Smart Lists
- A search is temporary. It narrows the list you are in until you close it.
- A Smart List is permanent. It lives in the source panel with its own name and colour, and re-applies its rule as your tasks change.
If you keep typing the same search, save it.
Quick Open
Search filters a list; Quick Open jumps you somewhere. Tap the list name at the top of the task list, or press ⇧⌘O, to open a card that finds tasks and lists by name and takes you straight to the one you pick. See Quick Open.