Feature · Find & look inside

Search — by name, inside files, or by meaning

Find files by name (instant with Everything), grep inside them honouring .gitignore, or search by meaning. Results are rows you can copy, move, rename, delete.

Default shortcut: Ctrl+Shift+F · Ctrl+P · Ctrl+F Updated 15 August 2026 View as Markdown

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, Aa match case and W whole word toggles. Optional filters narrow by modified date (After/Before, with Today / Last 7 days / Last 30 days presets) and size (Min/Max, typed as 10 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/exclude and 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

  1. Focus a panel on the folder to search under and press Ctrl+Shift+F.
  2. Pick Names or Contents (or Semantic), type, and use the toggles and filters as needed.
  3. 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.

Questions

Does search read every file on my drive?

No. A name search reads only folder listings, and if the free Everything search engine (voidtools) is running, cwdio asks its index and gets an answer in milliseconds without walking anything. Only a content search opens files, and it skips what your .gitignore excludes, skips binaries, and works within explicit budgets — 500 result files, 20,000 folders, 256 MiB read in total, 2 MiB per file.

What is the difference between Ctrl+F and Ctrl+Shift+F?

Ctrl+F is a quick filter: it narrows the folder you are looking at as you type, with regex and match-case toggles, and Escape clears it. Ctrl+Shift+F is the search overlay: it walks the whole subtree by name or by content, with date and size filters, and returns rows you can act on.

Can I search inside a ZIP or on a server?

Yes. Search reads through the same providers the panels use, so a content search inside an opened archive or on an SFTP/FTP folder works the same way as a local one. The Everything shortcut applies to local NTFS drives only; everything else is walked directly.

What does semantic search need?

An embedding model configured in the AI panel — an OpenAI-compatible endpoint, or a fully local one such as Ollama or LM Studio with nomic-embed-text. cwdio then builds a per-folder index of file names and text snippets on your machine, refreshes only what changed, and answers a natural-language query with ranked rows. Without a model the mode is simply absent.