DEV Community

Md Shahed Rahman
Md Shahed Rahman

Posted on

I built a terminal file picker to remove context switching between editor and shell

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)