A temporary solution:
- Install VS Code and from within VS Code install the following extensions:
– Markdown notes
– Markdown preview enhanced (optional)
– Open in application
– Path autocomplete
- Open the vault directory (let’s call it “vault_dir”) in VS Code and keep it permanently open
- Tweak the vault_dir/.vscode/settings.json file (create it if necessary) to contain something like this:
{
"[markdown]": {
"editor.quickSuggestions": true,
"editor.wordBasedSuggestions": false,
},
"vscodeMarkdownNotes.noteCompletionConvention": "noExtension",
"vscodeMarkdownNotes.workspaceFilenameConvention": "uniqueFilenames",
"files.autoSave": "afterDelay",
"files.autoSaveDelay": 1000,
"path-autocomplete.triggerOutsideStrings": true
}
Then, if the need to work with external links arises, I use the “open in default app” command to open the .md file in the already running VS Code (if we hadn’t opened the vault directory in advance, VS Code wouldn’t open the file in the context of the vault directory, and suggestions would not work correctly or at all).
I use standard md local relative links: [blah blah](./local/relative/link)
. The “path autocomplete” VS Code extension kicks in as soon as I type “./” . To follow any such local link, do a comand-click on the link (in VS Code). It opens it in VS Code. If you don’t like that, do a right click on the tab with the newly opened file, and choose “open in application” (which is available thanks to the corresponding extension). So it is three clicks to open the file instead of one.
The autosave feature ensures that all changes are almost immediately visible in Obsidian, too.
Aften much hesitation, I decided to keep all external stuff next to the Obsidian vault, not in the vault. I then use paths of the form ../path/to/some/external/resource.xlsx
to access the external stuff. If I move the vault and its “sibling” directories together, links don’t break. (If you use folders in the vault, the the links would look like ../../path/to/resource
etc.)
Alternatively, you can invent your own URI scheme and write and install a very minimal custom URI handler into each of your systems. I successfully used a scheme of the form pavelbazant://path/relative/to/vault/root
. This works directly in Obsidian, but you don’t get the benefit of autocompletion and the approach feels rather non-standard and somewhat intrusive.