Find files and text. Preview source. Open your editor.
A keyboard-driven terminal workbench for your filesystem, built in Rust. Runs on Linux and over SSH, with search and syntax highlighting built in.
Get started · Search · Keys · Nushell
Type to search, move through results, and read the source beside them. Query, path filters, and search scope stay visible while you work.
Build and install from source with Rust and Cargo:
git clone https://github.com/vimkim/dirpick.git
cd dirpick
cargo install --locked --path .
dirpickCargo installs into ~/.cargo/bin by default. Make sure that directory is on
your PATH. To try the checkout without installing, run cargo run --locked.
If you use Just, just sync installs into ~/.local/bin instead.
Launch inside a Git working tree to search its Project root. Outside Git,
Dirpick starts at your launch directory. No external rg command or service is
needed. Git is optional and used only to find the Project root.
Start typing in Query. Press Esc for Normal mode, then f, d, or c to
switch search modes. Query, filters, and settings carry across modes.
| Mode | Find | Act on a result |
|---|---|---|
| Files | Fuzzy path fragments, such as src main |
Enter opens the file in your editor |
| Directories | Fuzzy directory paths | Enter browses into the directory |
| Contents | Literal text, or regex with Space r |
Enter opens the matching line in Vim or Neovim |
Include and Exclude filter relative paths with regex. Uppercase characters
make a query or filter case-sensitive. Use Space h to reveal hidden entries
and Space i to include ignored paths. Both shortcuts work in Normal mode.
Contents mode groups matching lines by file. Select a match to see the surrounding source, with syntax colors and matching spans highlighted.
PageUp and PageDown scroll the preview independently of the result list.
Dirpick uses VISUAL, then EDITOR, then nvim. Opening a content match at
its exact line requires Vim or Neovim.
Directories mode previews immediate children. Press Enter to browse inside,
then use Left or H in Normal mode to move to the parent. Right browses one
directory toward the selected result. Space b restores the previous scope
and search.
Ctrl-Y sends the selected absolute path through OSC 52 and keeps the search
open. Clipboard support depends on your terminal and SSH client.
Dirpick starts in Insert mode with Query focused. Type immediately, including
spaces. Press Esc for Normal mode, then Space to discover shortcuts.
| Key | Action |
|---|---|
Esc |
Return to Normal mode or close help |
i or / in Normal |
Edit the focused field or Query |
Tab / Shift-Tab |
Move between Query, Include, Exclude, and Scope |
Ctrl-P / Ctrl-N or ↑ / ↓ |
Select a result in either input mode |
j / k in Normal |
Select the next or previous result |
← / → in Normal |
Browse to the parent or one directory toward the selected result |
Enter |
Open a file or browse a directory |
Space s in Normal |
Switch between Project root and launch CWD |
Space ? in Normal |
Show keyboard help and full status details |
Ctrl-C in either mode, or q in Normal |
Quit |
The interface supports terminals of at least 70 columns × 18 rows.
At 100 columns or more, Results and Preview sit side by side. In narrower terminals,
Space p in Normal mode switches panes. Set NO_COLOR for terminal default
colors.
See the complete key and search reference for field editing, scope history, filters, and terminal behavior.
Generate the bundled wrapper and load its dp command:
dirpick --print-nu-wrapper | save -f ~/.config/nushell/dirpick.nu
use ~/.config/nushell/dirpick.nu dp
dpSelect a directory and press Ctrl-G to change your invoking shell's directory
and exit. Enter continues browsing inside Dirpick. Add the use line to your
Nu config to keep dp available in future shells.
Dirpick does not edit shell configuration. See the Nushell reference for the JSON integration contract.
Search respects ignore files by default and reports partial results when it reaches a limit. Content search and previews support UTF-8 text files up to 2 MiB. Symlink entries are skipped during traversal.
- Search behavior, limits, and terminal details
- Build, tests, and installation checks
- Release acceptance record
- Third-party notices and dependency inventory
Dependency notices describe third-party licenses. They do not select a license for Dirpick itself.


