Project-wide search
Search across every file in a project without leaving the editor.
Koi includes project-wide text search powered by ripgrep.
Searches run recursively from the current folder root and update as you type, making it quick to find text, symbols, function declarations, and other references across nested folders.
Searching a project
| Action | Result |
|---|---|
| ⌘ Command + ⇧ Shift + F | Open Project-Wide Search. |
Start typing to search across files under the current root. Results update as the search changes, so there is no separate search step or results page.
Search root
Project-wide search uses the same folder root as the File Explorer.
TODO mention line to set default file explorer root and file types to exclude in config here
-- file_explorer_root /Users/michael/Desktop/hackerman/code_samples
-- file_types_to_exclude .dmg, .app, .git, .ttf, .dylib, .so, .venv, .pyc, .zip, .egg, .DS_Store
Open or drop a folder into a window to make that folder the root for the window. Searches then run recursively from that folder.
Each window can have its own root, allowing separate windows to search different projects or folders independently.
If no folder has been opened, Koi searches from the default root, currently the ~/Desktop folder.
This also makes project-wide search useful outside a traditional project. You can search files and folders on the Desktop, or any other location, without first setting up a workspace or project.
Search results
Each result shows a matching line together with its file and location.
Select a result to open the file in a new tab. Koi scrolls directly to the matching line and highlights the matched text.
This makes search useful for navigation as well as discovery. Basically, find something anywhere under the current root and jump directly to it.
Finding code
Project-wide search searches recursively through nested folders, making it useful for locating code across an unfamiliar or larger codebase.
For example, search for a function name to find its declaration and references, an identifier to see where it is used, or a piece of text when you know what you are looking for but not which file contains it.
Because the search starts from the window's folder root, results remain scoped to the files you are currently working with.
Why?
Project-wide search provides a fast way to navigate a folder by its contents rather than its file hierarchy.
Instead of browsing through directories to find a particular file or symbol, search for the text itself and jump directly to the matching location.
The same workflow also works without a formal project. Open a folder when you want a specific search scope, or use the default root for broader searches across files on the Desktop.
Typical workflows
- Find a function or class declaration across a project.
- Locate every reference to an identifier.
- Search configuration files across nested folders.
- Find text when you do not remember which file contains it.
- Jump directly to a matching line in another file.
- Search files on the Desktop without opening a project first.