The problem
When working on projects, I constantly found myself switching between:
terminal → to run commands or navigate
editor → to open and edit files
For large projects, this became even more annoying:
file trees get messy
searching inside IDE explorers slows me down
opening an editor just to change a few lines feels heavy
That context switching breaks flow more than it should.
The idea
I wanted a simple workflow:
Stay in the terminal → find a file → edit it → save → continue
So I built a CLI tool that combines:
file search
file selection
inline editing
all inside the terminal.
What it does
The tool lets you:
type part of a filename
instantly see matching files with full paths
navigate using arrow keys
select a file
edit it directly in the terminal
choose between:
overwrite mode
append mode
No editor launch. No switching context.
Example workflow
terminal-file-picker
enter project directory (. for current)
type to filter files
press Enter → focus results
navigate with ↑ ↓
select a file
edit inline
type :done to save
Why not just use existing tools?
Traditional editors (VS Code, etc.)
powerful but heavy for quick edits
File explorers
don’t support inline editing
CLI tools like fzf
great for selection
but don’t include editing
This tool focuses on fast, small edits without leaving the terminal.
Tech stack
Python
Textual (for terminal UI)
Textual made it possible to build a responsive keyboard-driven interface without dealing with low-level terminal handling.
Installation
pip install terminal-file-picker
Project link
PyPI:
https://pypi.org/project/terminal-file-picker/
https://github.com/sahedwave/terminal-file-picker
What’s next
I’m planning to improve:
fuzzy search (better matching)
UI responsiveness
editing experience
possibly adding a preview pane
Final thought
This started as a small utility for myself, but it turned into something I now use regularly.
If you work heavily in the terminal, I’d be interested to know:
Would you use something like this, or is switching to an editor still preferable?

Top comments (0)