Setup of Thorg Shortcuts
As of the Alpha release, Thorg comes ready for keyboard shortcuts but does NOT have pre-configured shortcuts. We assume our users' keyboards are already heavily loaded with shortcuts. Therefore, we propose adjusting existing shortcuts to use two-chord combinations, making room for an array of hot-keyed commands.
For now, we provide shortcut recommendations but leave the actual setup in your hands. If we receive feedback that you agree with our recommended approach, we will automate this shortcut setup.
Below we offer recommendations for a shortcut schema, with snippets you can add to your keybindings.json.
Also, regarding keybindings.json, we recommend you Source Control your keybindings.json.
Approach: Ergonomic Two-Key Shortcuts That Are Easy to Remember
The suggested approach for creating shortcuts is to use multi-chord shortcuts that are both:
- Ergonomically accessible
- Easy to remember
Before we get into the suggested shortcuts, let's make a small keyboard adjustment that makes a world of difference for hand ergonomics:
Get rid of CAPS LOCK to allow CTRL its rightful place on the home row
TLDR: Remap CAPS LOCK to act as CTRL.
Why do this?
CAPS LOCK occupies valuable space on the home row, making it ergonomically accessible. In professional settings, you rarely need to YELL for a prolonged period. The times you need all-caps text (primarily for LLM agent prompts) are minimal compared to how often you use CTRL shortcuts. Therefore, it's a worthwhile tradeoff to give up CAPS LOCK entirely (just use Shift for capital letters) in favor of having CTRL in a more accessible location.
With the default CTRL placement, taking CTRL+<SomeLetter> shortcuts requires awkward hand positioning. Remapping CAPS LOCK to CTRL makes shortcuts much easier to use.
Why not swap them?
Swapping is an option that can be done after you've become accustomed to using CTRL where CAPS LOCK used to be. However, it's NOT recommended initially, as your muscle memory will default to the previous CTRL position. It takes time for your muscle memory to adjust to ALWAYS use the newly placed CTRL in its rightful place on the home row.
How to do this?
- Mac - Change the behavior of the modifier keys
- Linux: Ask Claude/GPT how to do it for your distribution.
- Windows - Using PowerToys
Now that CTRL lives on the home row and we can use CTRL+<SomeKey> shortcuts with ease, let's start with our first multi-chord entry point: CTRL+t
But CTRL+t is taken for ShowAllSymbols! - Yes, let's free CTRL+t first
Out of the box, VSCode assigns CTRL+t to workbench.action.showAllSymbols. You'll need to free and remap this so you can use CTRL+t as an entry point for many commands rather than just a single command.
Step 1: Free "ctrl+t" from Being Tied to a Single Command
- Open command palette
- Type
Preferences: Open keyboard shortcuts (JSON)
Add the following to the file:
{
"key": "ctrl+t",
"command": "-workbench.action.showAllSymbols"
},
{
"key": "ctrl+t",
"command": "-editor.action.transposeLetters",
"when": "textInputFocus && !editorReadonly"
}
Step 2: Assign New Shortcut for workbench.action.showAllSymbols
The recommended shortcut for workbench.action.showAllSymbols is CTRL+t + T (the second time you press T is without CTRL).
To set this up, add the following to your keyboard shortcuts (JSON) file (keybindings.json):
{
"key": "ctrl+t t",
"command": "workbench.action.showAllSymbols"
},
This setup will leave CTRL+t + CTRL+t available for Quick Search All.
Now that we've freed CTRL+t from being tied to a single command, we can use it as an entry point for multiple commands.
Use CTRL+t as entry point for Thorg commands
CTRL+t is used as the entry point for primary Thorg commands. Think of CTRL+t as meaning Thorg for most commands you assign under it.
Pre-Req
Add CTRL+t Thorg Shortcuts
Add the following to your keybindings.json:
{
"key": "ctrl+t ctrl+t",
"command": "thorg.search.quick.all"
},
{
"key": "ctrl+t ctrl+h",
"command": "thorg.search.quick.visited-since.2-hours-ago"
},
{
"key": "ctrl+t ctrl+d",
"command": "thorg.search.quick.visited-since.today"
},
{
"key": "ctrl+t ctrl+y",
"command": "thorg.search.quick.visited-since.yesterday"
},
{
"key": "ctrl+t ctrl+w",
"command": "thorg.search.quick.visited-since.1-week-ago"
},
{
"key": "ctrl+t ctrl+m",
"command": "thorg.search.quick.visited-since.1-month-ago"
},
{
"key": "ctrl+t ctrl+e",
"command": "thorg.search.quick.visited-since.1-year-ago"
},
Description of Additions
The following are descriptions of the shortcuts added to keybindings.json above:
-
CTRL+t+CTRL+t:- Assigned to thorg.search.quick.all for quick search across all notes.
- To remember: Thorg, Thorg Main Command.
-
CTRL+t+CTRL+h:- Assigned to thorg.search.quick.visited-since.2-hours-ago.
- Through practice, limiting this shortcut to one hour has proven too restrictive, while 4 hours is too permissive. Logically, this shortcut could also be set to:
- To remember: Thorg, Hour.
- Assigned to thorg.search.quick.visited-since.2-hours-ago.
-
CTRL+t+CTRL+d:- Assigned to thorg.search.quick.visited-since.today
- To remember: Thorg, Day.
-
CTRL+t+CTRL+y:- Assigned to thorg.search.quick.visited-since.yesterday
- To remember: Thorg, Yesterday.
-
CTRL+t+CTRL+w:- Assigned to thorg.search.quick.visited-since.1-week-ago
- To remember: Thorg, Week.
-
CTRL+t+CTRL+m:- Assigned to thorg.search.quick.visited-since.1-month-ago
- To remember: Thorg, Month.
-
CTRL+t+CTRL+e:- Assigned to thorg.search.quick.visited-since.1-year-ago
- To remember: Thorg, (Second letter of y)Ear (we aren't using
ysince it's used for yesterday)
Q&A:
Why use visited-since and not updated-since for primary shortcuts?
Why Use Visited-Since and Not Updated-Since as Primary Shortcuts?
Visited Encompasses Modified for Most Cases
We choose visited-since commands over updated-since because if you perform modifications on a note, you'll likely stay in that note longer than your configured Min Visitation Time Threshold. Therefore, your visit will be recorded as a Visit Event for the modified note and will be picked up by visited-since commands.
Updated-Since Does Not Encompass Visited Notes
You could visit and stay at a note for a prolonged period without making modifications or updates. In such cases, the note will be fresh in your memory and likely related to the area you're currently working on. A note that has been read has a higher chance of being re-visited, and it's picked up by visited-since commands. However, such a note that has been read but not modified is out of reach of updated-since commands.
Also see
Free CTRL+y
Out of the box, VSCode assigns CTRL+y to redo. You'll need to free and remap this so you can use CTRL+y as an entry point for many commands rather than just a single command.
Step 1: Free "ctrl+y" from Being Tied to a Single Command
- Open command palette
- Type
Preferences: Open keyboard shortcuts (JSON)
Add the following to the file:
{
"key": "ctrl+y",
"command": "-chatEditor.action.acceptHunk",
"when": "chatEdits.hasEditorModifications && editorFocus && !chatEdits.isRequestInProgress || chatEdits.hasEditorModifications && notebookCellListFocused && !chatEdits.isRequestInProgress"
},
{
"key": "ctrl+y",
"command": "-redo"
}
Step 2: Assign New Shortcut for redo
The recommended shortcut for redo is CTRL+y + Y (the second time you press Y is without CTRL).
To set this up, add the following to your keyboard shortcuts (JSON) file (keybindings.json):
{
"key": "ctrl+y y",
"command": "redo"
}
This setup will leave CTRL+y available as an entry point for multiple commands.
Add Thorg CTRL+y shortcuts
CTRL+y is used as the entry point for Thorg in-subtree search commands. To remember this, think of the Y character representing the branching of a tree.
Pre-Req
Shortcuts Overview
Add the following to your keybindings.json:
{
"key": "ctrl+y ctrl+t",
"command": "thorg.search.quick.in-subtree.all"
},
{
"key": "ctrl+y ctrl+h",
"command": "thorg.search.quick.in-subtree.visited-since.2-hours-ago"
},
{
"key": "ctrl+y ctrl+d",
"command": "thorg.search.quick.in-subtree.visited-since.today"
},
{
"key": "ctrl+y ctrl+y",
"command": "thorg.search.quick.in-subtree.visited-since.yesterday"
},
{
"key": "ctrl+y ctrl+w",
"command": "thorg.search.quick.in-subtree.visited-since.1-week-ago"
},
{
"key": "ctrl+y ctrl+m",
"command": "thorg.search.quick.in-subtree.visited-since.1-month-ago"
},
{
"key": "ctrl+y ctrl+e",
"command": "thorg.search.quick.in-subtree.visited-since.1-year-ago"
},
Description of Shortcuts
-
CTRL+y+CTRL+t:- Assigned to
thorg.search.quick.in-subtree.allfor quick search across all notes in the current hierarchy. - To remember: Subtree, Thorg (All).
- Assigned to
-
CTRL+y+CTRL+h:- Assigned to
thorg.search.quick.in-subtree.visited-since.2-hours-ago - Searches within subtree for notes visited in the last 2 hours.
- To remember: Subtree, Hour.
- Assigned to
-
CTRL+y+CTRL+d:- Assigned to
thorg.search.quick.in-subtree.visited-since.today - Searches within subtree for notes visited today.
- To remember: Subtree, Day.
- Assigned to
-
CTRL+y+CTRL+y:- Assigned to
thorg.search.quick.in-subtree.visited-since.yesterday - Searches within subtree for notes visited since yesterday.
- To remember: Subtree, Yesterday.
- Assigned to
-
CTRL+y+CTRL+w:- Assigned to
thorg.search.quick.in-subtree.visited-since.1-week-ago - Searches within subtree for notes visited in the last week.
- To remember: Subtree, Week.
- Assigned to
-
CTRL+y+CTRL+m:- Assigned to
thorg.search.quick.in-subtree.visited-since.1-month-ago - Searches within subtree for notes visited in the last month.
- To remember: Subtree, Month.
- Assigned to
-
CTRL+y+CTRL+e:- Assigned to
thorg.search.quick.in-subtree.visited-since.1-year-ago - Searches within subtree for notes visited in the last year.
- To remember: Subtree, (Second letter of y)Ear (we used
yfor yesterday).
- Assigned to
Notes
Quick search with updated-since, shortcut setup
While for most use cases we expect visited-since commands to be the preferred time-based search filter (see why), there are times when updated-since commands such as:
can be better suited for your search needs. The main use case is when you're sharing a vault with other people and want to search according to updates that others have made. In such cases, you haven't visited the notes they modified, so your Visit History won't reflect their visits. However, note modifications are always shared. Therefore, updated-since commands are more useful for discovering others' interactions with the notes.
If you're NOT sharing the vault or simply want to focus on your own note interactions, then visited-since commands such as:
will be more useful to you.
If you have a workflow that depends on updated-since, set up shortcuts for the following commands: thorg.search.quick.updated-since.XXX and thorg.search.quick.in-subtree.updated-since.XXX. Pick an entry key and follow a pattern similar to the Thorg Ctrl+T Shortcut Setup - For Quick Search setup.
Children
- Ctrl+Y Shortcut Setup - For In-Subtree Searches
- Thorg Ctrl+T Shortcut Setup - For Quick Search
- Updated-Since Command Shortcut Setup
Backlinks