Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>search++New to Visual Studio Code? Get it now.
search++

search++

expiracy

|
450 installs
| (2) | Free
Unified popup search for files, folders, text, symbols, usages and commands. Inspired by JetBrains IDEs.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

search++

Search everything in VS Code from one popup.
Press Shift Shift to find files, folders, text, symbols, usages, and commands.
Inspired by Search Everywhere in JetBrains IDEs.

Marketplace version Marketplace installs Marketplace rating Support search++ on Ko-fi

Install · Search modes · Shortcuts · Settings · Changelog

search++ demo: searching everything, files with a line number, text with previews, symbols, usages, and commands

Why search++

  • One shortcut for every search. Files, folders, text, symbols, usages, and commands share one popup. Press Tab to change mode without losing your query.
  • Everything at a glance. The Everything tab groups the best matches from each source, so you can find a file, a line of text, or a command from one place.
  • Browse results without leaving the popup. Press Right Arrow to preview a result in a reusable editor tab. The matched line appears at the top, and the popup keeps focus.
  • Find usages in the same popup. Pick a symbol and press Shift+F12 to list its references. Type over the name to filter them by text or path.
  • Fast on large workspaces. File search uses an in-memory index with fzf matching, and text search streams results from ripgrep.
  • Respects your ignore files. .gitignore, .searchignore, and custom exclusion globs keep generated and vendored files out of your results.

Getting Started

  1. Install search++ from the VS Code Marketplace, or run code --install-extension expiracy.search-plus-plus.
  2. Press Shift+Shift to open the search popup.
  3. Start typing. All seven mode icons stay visible; click one or press Tab to cycle between search modes.

search++ requires VS Code 1.96 or a newer compatible release. See the changelog for release notes and upgrade changes.

Seven Search Modes

Mode What it searches
Everything Files, folders, text, symbols, and commands in grouped sections
Files File names and paths across your workspace
Folders Folders containing searchable files
Text File contents (powered by ripgrep)
Symbols Functions, classes, variables via VS Code's language providers
Usages Find a symbol, then list its semantic references
Commands All VS Code commands (built-in and from extensions)

Everything mode showing grouped file, text, and symbol results for 'preview'
Everything: grouped results from every source

Files mode Folders mode
Files: fuzzy path matching Folders: reveal a folder in the Explorer
Text mode Symbols mode
Text: ripgrep matches with line previews Symbols: from your language servers
Usages mode Commands mode
Usages: semantic references to a symbol Commands: every VS Code command

Features

Find Usages

Open Usages, type a symbol name, select the matching symbol, and press Enter to list its references. You can also select a symbol in Symbols or Everything, then press Shift+F12 or click its Find Usages button.

Usages of SearchMode filtered to references whose text or path contains 'providers'
Type over the symbol name to filter its references

The popup shows the selected symbol in its title and search box. This is one level deeper than choosing a symbol. Clear the search box to leave that lookup and search for another symbol. Clearing also removes a cached usage lookup when you switch modes.

To filter the current references, replace the symbol name directly with text or a filename. Select a result to jump to that exact reference. Clicking the Usages mode icon again returns to the original symbol query; returning to Symbols also restores that query.

From an editor, use search++: Find Usages in the command palette or context menu to find references to the symbol at the cursor. Without an editor symbol, the command opens the symbol chooser.

References come from VS Code's language providers. Coverage depends on installed language extensions and their indexing state; some language services start when you open a source file. Declarations appear when the provider includes them. Empty reference lists, unmatched filters, and language-provider failures have separate messages. Git-ignore, search-ignore, and custom exclusions also apply to references.

Preview a Result

Press Right Arrow on a file, text, symbol, or usage result to preview its file while the popup keeps focus. Text matches jump to their line and column, with the matched line at the top of the editor viewport where scrolling permits. Use the arrow keys to select another result and Right Arrow to preview it in the same additional editor tab, including when VS Code's preview tabs are disabled. Existing tabs are reused. Files you edit, pin, or keep open are preserved. Press Enter to open the selected result with its matching line at the top. Folders, commands, and informational rows have no file preview.

Previewing a text match: the editor shows the matched line while the popup stays open

Go to Line and Column

On the Files or Everything tab, append :line or :line:column to jump to a specific location. Line and column numbers start at 1:

searchModal.ts:42
searchModal.ts:42:5

Press Control+Return on macOS or Ctrl+Enter on Windows/Linux to autofill the selected file's path, then type the line and optional column after the inserted colon. The file remains searchable while you type a column, such as file.ts:42:. Only numeric line and column suffixes are interpreted as navigation.

Typing modal:222 in Files mode and previewing line 222 of searchModal.ts

Go to File

Click the Go to File button on a file, text, symbol, usage, or recent-history row to open its file in the current editor group. Matches retain their line and column, including a location typed as file:line:column, and show the matching line at the top of the editor viewport where scrolling permits. Confirmed opens are added to recent history.

Search Options

Toggle these while the search popup is open:

Toggle macOS Windows / Linux Description
Case Sensitive Option+C Alt+C Match exact case
Regex Option+R Alt+R Use regular expressions for text search
Match Whole Word Option+W Alt+W Only match complete words
Fuzzy Search Option+F Alt+F Use fuzzy matching for paths, commands, and symbol candidates
Exclude Git Ignored Option+G Alt+G Hide files excluded by .gitignore
Exclude Search Ignored Option+S Alt+S Hide files excluded by .searchignore

Regex applies to text search. Fuzzy matching applies to files, folders, commands, symbols, and usage previews; text search uses literal text or a regular expression. Match Whole Word uses literal matching for files, folders, commands, and usage previews, and filters symbol names returned by the language provider.

Absolute Path Support

On the Files, Folders, or Everything tab, enter a full filesystem path such as C:\Users\me\file.ts or /home/me/file.ts. Select the result to open the file or reveal the folder in the Explorer.

Search History

Recently opened files and locations appear when the search input is empty, except in Usages mode. History is stored per workspace. Use the remove button to delete an entry; deleted-file entries are pruned in the background when another file is added to history.

Notebook Support

Text search includes cell source in Jupyter .ipynb notebooks. Selecting a match opens the notebook. Navigation to the exact matching cell is unsupported.

Search Coverage

search++ requires VS Code 1.96 or a newer compatible release. Folder search shows folders containing files included by the current filters; empty directories do not appear. Symbol and usage results depend on installed language extensions and their indexing state.

Text search requires a filesystem workspace and a ripgrep executable on the extension host. Filesystem workspaces can be searched on a remote extension host when ripgrep is available there. Text search in virtual workspaces is unsupported.

Keyboard Shortcuts

macOS Windows / Linux Action Context
Shift+Shift Shift+Shift Open search (Everything tab) Global
Tab Tab Next search mode Popup open
Right Arrow Right Arrow Preview the selected file in one reusable tab Popup open
Shift+F12 Shift+F12 Find usages of the selected symbol Popup open
Option+C Alt+C Toggle case sensitive Popup open
Option+R Alt+R Toggle regex Popup open
Option+W Alt+W Toggle match whole word Popup open
Option+F Alt+F Toggle fuzzy search Popup open
Option+G Alt+G Toggle exclude git ignored Popup open
Option+S Alt+S Toggle exclude search ignored Popup open
Control+Return Ctrl+Enter Autofill file path Files or Everything tab

On macOS, Option is ⌥ and Control is ⌃. The popup's shortcut hints use the platform's modifier names.

Keymap extensions can claim the same shortcuts. If Shift+F12 performs another action, add this override to Preferences: Open Keyboard Shortcuts (JSON):

{
  "key": "shift+f12",
  "command": "searchPlusPlus.findUsages",
  "when": "searchPlusPlusModalOpen"
}

The rule applies while the popup is open. See VS Code's keyboard shortcut rules for how user overrides take precedence.

Commands

These commands are available from the command palette: Cmd+Shift+P on macOS or Ctrl+Shift+P on Windows/Linux.

Search

Command Description
search++: Open Search Open the search popup (Everything tab)
search++: Search Files Open directly to the Files tab
search++: Search Text Open directly to the Text tab
search++: Search Symbols Open directly to the Symbols tab
search++: Search Commands Open directly to the Commands tab
search++: Find Usages Find references to a selected symbol or the symbol at the editor cursor
search++: Reindex Workspace Rebuild the file index

Toggles and Navigation

These are also callable from the command palette and can be used in custom keybindings:

Command Description
search++: Toggle Case Sensitive Toggle case-sensitive matching
search++: Toggle Regex Toggle regular expression matching
search++: Toggle Only Git Trackable Toggle git-ignored file exclusion
search++: Toggle Exclude Search Ignored Toggle .searchignore file exclusion
search++: Toggle Fuzzy Search Toggle fuzzy matching
search++: Toggle Match Whole Word Toggle whole-word matching
search++: Next Tab Switch to the next tab
search++: Previous Tab Switch to the previous tab
search++: Preview Selected Result Preview the active result while keeping search focused
search++: Autofill File Path Autofill the selected file's path

Settings

All settings are under the searchPlusPlus namespace.

Setting Default Description
searchPlusPlus.excludeGitIgnored true Exclude git-ignored files by default
searchPlusPlus.excludeSearchIgnored true Exclude files matching .searchignore patterns by default
searchPlusPlus.excludePaths [] Glob patterns to always exclude (e.g. **/dist/**, **/*.min.js)
searchPlusPlus.maxResults 200 Maximum results per search mode
searchPlusPlus.debounceMs 300 Delay in ms before debounced text, symbol, usage, and command searches
searchPlusPlus.everywhere.sections ["files", "folders", "text", "symbols", "commands"] Sections shown on the Everything tab; array order controls display order
searchPlusPlus.everywhere.resultLimit 20 Maximum results per section on the Everything tab (1-200)

.searchignore

Create a .searchignore file in your workspace to exclude files and folders from search results without modifying .gitignore. The file uses identical syntax to .gitignore.

# Hide generated docs from search
docs/
*.pdf

# Hide large data files
data/**
*.csv

Nested .searchignore files are supported. Patterns are scoped to the directory containing the file, just like .gitignore. Changes reload the rules and rebuild the index automatically; a manual reindex is unnecessary.

Toggle this filter on or off with Option+S on macOS or Alt+S on Windows/Linux while the search popup is open.

How Exclusions Layer

Exclusions are applied additively from three sources:

  1. Git ignored -- .gitignore rules (Option+G on macOS, Alt+G on Windows/Linux)
  2. Search ignored -- .searchignore rules (Option+S on macOS, Alt+S on Windows/Linux)
  3. Custom patterns -- searchPlusPlus.excludePaths (always applied)

Rules apply within each workspace root. Git's internal metadata is excluded from workspace indexing and text searches, including when both toggles are off.

Status Bar

The status bar shows the current state of the file index. Click it at any time to trigger a manual reindex.

State Icon Meaning
Building Spinner A workspace snapshot is being built; the previous snapshot remains usable during rebuilds
Ready Search Index is ready; tooltip shows the file count
Stale Warning Bulk or directory changes detected; an automatic rescan is scheduled
Error Error Index build failed

Custom Keybindings

The extension sets context keys you can use in custom keybindings.json when clauses:

Context Key When it is true
searchPlusPlusModalOpen The search popup is open
searchPlusPlusFileTab The Files tab or Everything tab is active
searchPlusPlusEverythingTab The Everything tab is active

Example:

{
  "key": "ctrl+shift+f",
  "command": "searchPlusPlus.openText",
  "when": "!searchPlusPlusModalOpen"
}

How It Works

  • File and folder search uses an in-memory index built on activation, kept up to date by a file system watcher. Fuzzy matching is powered by fzf.
  • Text search spawns ripgrep with streaming JSON output for fast content search.
  • Symbol search delegates to VS Code's workspace symbol providers, so results depend on your installed language extensions.
  • Usages resolve semantic references for a selected symbol through VS Code’s language providers.
  • Command search indexes all registered VS Code commands (built-in and from extensions).

See the architecture documentation for component responsibilities, request flow, indexing, and backend behavior.

Contributing

Bug reports and pull requests are welcome on GitHub. See the contributing guide for local development, validation, and Marketplace releases.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft