imavinash365 downloadsAutomatically creates virtual links for text within your notes that match the titles or aliases of other notes in your vault. Create a glossary-like functionality, show unlinked mentions and transform them to real links.
[!NOTE] This project was originally forked from Obsidian Virtual Linker by Valentin Schröter, now maintained independently as Virtual Autolink.
This plugin automatically generates virtual links for text within your notes that match with the titles or aliases of other notes in your vault.
Features:
Usage demo (literally just typing text ;-):

By default, the plugin will automatically link all notes of your vault. All occurrences of a note title or alias will be linked in your current note text. If you only want to include notes of a specific folder, you can define this folder in the settings.
[!Note] The auto generated links are post-processed, so they neither change your note text to hard-coded links enclosed in brackets not appear in the graph view or reference counting.
avinashkanaujiya/obsidian-virtual-autolink as a beta pluginmain.js & manifest.json from ReleasesVaultFolder/.obsidian/plugins/virtual-autolink/You can toggle the matching of files between:
Furthermore, you can explicitly include or exclude specific files from being matched, by adding a tag to the file. You can change the tag in the settings, by default it is:
linker-include to explicitly include a filelinker-exclude to explicitly exclude a fileYou can also exclude all files in a specific folder by adding the folder to the exclude list in the settings.
[!Note] To include / exclude a file or folder, you can use the context menu on virtual links or in the file explorer.
You can toggle the case sensitivity of the matching. By default, the matching is case insensitive.
Often there are words with mainly capitalized letters, that should be matched case sensitive. By default, words with 75% or more capitalized letters are matched case sensitive. You can change this threshold in the settings.
You can also explicitly change the case sensitivity of a specific file by adding a tag to the file. You can change the tag in the settings, by default it is:
linker-match-case to make the matching case sensitivelinker-ignore-case to make the matching case insensitiveIf you want to define the case sensitivity for specific aliases, you can define the frontmatter property lists in a note:
linker-match-case with a list of names that should be matched only case sensitivelinker-ignore-case with a list of names that should be matched case insensitive
These property names can be changed in the settings.By default, the plugin will suppress several identical virtual link in the same note. Repeated identical matches on the same line are also collapsed to the first occurrence to reduce visual clutter. Furthermore, you can toggle to suppress the creation of virtual links to files, that are linked by real links in the current note.
You can toggle the matching mode between:
You furthermore have the option to suppress the link suffix for these matches to avoid cluttering your text.
By default, links to a note itself are suppressed. This link suppression might be a bit buggy and not work in all cases, e.g. in preview windows. If you like self-links to the note itself, you can toggle this behavior in the settings.
By default, links are created directly as you type. You can disable links for the current line you are typing.
[!Note] Deactivating the link creation for the current line is recommended when using the plugin with IME (input method editor) for languages like Chinese or Japanese, as the plugin might otherwise interfere with the IME.
Any created virtual link will be appended with this suffix. This is useful to distinguish between real and virtual links.
By default, the suffix is "🔗".
When a virtual link points to multiple candidate notes, clicking the virtual link itself now opens all matched notes in sequence. The numbered chooser also includes an oa entry first for the same action. Unless "Always show multiple references" is enabled, that chooser stays hidden until you hover the virtual link.
By default (and if the default styling is toggled on in the settings), the links inherit the surrounding text styling and only add a very faint underline-like rule. This intentionally overrides Obsidian's default link color without fighting nearby Markdown styling such as highlights and strikethrough. The multi-candidate chooser still waits for a short hover delay before appearing, which avoids flicker when the pointer only passes over a link. Display-text highlights still use the current theme accent. You can turn off this default styling in the settings.
To apply custom styling to the links, you can add a CSS-snippet at VaultFolder/.obsidian/snippets/virtualLinks.css file.
.virtual-link .virtual-link-a,
.virtual-link .virtual-link-open-all {
color: inherit !important;
text-decoration: none !important;
box-shadow: inset 0 -1px 0 0 color-mix(in srgb, currentColor 10%, transparent);
}
[!Note] If you want to apply custom styling, don't forget to turn off the "Apply default link styling" in the settings.
The plugin provides the following commands that you can use:
You can access these commands from the command palette or assign custom hotkeys to them in the settings.
When right-clicking on a virtual link, the following options are available in the context menu:
linker-exclude tag to the file, preventing it from being matched by Virtual Autolink.linker-include tag to the file, ensuring it is matched by Virtual Autolink.your-vault/.obsidian/plugins/.yarn to install dependenciesyarn dev to start compilation in watch mode.yarn build to compile your main.ts into main.js.It is recommended to use the Hot Reload Plugin for development.