MCPcopy Index your code
hub / github.com/darlal/obsidian-switcher-plus

github.com/darlal/obsidian-switcher-plus @6.1.4

Chat with this repo
repository ↗ · DeepWiki ↗ · release 6.1.4 ↗ · + Follow
910 symbols 2,253 edges 96 files 137 documented · 15%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Quick Switcher++ for Obsidian

Latest Release Total Downloads Build Workflow Status

Find what you're looking for faster, using Quick Switcher++. An Obsidian.md plugin that extends the functionality of the builtin "Quick Switcher". What's new?

Features

Note: the core Obsidian "Quick Switcher" plugin must remain enabled. Quick Switcher++ extends the core switcher and shares the same configuration settings.

Demo

Search Headings:

Launch Switcher++ using a shortcut, trigger Headings mode using the default # command, then enter the search text. Notice, different heading level matches are returned, along with Alias, Unresolved and regular filename matches.

Heading Mode gif

Symbol Navigation:

Launch Switcher++ using a shortcut, filter all files to find the Format your notes file, then trigger the symbol command (default @) to open the file directly to the External links section.

Symbol Mode gif

Editor Navigation:

Launch Switcher++ directly into editor mode using a shortcut, filter the currently open editors to find the Format your notes editor and make it active. Then use Switcher++ again to open the backlinks side panel.

Symbol Mode gif

Search headings instead of filename

Find the file you're looking for by searching through the headings contained in the file, instead of only searching the filename. This mode can be configured to search a) strictly through only the first H1 header, fallback to filename search if there's no match with the H1, b) through all headers, and c) respect the builtin Quick Switcher settings Show existing only, Show attachments, and Show all file types. By default, this mode will display the first top 50 results.

headings mode preview

Search headings configuration

Setting Description Default
Headings list mode trigger Character that will trigger headings list mode in the switcher. #
Search Headings Enabled: search and show suggestions for Headings

Disabled: Don't search through Headings | enabled | | Turn off filename fallback | Enabled: strictly search through only the headings contained in the file. Do not fallback to searching the filename when an H1 match is not found.

Disabled: fallback to searching against the filename when there is not a match in the first H1 contained in the file. | disabled | | Search all headings | Enabled: search through all headings contained in the file.

Disabled: only search through the first H1 in each file. | enabled | | Search Filenames | Enabled: search and show suggestions for filenames

Disabled: Don't search through filenames (except for fallback searches) | disabled | | Search Bookmarks | Enabled: search and show suggestions for Bookmarks

Disabled: Don't search through Bookmarks | enabled | | Max recent files to show | The maximum number of recent files to show when there is no search term. Set this to 0 to hide recent file suggestions in that case | 25 | | Exclude folders | List of folder path regex that will be used to exclude folders and their sub-directories from suggestion search. One per line. | None | | Hide Obsidian "Excluded files" | Enabled, suggestions for files that are in Obsidian\'s "Options > Files & Links > Excluded files" list will not be displayed. Disabled, suggestions for those files will be displayed but downranked. | disabled | | File extension override | Override the "Show attachments" and the "Show all file types" builtin, system Switcher settings and always search files with the listed extensions. | canvas |

Symbol Navigation (Canvas Nodes, Headings, Hashtags, Links, Embeddings)

View, filter, and navigate to any symbol (Canvas Nodes, Headings, Hashtags, Links, Embedding, Callouts) in a file directly from the Quick Switcher, whether the file is currently open in an editor or not. This feature can be triggered in two ways a) for the active file in the currently active editor pane, b) for the currently selected (highlighted) suggestion in the switcher itself.

For active file in the active editor pane

The Quick Switcher++: Open Symbols for the active editor command will always trigger Symbol mode for the current active file in the active editor pane (the file actively being edited). Meaning, when this command is triggered (either via a hotkey, command palette, or trigger character), the list of symbol suggestions will always be symbols from the active file in the active editor pane when the command was triggered.

Embedded Symbol mode: For any other file in the vault, open or not

The Symbol mode trigger character (default @) will trigger Symbol mode for the currently highlighted suggestion in the switcher. Meaning, when you open up the switcher and it's displaying a list of your recent files (or a list of file search results), the source file for whichever suggestion is highlighted when you type @ is the file whose symbols will be displayed. The resulting list of symbol suggestions will be from the file suggestion that was highlighted when the @ was typed. You can use the navigation keys to select (highlight) which file will be used as the source file before typing @.

For example: symbols can be viewed by opening Quick Switcher++, typing some characters to filter and/or using the arrow keys to select (highlight) the file of interest. Then, once the file of interest is selected/highlighted, type the trigger character (default @) to view the symbols for the file of interest.

symbol outline preview

Symbol Navigation Configuration

Setting Description Default
Symbol list mode trigger Character that will trigger symbol list mode in the switcher. This triggers a display of Symbols for the source file of the currently selected (highlighted) suggestion in the switcher. If there is not a suggestion, display results for the active editor. @
Symbol list mode trigger - Active editor only Character that will trigger symbol list mode in the switcher. This always triggers a display of Symbols for the active editor only. Note this trigger should be different from Symbol list mode trigger $ (note the trailing space)
List symbols as indented outline Enabled: symbols will be displayed in the (line) order they appear in the source text, indented under any preceding heading.

Disabled: symbols will be grouped by type: Headings, Tags, Links, Embeds. | enabled | | Open Symbols in new pane | Enabled: always open a new pane when navigating to Symbols.

Disabled: navigate in an already open pane (if one exists). | disabled | | Open Symbols in active pane on mobile devices | Enabled: navigate to the target file and symbol in the active editor pane, in other words, don't create a new editor pane.

Disabled: open a new pane when navigating to Symbols, even on mobile devices. | disabled | | Auto-select nearest heading | Enabled: in an unfiltered symbol list, select the closest preceding Heading to the current cursor position.

Disabled: the first symbol in the list is selected. | enabled | | Show Headings | Enabled: display Headings in the symbol list.

Disabled: don't show Headings in the symbol list | enabled | | Show Tags | Enabled: display Tags in the symbol list.

Disabled: don't show Tags in the symbol list | enabled | | Show Embeds | Enabled: display Embeds in the symbol list.

Disabled: don't show Embeds in the symbol list | enabled | | Show Links | Enabled: display Links in the symbol list. When enabled, the following settings become visible to further refine which types of links are displayed, Links to headings, Links to blocks.

Disabled: don't show Links in the symbol list | enabled | | Links to headings | Enabled: display links that point to a header, e.g [[file#header]]. This setting is only visible when Show Links is enabled.

Disabled: don't show Links to headers | enabled | | Links to blocks | Enabled: display links that point to a block, e.g [[file#^blockid]]. This setting is only visible when Show Links is enabled.

Disabled: don't show Links to blocks | enabled |

Navigate between open editors

View, and filter all of the currently open editors, and navigate to any of them from Quick Switcher++ by using the default edt command. Note: Symbol search works in this mode as well, so you can use both modes together e.g. edt @. The default builtin Quick Switcher behavior is used when no commands are present.

Editors/views from the side panels can be configured to be displayed in the list as well. For example, you could use this to navigate to the backlinks, file explorer, tag pane, etc.. system views/panes directly from the Quick Switcher.

editor search preview

Editor Navigation Configuration

Setting Description Default
Editor list mode trigger Character that will trigger editor list mode in the switcher. edt
Include side panel views Show the specified view types from the side panels in the switcher. Add one view type per line. Leave empty to never display side panel editors in the switcher. backlink

image

markdown

pdf | | Order default editor list by most recently accessed | Enabled: When there is no search term, order the list of open editors by most recent access time. | enabled |

Switch Workspaces

View, filter, and switch between configured Workspaces quickly using the default + command.

Note: the built-in system Workspaces plugin must be enabled for this mode to work.

Workspace configuration

Setting Description Default
Workspace list mode trigger Character that will trigger workspace list mode in the switcher. +

Search Obsidian Bookmarks

View, filter, and switch between Obsidian Bookmarks quickly using the default ' command.

Note: the built-in system Bookmarks plugin must be enabled for this mode to work.

Bookmarks configuration

Setting Description Default
Bookmarks list mode trigger Character that will trigger Bookmarks list mode in the switcher. '

Run Commands

View, search, and run Obsidian commands quickly using the default > command. When there is no search text, the suggestion list will display the list of pinned commands, followed by a list of commands that were recently executed. When there are no pinned commands and no recently executed commands, then all commands are displayed initially. When there is search text, the suggestion list will only display commands that matched the search text.

Note: the core Obsidian "Command Palette" plugin must remain enabled. The core plugin provides the capabilities to manage Pinned Commands.

Command configuration

Setting Description Default
Command list mode trigger Character that will trigger command list mode in the switcher. >
Max recent commands The maximum number of commands to save in the recent list. 25
Recent commands display order Select the sort order for recently used commands. desc

Related Items

View, filter, and navigate to files that are "related" to the selected input file directly from the Quick Switcher, whether the file is currently open in an editor or not. The supported relation types are: Outgoing links, Backlinks, and File system location. This feature can be triggered in two ways a) for the active file in the currently active editor pane, b) for the currently selected (highlighte

Extension points exported contracts — how you extend this code

ModeDispatcher (Interface)
(no doc) [2 implementers]
src/types/sharedTypes.ts
StringSearcher (Interface)
(no doc) [2 implementers]
src/search/searcher.ts
PerformanceRecord (Interface)
(no doc)
benchmark/modeHandler.perf.test.ts
EditorFixtureFilter (Interface)
(no doc)
src/__fixtures__/editorFilter.fixture.ts
EmptyTabLauncherConfig (Interface)
(no doc)
src/switcherPlus/emptyTabMonitor.ts
SwitcherPlus (Interface)
(no doc) [1 implementers]
src/types/sharedTypes.ts
InputCategory (Interface)
(no doc)
benchmark/modeHandler.perf.test.ts
InputExpectation (Interface)
(no doc)
src/__fixtures__/inputText.fixture.ts

Core symbols most depended-on inside this repo

makeLoc
called by 113
src/__fixtures__/fileCachedMetadata.fixture.ts
makeHeading
called by 112
src/__fixtures__/fileCachedMetadata.fixture.ts
push
called by 78
src/Handlers/symbolHandler.ts
makeLeaf
called by 71
src/__fixtures__/fixtureUtils.ts
parsedCommand
called by 63
src/switcherPlus/inputInfo.ts
makeSymbolSuggestion
called by 51
src/__fixtures__/suggestions.fixture.ts
renderSuggestion
called by 50
src/types/sharedTypes.ts
makeInputInfo
called by 42
src/__fixtures__/fixtureUtils.ts

Shape

Method 539
Function 194
Class 99
Interface 68
Enum 10

Languages

TypeScript100%

Modules by API surface

src/settings/switcherPlusSettings.ts108 symbols
src/__mocks__/obsidian/mockSetting.ts90 symbols
src/Handlers/handler.ts57 symbols
src/switcherPlus/switcherPlusKeymap.ts52 symbols
src/types/sharedTypes.ts48 symbols
src/types/obsidian/index.d.ts45 symbols
src/utils/utils.ts41 symbols
src/Handlers/symbolHandler.ts37 symbols
src/Handlers/headingsHandler.ts31 symbols
src/switcherPlus/modeHandler.ts30 symbols
src/Handlers/commandHandler.ts18 symbols
src/Handlers/relatedItemsHandler.ts17 symbols

For agents

$ claude mcp add obsidian-switcher-plus \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page