Search in cwdio has three modes and one rule: whatever it finds is a row, not a report. Press Ctrl+Shift+F, type, and the hits can be copied, moved, renamed, edited or deleted right there — the same keys, the same undo, the same Recycle Bin as the file panels.
What it does
- Names. A case-insensitive substring match across the subtree, with
.*regex,Aamatch case andWwhole word toggles. Optional filters narrow by modified date (After/Before, with Today / Last 7 days / Last 30 days presets) and size (Min/Max, typed as10 MB). An empty name with a filter is a valid search — “every file over 100 MB” or “everything changed this week” needs no name typed. - Contents. A grep: literal text or a regular expression, case-insensitive by default, whole-word
optional. It honours
.gitignore— nested ignore files, the ancestors up to the repo root,.git/info/excludeand your global excludes, with git’s own precedence — never descends into.git, skips binary files, and applies the same date/size filters before it opens a file. Each hit shows its first matching line; a click expands every matching line (up to 30 per file), ripgrep-style, with the match highlighted. - Semantic. With an embedding model configured, a third mode indexes a folder’s files by name and text snippet and answers a plain-language question with ranked results. The index lives on your machine, is refreshed incrementally, and can be cancelled mid-build.
- Instant when Everything is running. On Windows with the free Everything search engine (voidtools) installed and running, a plain name search is answered from its real-time NTFS index — your query is passed to it verbatim, so Everything’s own syntax applies. A regex, case-sensitive, whole-word or filtered query falls back to cwdio’s own walk, because those are cwdio’s semantics, not Everything’s.
- Saved searches. One button saves the whole state — query, mode, the three toggles and the filters — as a chip that re-runs it with everything restored.
How to use it
- Focus a panel on the folder to search under and press Ctrl+Shift+F.
- Pick Names or Contents (or Semantic), type, and use the toggles and filters as needed.
- Move through the results with ↑/↓; Enter reveals the file in the panel. F5 copies and F6 moves the hit — or a Ctrl/Shift-click multi-selection — to the other panel, F8 or Del deletes it through the usual confirmation, F2 renames it in place, and F4 opens it in the editor — a content hit opens at its first matching line.
Two neighbours do related jobs. Ctrl+F is the quick filter: it narrows the current folder as you type (regex and match-case toggles; Esc clears). Ctrl+P is Go to file: a fuzzy finder over the active panel’s whole subtree, the VS Code habit — type a few letters of a path, Enter jumps to the file.
Where it looks
Search reads through the same providers as everything else, so it works inside an opened archive and on
an SFTP or FTP folder exactly as on a local drive. A WSL distribution’s files are enumerated by one
in-distro find, which is far faster than walking the share, and skips the Everything layer (Everything
indexes NTFS, not WSL). The fallback walk is breadth-first with bounded concurrency, so a deep or network
tree is not latency-bound, and it is cancellable at any moment.
What it deliberately does not do
- It does not build a background index of your drives. The only index cwdio keeps is the optional semantic one, per folder, on request. Name search relies on Everything’s index if you have it and a bounded walk if you do not.
- It never opens a file during a name search, and a content search never leaves the budgets above — a runaway grep across a whole disk cannot happen by accident.
- Search results are not a virtual folder you can leave open forever; they are an overlay you act from and dismiss.
Related
- Quick Look and preview — look at a hit without opening it.
- The AI assistant — the same search and grep tools, driven by a question.
- Keyboard shortcuts — every chord the results respond to.