This is an Obsidian plugin which is another choice of Quick switcher. It offers various features, such as:
Custom searches)Custom searches)Reveal a folder in the file tree)You can download from Community plugins in Obsidian settings.

Custom searches enables you to create your original search commands. Search command settings are saved automatically when you finish editing (no Save button required).

| Name | Description |
|---|---|
| file | All files in the Vault |
| backlink | Markdown files that link to the current file |
| link | Files linked from the current file |
| 2-hop-link | 2-hop links from the current file |
| opened file | Files currently open in the window |
You can use the following names as a Sort priorities.
| Name | Description | Since |
|---|---|---|
| Perfect word match | Matches an exact word in the file name | 6.0.0 |
| Prefix name match | Matches when the file name or alias starts with the query | 6.0.0 |
| Name match | Matches when the file name or alias contains the query | 6.0.0 |
| Fuzzy name match | Fuzzy matches the file name or alias | 8.10.0 |
| Tag match | Matches when the query includes a tag name | 6.0.0 |
| Header match | Matches when the query includes a header name | 6.0.0 |
| Link match | Matches when the query includes an internal link name | 6.0.0 |
| Property match | Matches when the query includes a property name | 11.0.0 |
| Length | Orders by file name or alias length | 6.0.0 |
| Last opened | Orders by most recently opened | 6.0.0 |
| Last modified | Orders by most recently modified | 6.0.0 |
| Star | Orders starred files first | 6.0.0 |
| Alphabetical | Orders by file name or alias (A-Z) | 6.2.0 |
| Alphabetical reverse | Orders by file name or alias (Z-A) | 7.0.0 |
| Created latest | Orders by newest creation date | 7.0.0 |
| Created earliest | Orders by oldest creation date | 7.0.0 |
| (Tags split by comma) | Prioritizes files with the specified tags | 7.0.0 |
| (Extensions split by comma) | Prioritizes files with the specified extensions | 8.3.0 |
| (Property and sort order) | Orders by front matter property value | 13.27.0 |
Note Use
(Tags split by comma)like#hogeor#hoge,#huga.
Note Use
(Extensions split by comma)like.mdor.md,.canvas.
Note Use
(Property)like@<property>(@<property>:asc) or@<property>:descfor descending order. For arrays, the first element is used; missing values sort last.
You can show the relative updated period in suggestions. Configure it per search command.
Relative updated period source (do not show / last modified / created time / property)Property, set the front matter key in Property key for relative updated period
"ho ge" matches only ho ge and does not match hoge.ho ge matches both ho ge and hoge.\" to search for literal quote characters.Example: Suppose there are three files:
hoge.mdhogemdhogeThe input hoge -md will suggest only hoge.
Additionally, you can specify a custom string as the exclude prefix using the Exclude prefix setting.
@key:value or @key: searches by front matter property@status:done matches files whose status property contains done.@status: matches files whose status property has a non-null value set.keyword @status:done matches files whose name contains keyword AND whose status is done.@status: -@status:done matches files that have a status value but it does NOT contain done.Note Front matter must be loaded for this to work (e.g., enable
Search by propertyorShow front matterin the search command settings).
<cd> means the current directoryIf the path of the active file is "/usr/local/vault/notes", the query "<cd> obsidian" will be interpreted as "/usr/local/vault/notes obsidian".

Tab/Shift+Tab as default"ho ge" only matches ho ge not hogeho ge matches both ho ge and hoge\" to search for literal quote charactersIf you want to show heading level labels (H1/H2, etc.) instead of bullets in header search, you can do so with CSS.
.another-quick-switcher__item__title__header {
list-style: none;
}
.another-quick-switcher__item__title__header::before {
padding-right: 5px;
font-weight: bold;
color: darkcyan;
opacity: 0.4;
}
.another-quick-switcher__item__title__header1::before {
content: "H1";
}
.another-quick-switcher__item__title__header2::before {
content: "H2";
}
.another-quick-switcher__item__title__header3::before {
content: "H3";
}
.another-quick-switcher__item__title__header4::before {
content: "H4";
}
.another-quick-switcher__item__title__header5::before {
content: "H5";
}
.another-quick-switcher__item__title__header6::before {
content: "H6";
}
This feature requires ripgrep and set the executable command to "Ripgrep command" option.

It sorts results by modified time descending.
| Command | Description | Default Hotkey |
|---|---|---|
| Search | Execute search | TAB |
| Preview | Preview selected file | Ctrl+, |
| Toggle input focus | Switch focus between search query and path input | (customizable) |
| Previous search history | Move to the previous query in history | (customizable) |
| Next search history | Move to the next query in history | (customizable) |
| Clear input | Clear the search query input | (customizable) |
| Clear path | Clear the path input | (customizable) |
| Set ./ to path | Set current directory to path input | (customizable) |
Note: If you want to search in real-time, please set the "Grep search delay milli-seconds" option to 1 or more.
You can launch the Grep dialog directly from the main Quick Switcher with the current query carried over. This allows for seamless transition from file searching to content searching.
hello world finds content containing both "hello" and "world")Detailed hotkeys customization is available for each dialog.

The new Backlink search enables displaying all occurrences in the same file and listing the corresponding lines' text.
The new Link search enables displaying all occurrences in the same file and listing the corresponding lines' text.
"In File search" allows you to search for a specific line within a file using a search keyword and displays it along with the surrounding lines.
"hello world" only matches hello world not lines containing both hello and world separatelyhello world matches lines containing both hello and world anywhere in the line\" to search for literal quote characters (e.g., search \"quote finds search "quote)You can show the backlinks about the suggestion in the dialog. (Default hotkey is Mod h)
It can show backlinks from not only existing notes but also phantom(not existing) notes.

You can navigate outgoing/backlinks without leaving the dialog by using the "show links", "show backlinks", "navigate forward", and "navigate back" commands.

You can preview the file without closing the dialog. (Default hotkey is Mod ,)
While previewing, you can scroll the note with scroll preview up / scroll preview down (hotkeys are configurable). It also responds to scrolling from pointing devices.
It shows a floating view that doesn't distract the contents. Additionally, it makes the editor state before opening the dialog after previewing files and closing the dialog.
Auto Preview shows a preview automatically as you move the selection, without manually triggering Preview.
| Dialog | Auto preview on selection | Delay setting | Toggle command | Notes |
|---|---|---|---|---|
| Main dialog (search commands) | Yes (per command) | Yes | Yes (toggle auto preview) |
Configured per search command |
| Grep dialog | Yes | Yes | No | Enable in settings |
| Backlink dialog | Yes | Yes | No | Enable in settings |
| Header dialog | Yes | No | Yes (toggle auto preview) |
Auto preview uses floating mode |
| Link dialog | Yes | No | Yes (toggle auto preview) |
Auto preview uses floating mode |
| In File dialog | Yes | No | Yes (toggle auto preview) |
Auto preview uses floating mode |
Settings reference (UI labels):
Auto preview, Auto preview delay milli-secondsAuto preview, Auto preview delay milli-secondsAuto preview, Auto preview delay milli-secondsAuto preview in the floating modeAuto preview in the floating modeAuto preview in the floating modeThe "Move file to another folder" command allows you to quickly move the current file to a different folder with enhanced sorting capabilities and smart search features.
<VAULT_ROOT> so you can move files directly to the root| Option | Description |
|---|---|
| Recently used | Folders you've recently moved files to appear at the top |
| Alphabetical | Sort folders alphabetically (A-Z) |
| Alphabetical reverse | Sort folders in reverse alphabetical order (Z-A) |
| Setting | Description | Default |
|---|---|---|
| Folder sort priority | Choose how folders are sorted in the move dialog | Recently used |
| Recently used folders file path | Customize where the folder usage history is stored* | (auto) |
| Max recently used folders | Maximum number of recently used folders to remember | 10 (range: 5-50) |
| Exclude prefix path patterns | Exclude certain folder paths from appearing in the move dialog | (none) |
* When left empty, defaults to .obsidian/plugins/obsidian-another-quick-switcher/recently-used-folders.json
You can multi-select suggestions in the main Quick Switcher, Backlink search, and Grep.
Tip: Assign convenient keys in Settings to quickly mark a range (e.g., bind "check/uncheck and next").

Another Quick Switcher bundles its own command palette dialog so you can search and execute Obsidian commands with the same fast scoring model and dialog hotkeys.
copy command id hotkey to quickly grab an internal command ID for automation or scriptinghttps://github.com/user-attachments/assets/eb2bf1bc-08b8-4084-b4b7-450d737b8e95
| Setting | Description | Default |
|---|---|---|
| History mapping file path | Vault-relative path for the JSON file that stores last used commands and per-query favorites | .obsidian/plugins/obsidian-another-quick-switcher/command-history.json |
| Max history retention days | Remove entries from the history when a command hasn't been run within this many days (0 = keep all) | 10 |
Below are dialog-specific command tables with default keybindings.
The MC column indicates multi-check support: "✅" applies to all checked items, "⛔" affects only the current selection, and "-" is not applicable (e.g., toggle commands).
| Command | Default Keybinding | MC |
|---|---|---|
| open | Enter |
✅ |
| open in new tab | Mod+Enter |
✅ |
| open in new pane (horizontal) | Mod+- |
✅ |
| open in new pane (vertical) | Mod+i |
✅ |
| open in new window | Mod+o |
⛔ |
| open in popup | (none) | ⛔ |
| preview | Mod+, |
⛔ |
| toggle auto preview | (none) | - |
| scroll preview up | (none) | ⛔ |
| scroll preview down | (none) | ⛔ |
| create | Shift+Enter |
⛔ |
| create in new tab | Mod+Shift+Enter |
⛔ |
| create in new pane (horizontal) | (none) | ⛔ |
| create in new pane (vertical) | (none) | ⛔ |
| create in new window | Mod+Shift+o |
⛔ |
| create in new popup | (none) | ⛔ |
| check/uncheck | (none) | - |
| check/uncheck and next | (none) | - |
| check/uncheck all | (none) | - |
| uncheck all | (none) | - |
| insert to editor | Alt+Enter |
✅ |
| open in default app | (none) | ✅ |
| show in system explorer | (none) | ✅ |
| open in google | Mod+g |
⛔ |
| open first URL | Mod+] |
✅ |
| close if opened | (none) | ✅ |
| show links | Mod+l |
⛔ |
| show backlinks | Mod+h |
⛔ |
| show all results | Shift+Alt+a |
⛔ |
| navigate back | Alt+ArrowLeft |
⛔ |
| navigate forward | Alt+ArrowRight |
⛔ |
| previous search history | (none) | ⛔ |
| next search history | (none) | ⛔ |
| launch grep | (none) | ⛔ |
| copy file vault path | (none) | ⛔ |
| copy absolute file path | (none) | ⛔ |
| up | Mod+p |
⛔ |
| down | Mod+n |
⛔ |
| clear input | Mod+d |
⛔ |
| replace input | Tab |
⛔ |
| dismiss | Escape |
⛔ |
| Command | Default Keybinding | MC |
|---|---|---|
| up | Mod+p |
⛔ |
| down | Mod+n |
⛔ |
| open in default app | (none) | ⛔ |
| dismiss | Escape |
⛔ |
| Command | Default Keybinding | MC |
|---|---|---|
| up | Mod+p |
⛔ |
| down | Mod+n |
⛔ |
| move to header | Enter |
⛔ |
| clear input | Mod+d |
⛔ |
| move to next hit | Tab |
⛔ |
| move to previous hit | Shift+Tab |
⛔ |
| toggle auto preview | Mod+, |
⛔ |
| scroll preview up | (none) | ⛔ |
| scroll preview down | (none) | ⛔ |
| insert all to editor | Alt+Shift+Enter |
⛔ |
| dismiss | Escape |
⛔ |
| Command | Default Keybinding | MC |
|---|---|---|
| open | Enter |
✅ |
| open in new tab | Mod+Enter |
✅ |
| open in new pane (horizontal) | Mod+- |
✅ |
| open in new pane (vertical) | Mod+i |
✅ |
| open in new window | Mod+o |
⛔ |
| open in popup | (none) | ⛔ |
| check/uncheck | (none) | - |
| check/uncheck and next | (none) | - |
| check/uncheck all | (none) | - |
| uncheck all | (none) | - |
| show all results | Shift+Alt+a |
⛔ |
| preview | Mod+, |
⛔ |
| scroll preview up | (none) | ⛔ |
| scroll preview down | (none) | ⛔ |
| up | Mod+p |
⛔ |
| down | Mod+n |
⛔ |
| dismiss | Escape |
⛔ |
| Command | Default Keybinding | MC |
|---|---|---|
| open | Enter |
⛔ |
| open in new tab | Mod+Enter |
⛔ |
| open in new pane (horizontal) | Mod+- |
⛔ |
| open in new pane (vertical) | Mod+i |
⛔ |
| open in new window | Mod+o |
⛔ |
| open in popup | (none) | ⛔ |
| show all results | Shift+Alt+a |
⛔ |
| preview | Mod+, |
⛔ |
| toggle auto preview | (none) | - |
| scroll preview up | (none) | ⛔ |
| scroll preview down | (none) | ⛔ |
| up | Mod+p |
⛔ |
| down | Mod+n |
⛔ |
| dismiss | Escape |
⛔ |
| Command | Default Keybinding | MC |
|---|---|---|
| up | Mod+p |
⛔ |
| down | Mod+n |
⛔ |
| insert to editor | (none) | ⛔ |
| show all results | Shift+Alt+a |
⛔ |
| toggle auto preview | Mod+, |
⛔ |
| scroll preview up | (none) | ⛔ |
| scroll preview down | (none) | ⛔ |
| dismiss | Escape |
⛔ |
| Command | Default Keybinding | MC |
|---|---|---|
| open | Enter |
✅ |
| open in new tab | Mod+Enter |
✅ |
| open in new pane (horizontal) | Mod+- |
✅ |
| open in new pane (vertical) | Mod+i |
✅ |
| open in new window | Mod+o |
⛔ |
| open in popup | (none) | ⛔ |
| check/uncheck | (none) | - |
| check/uncheck and next | (none) | - |
| check/uncheck all | (none) | - |
| uncheck all | (none) | - |
| preview | Mod+, |
⛔ |
| scroll preview up | (none) | ⛔ |
| scroll preview down | (none) | ⛔ |
| clear input | Mod+d |
⛔ |
| clear path | Alt+d |
⛔ |
| set ./ to path | Alt+c |
⛔ |
| toggle input | (none) | ⛔ |
| previous search history | (none) | ⛔ |
| next search history | (none) | ⛔ |
| up | Mod+p |
⛔ |
| down | Mod+n |
⛔ |
| search | Tab |
⛔ |
| dismiss | Escape |
⛔ |
| Command | Default Keybinding | MC |
|---|---|---|
| up | Mod+p |
⛔ |
| down | Mod+n |
⛔ |
| copy command id | (none) | ⛔ |
| dismiss | Escape |
⛔ |
The following commands were removed to avoid conflicts with preview:
open in new tab in backgroundopen all in new tabsinsert to editor in backgroundinsert all to editorThe first two were removed from the main/backlink/link/grep dialogs; the last two were removed from the main dialog.
Alternatives with multi-select:
open in new tab in background -> use check/uncheck for multiple selection and run openopen all in new tabs -> use check/uncheck all to select all and run openinsert to editor in background -> use check/uncheck for multiple selection and run insert to editorinsert all to editor -> use check/uncheck all to select all and run insert to editorIn v13, we removed Link search from Preset search commands. Please see #275 for details about this decision. If you need the previous Link search functionality, you can add it to Search commands with the configuration shown in the image below.
Please read a "🔥 Breaking changes" section in the Release note.
Please read a "🔥 Breaking changes" section in the Release note.
Please read a "🔥 Breaking changes" section in the Release note.
It both supports desktop and mobile.
[!NOTE] Please note that I am not currently using the mobile version of Obsidian, so I cannot verify this issue myself. As a result, addressing this bug will have a low priority.
Please create a new issue.
Another Quick Switcher provides a public API that allows external scripts (e.g., Templater) to programmatically open the file picker dialog and retrieve the selected file(s).
// Get the plugin instance
const aqs = app.plugins.plugins["obsidian-another-quick-switcher"];
// Open the file picker with a specific search command
const files = await aqs.api.pickFile("Recent search");
if (files) {
// files is TFile[] - array of selected files
// Single selection returns array with one element
// Multi-selection (check/uncheck) returns array with multiple elements
console.log(files.map((f) => f.path));
} else {
// User cancelled the dialog
}
api.pickFile(commandName: string): Promise<TFile[] | null>Opens the file picker dialog with the specified search command and returns the selected file(s).
Parameters:
commandName - The name of the search command to use (e.g., "Recent search", "File name search"). This must match a command name defined in Another Quick Switcher settings.option - Optional parameters:query: An initial search query to pre-fill in the dialog's input box.Returns:
Promise<TFile[]> - Array of selected files when file(s) are selectedPromise<null> - When the dialog is cancelledThrows:
Error - If the specified command name is not found in settingsapi.getAvailableCommandNames(): string[]Returns the list of available search command names that can be used with pickFile().
<%*
const aqs = app.plugins.plugins['obsidian-another-quick-switcher'];
const files = await aqs.api.pickFile("File name search");
if (files && files.length > 0) {
const file = files[0];
tR += `[[${file.basename}]]`;
}
%>
Note This API is experimental and may change in future versions.
Sorry, I would not accept the pull requests except for the following cases.
git config core.hooksPath hooks
Bun is required.
bun install --frozen-lockfile --ignore-scripts
bun dev
Run Release Action manually.
2-hop-link are outgoing links in the current file, and files that have outgoing links to them.
For example, If there are relations as follows,
flowchart LR
D[Dog] --> A[Animal]
C[Cat] --> A
O[Owl] --> A
2-hop-link from the "Dog" is as follows.
flowchart LR
D[Dog]:::focus --> A[Animal]
D[Dog]:::focus --> C[Cat]
D[Dog]:::focus --> O[Owl]
classDef focus fill:#f96
More complicated example.
flowchart LR
Dog:::focus --> Animal
Dog --> Masaru
Zagitova --> Masaru
Masaru --> Akita-inu
Cat --> Animal
Owl --> Animal
Tama --> Cat
Mike --> Cat
Animal --> Zoo
Zoo --> Animal
Mahjong --> Zoo
Animal --> Coffee
classDef focus fill:#f96
2-hop-link from the "Dog" is as follows.
flowchart LR
Dog:::focus --> Animal:::focus
Dog --> Masaru:::focus
Zagitova:::focus --> Masaru
Masaru --> Akita-inu
Cat:::focus --> Animal
Owl:::focus --> Animal
Tama --> Cat
Mike --> Cat
Animal --> Zoo
Zoo:::focus --> Animal
Mahjong --> Zoo
Animal --> Coffee
classDef focus fill:#f96