Search
Finding a file, a folder or a definition by name — what the panel matches, what it doesn't, and where to search text instead.
The magnifier in the left sidebar, or Ctrl+Shift+F.
Type two characters or more and results appear as you type, in three groups: directories, files, and symbols — the functions, classes, structs and constants your project declares, along with the imports that pull them in. Click any of them, or arrow down and press Enter.
What it matches#
This is the part worth reading, because the box looks like every other search box you've used and behaves differently.
Search matches names and paths. It does not look inside your files.
- A file matches on its full path on disk, so
modules/searchnarrows to that folder as a side effect — and so does a folder name from above your project, which will match everything. - A symbol matches on the name it was declared with.
- A directory matches on its own folder name.
Searching TODO: fix this finds nothing, no matter how many times that appears in your code.
Searching handleClick finds where handleClick is defined — not the twelve places that call it.
Import rows are the exception: they carry the module path as their name, so a module or folder name
will turn up the files that import it.
Matching is case-insensitive and matches anywhere in the name, so get will find getUser,
widget and forget alike. There are no options: no regular expressions, no whole-word, no
case-sensitive toggle, no filtering by kind, and no way to exclude anything.
Searching text instead#
For text inside a file, open it and press Ctrl+F. That's a proper find-and-replace with
case-sensitive, whole-word and regular expression toggles.
Its scope is the one open file. There is no project-wide text search in the interface today.
The agent, on the other hand, can search your project's text and does it constantly — asking it "where do we set the retry limit?" will find the line. That's usually the faster route for a question the panel can't answer.
Reading the results#
Each group shows at most twenty rows, and nothing tells you when there were more. If a search feels oddly short, it has probably been trimmed — narrow it rather than scrolling.
Files carry a coloured language tag, symbols carry a kind badge and the line they're declared on, directories carry a folder glyph.
The arrow keys walk the whole list, across group boundaries, and wrap at both ends. Enter opens
whatever is highlighted, Escape clears everything.
Note
Nothing is highlighted until you press ↓ at least once, so typing and hitting Enter straight away does nothing. Press down first.
Searching the 3D view#
With the 3D view open, Ctrl+F outside the editor opens a small search card over the scene. Same
matching, same three groups — but selecting a result flies the camera to that node instead of
opening it. It's for finding your way around the shape of the project rather than for opening files.
Whatever you type in the sidebar panel also lights up matching nodes in the 3D scene as you type, which is often the quickest way to see how a name is spread across the project.
Hover, and jump to a definition#
Two things in the editor answer questions the search panel can't.
Hover a name and hold for a moment. A card tells you what it is, its signature, and how many places use it — counting callers separately from references for functions and methods. Move onto the card, or click the chevron, and it opens up to show where the name is defined and up to five of those places, each one clickable.
F12, with your cursor inside a name, opens the file where it's defined.
Note
Jumping to another file lands you at the top of it rather than on the definition, and it finds
that file by filename. If your project has several files with the same name — plenty of
projects have a dozen index.ts — you may land in the wrong one. Jumping within the file you're
already in works properly and scrolls to the line.
F12 also can't be rebound; it doesn't appear in the Keybindings tab.
Which languages this works for#
Symbols, hover cards and F12 need a grammar for the language, and eight are installed:
Rust, TypeScript, TSX, JavaScript (with JSX), Python, Go, HTML, CSS.
Every other file in your project is still indexed, still appears in the tree, and is still findable
by name. It just has no symbols — so hovering tells you nothing and F12 does nothing. Nothing
signals that a language is unsupported; it looks the same as a file with no matches.
When results look stale#
Edits reindex themselves in the background, so search catches up on its own within a moment of you saving.
Hover cards are cached and do not refresh — after heavy editing, or a reindex, a card may quote you a line number that has since moved. Reloading the window clears it.
Settings → General has a Re-index project button for the case where things look wrong across the board. It reports how many files it read when it's done.