Skip to content
| Marketplace
Sign in
Visual Studio>Tools>Insta Search
Insta Search

Insta Search

Mads Kristensen

madsk.net
|
83 installs
| (0) | Free
The fastest file search for Visual Studio. Searches the entire repo folder and not just the files in the solution and projects. Invoke by hitting Shift+Shift
Download

Insta Search - Quick File Search for Visual Studio

Build GitHub Sponsors

Download this extension from the Visual Studio Marketplace or get the CI build.


A fast, lightweight file search dialog for Visual Studio. Instantly find and open files in your solution or folder with wildcard support and smart history.

Search

Features

  • Instant search - Results appear as you type with wildcard support (test*.cs)
  • Query highlighting - Matching text is highlighted in results for easy identification
  • Smart history - Recently opened files appear first, prioritized by frequency
  • Live index - File changes are detected automatically via FileSystemWatcher
  • File icons - Visual Studio file icons for easy identification
  • Keyboard-driven - Navigate entirely with keyboard
  • VS themed - Follows your Visual Studio light/dark theme
  • Recent solutions - Search and open recent solutions/folders when no workspace is open

Usage

Double-tap Shift (press Shift twice quickly) to open the search dialog. You can also find it under Edit > File Search.

Search Patterns

Pattern Matches
dialog Any file containing "dialog"
test*.cs Files starting with "test" ending in ".cs"
*.xaml All XAML files
file.cs:42 Opens file.cs and navigates to line 42
dialog .cs .ts Files containing "dialog" with .cs or .ts extension
dialog -.xaml Files containing "dialog", excluding .xaml files
dialog \src\ Files containing "dialog" under a src folder
.cs \tests\ All .cs files under a tests folder

Search Filters

You can append space-separated modifiers to any search query:

  • Extension include (.ext): Only show files with the given extension. Use multiple to match any of them.
    • service .cs .ts → files containing "service" that end in .cs or .ts
  • Extension exclude (-.ext): Hide files with the given extension.
    • dialog -.designer.cs -.g.cs → files containing "dialog", excluding generated files
  • Path filter (\folder\): Only show files whose relative path contains the folder segment.
    • controller \api\ → files containing "controller" under an api folder
    • \src\ .cs → all .cs files under src (no text query needed)

Filters can be combined freely: service \src\ .cs -.designer.cs

Go-to-Line

Append :lineNumber to your search query to jump directly to a specific line after opening the file. For example:

  • program.cs:100 - Opens program.cs at line 100
  • test*:25 - Opens the first matching file at line 25

Keyboard Shortcuts

Key Action
Shift + Shift Open Insta Search
Up / Down Navigate results
Shift+Up / Shift+Down Extend selection
Page Up / Page Down Jump 10 items
Enter Open selected file(s)
Ctrl+Enter Open file and keep dialog open
Ctrl+Click Add/remove file from selection
Shift+Click Select range of files
Esc Close dialog

Multi-Select

Hold Ctrl while clicking to select multiple files, or hold Shift to select a range. You can also use Shift+Arrow keys to extend your selection from the keyboard. Press Enter to open all selected files at once.

Recent Solutions & Folders

When no solution or folder is open in Visual Studio, invoking Insta Search shows a list of your most recently opened solutions and folders instead. The list is pulled from Visual Studio's own MRU store, so it matches what you see on the Start Window.

Type to filter the list by name or path, then press Enter to open the selected item. Solutions (.sln, .slnx) and project files are opened as solutions, while folders are opened via Open Folder.

Mru

How It Works

Insta Search maintains an in-memory index of all files in your workspace. The index is built once when you first open the search dialog, then kept up to date automatically.

Indexing

When you invoke Insta Search for the first time in a workspace, it performs a parallel scan of the file system. Multiple threads pull directories from a shared work queue, which keeps all CPU cores busy without waiting for each directory level to complete. The following directories are excluded by default:

  • .git, .vs, .svn, .hg, .idea
  • bin, obj, Debug, Release
  • node_modules, packages, .nuget, TestResults

You can customize this list in Tools > Options > InstaSearch > General. Wildcard patterns like *.Migrations are also supported.

The resulting file list is cached in memory. Subsequent searches reuse this cache, making them nearly instant.

Options

Configure InstaSearch via Tools > Options > InstaSearch > General:

Setting Description
Ignored Folders Comma-separated list of folder names to exclude from indexing. Supports * wildcards (e.g., *.Migrations).
Ignored File Patterns Comma-separated file name patterns to exclude from results (e.g., *.designer.cs). Supports * wildcards.
Take over Go To All When enabled, Ctrl+T and Ctrl+, will open Insta Search instead of Go To All.

Changes to ignored folders take effect on the next search (the index is automatically refreshed).

Go To All Integration

By default, Insta Search intercepts the built-in Go To All command (Ctrl+T / Ctrl+,) when invoked via keyboard shortcut. This lets you use Insta Search as your primary file navigation tool without changing keybindings.

The interception only occurs when:

  • The Take over Go To All option is enabled (default: on)
  • The command is triggered via keyboard (holding Ctrl)

Invoking Go To All from the menu (Edit > Go To > Go To All) will still open the standard Visual Studio dialog, allowing you to access symbol search and other Go To All features when needed.

To disable this behavior, uncheck Take over Go To All in Tools > Options > InstaSearch > General.

Live Updates

After the initial index is built, a FileSystemWatcher monitors the workspace for file creates, deletes, and renames. When a change is detected (outside of ignored directories), the cache is marked as "dirty" rather than updated immediately. The next time you open the search dialog, the index is rebuilt.

This lazy approach means that build operations (which may touch hundreds of files in bin and obj) cause no processing overhead. Only one re-index happens, and only when you actually search.

If the FileSystemWatcher fails to start (for example, on a network drive), Insta Search falls back to the cached index. You can manually refresh by clicking the "Refresh" link in the status bar.

Searching

When you type a query, Insta Search filters the cached file list using case-insensitive substring matching. If your query contains wildcards (*), it splits the pattern into segments and checks that each segment appears in order within the filename. For example, test*.cs becomes ["test", ".cs"] and matches any filename that starts with "test" and ends with ".cs".

Space-separated modifiers (.ext, -.ext, \folder\) are parsed out of the query once per keystroke. The remaining text is the core search term. During matching, each file is checked against all active filters using simple EndsWith / IndexOf comparisons — zero allocations per file, same as the core substring/wildcard matching.

Results are ranked by:

  1. History score (files you have opened before are ranked higher)
  2. File type (commonly edited file types like .cs, .json, .xaml, .js are prioritized)
  3. Exact match (query matches filename with or without extension, e.g., dialog → Dialog.cs)
  4. Whether the filename starts with your query
  5. Shorter filenames first (closer matches where the query covers more of the name)
  6. Alphabetical order

Only the top 100 results are returned. File icons are fetched only for these final results, avoiding unnecessary work for matches that will not be displayed.

History

Insta Search tracks which files you open and how often. This history is stored per-workspace in the .vs/InstaSearch folder within your repository (the .vs folder is typically gitignored). When you open the search dialog with an empty query, your most frequently opened files are shown. When you type a query, files you have opened before are ranked higher in the results.

To reset the history and cache for a workspace, delete the .vs/InstaSearch folder:

.vs/
 └── InstaSearch/   ← delete this folder to reset

Performance

Insta Search is designed for speed. Benchmarks are included in the repository and run on every build to catch regressions.

Search Performance

Tested with synthetic file lists of varying sizes:

Pattern 1,000 files 10,000 files 50,000 files Allocations
Substring (service) 9 μs 117 μs 978 μs 0 B
Wildcard (*.cs) 14 μs 290 μs 2,225 μs 0 B
Wildcard (test*.cs) 13 μs 148 μs 928 μs 0 B

Wildcard patterns are pre-parsed once per search, so matching is allocation-free regardless of file count.

Indexing Performance

Cold indexing (no cache) on a synthetic directory tree:

Files Time Memory
100 2 ms 152 KB
1,000 12 ms 672 KB
5,000 21 ms 3,039 KB

Indexing scales linearly with file count. Real-world performance depends on disk speed and directory depth.

How can I help?

If you enjoy using the extension, please give it a rating on the Visual Studio Marketplace.

Should you encounter bugs or have feature requests, head over to the GitHub repo to open an issue if one doesn't already exist.

Pull requests are also very welcome, as I can't always get around to fixing all bugs myself. This is a personal passion project, so my time is limited.

Another way to help out is to sponsor me on GitHub.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft