FindItFaster: Sonar
Full-window file and content search for VS Code, powered by
FFF.

7,683 files, 155 MB: index built in 50 ms; a keystroke costs 2-17 ms in file search and 21-118 ms
in content search, plus 6 ms to draw. Nothing is truncated.
Requirements
|
|
| VS Code |
1.90 or newer |
| Platform |
Linux x64 with glibc, including WSL2 |
| Workspace |
An open folder on a real disk; the first folder is the search root |
Commands
| Command |
Keybinding |
| Search file |
ctrl+shift+j |
| Search within files |
alt+shift+j |
| Search within current file |
- |
| Search within open files |
- |
| Search git history |
- |
| Resume last search |
- |
| Previous query |
ctrl+p |
| Next query |
ctrl+n |
Up and Down move, Enter opens. An editor selection seeds the query.
- Search file: paths holding the letters of every word in order, as fzf matches.
- Search within files: literal text, not a regex. Skips binaries and files over 10 MB.
- Current file / open files: includes unsaved edits.
- Git history: every word against hash, subject, author and date. Enter opens the diff.
Smart-case: a lowercase query ignores case. The counter reads 5/8 for files (kept / indexed) and
1681 · 5/8 for content (hits, then files searched).
Query syntax
Search file and Search within files split the query at //: pattern left, file filter right.
| Token |
Matches |
.c or c |
*.c |
.{c,h} |
*.c and *.h |
!py |
everything except *.py |
*.c, !*_test.c |
used as the glob it is |
src/**, !vendor/ |
path globs; a bare dir/ matches at any depth |
@web |
excludes every entry of the web group (see Settings) |
todo // .c "todo" in C files
handler // py !*_test.py "handler" in Python, skipping tests
config // *.json !dist/ JSON outside dist/
// .py every .py file (Search file only)
todo // @web "todo" outside the "web" group's directories
A malformed token is an error. .gitignore is honored.
Settings
| Setting |
Effect |
fif-sonar.general.excludeDirectoryGroups |
Named sets of directories and globs, expanded by @group. |
fif-sonar.general.searchIgnoredDirectories |
Directories searched despite .gitignore, e.g. ["dist", "node_modules/@types"]. |
fif-sonar.findFiles.defaultGroups |
Groups applied to every Search file run. |
"fif-sonar.general.excludeDirectoryGroups": {
"web": ["dist", "coverage", "*.min.js"],
"generated": ["build", "target", "*.pb.go"]
},
"fif-sonar.findFiles.defaultGroups": ["generated"]
dist becomes !**/dist/**; an entry with * or ? is used as the glob it is.