Midnight Captain – A midnight commander inspired file manager

Midnight Captain is an open-source terminal file manager that combines the classic dual-pane interface of Midnight Commander with Vim's flexible keybindings. Featuring SSH support, fuzzy search, and a modern TokyoNight theme, it offers a powerful alternative for terminal-centric developers.
Midnight Commander has always been my favorite terminal file manager. It's feature-rich, fast, and actually tries to be a file manager compared to modern alternatives. However, there are quite some features that I never used, and I couldn't configure a Vim bindings that works well for me.
With OpenCode, I can finally make my own terminal file manager. I borrowed the main design concepts from Midnight Commander and some behavior from NVim-Tree file explorer.
I hope you would like it, at least I do. Since this project is entirely vibe-coded, so I'm not going to accept PR from the community, but feel free to open issues and fork it.
Dual pane— navigate two directories side by side, copy/move between themTree expand— expand/collapse directories inline withl / h, nerd font iconsVim keybindings—j / k / h / l, gg / G, ctrl+d / ctrl+u Visual selection— select ranges withV, operate on multiple files at onceFile operations— copy, cut, paste, delete (with confirmation), renameSmart create—a creates a file or directory (trailing/ = dir, nested paths supported)Fuzzy search—space opens fuzzy search in current dir;:find searches recursivelyCommand palette—: opens a command prompt for power-user actionsGoto—:goto <path> with live directory listing, tab-complete, and~ expansionSSH— browse and operate on remote servers over SFTP via:ssh user@host Nerd font icons— file type icons, open/closed folder glyphsTokyoNight theme— easy on the eyes
- A terminal with Nerd Fonts support (recommended: JetBrainsMono Nerd Font, FiraCode Nerd Font)
- macOS or Linux
curl -fsSL https://raw.githubusercontent.com/duguyue100/midnight-captain/main/install.sh | bash
Downloads the correct pre-built binary for your OS and architecture from the latest GitHub Release and places it at ~/.local/bin/mc. If ~/.local/bin is not in your $PATH, the installer will tell you what to add.
Requires Go 1.22+.
git clone https://github.com/duguyue100/midnight-captain
cd midnight-captain
./install.sh --local-build
Runs make build and copies bin/mc to ~/.local/bin/mc.
make build # binary at bin/mc
./bin/mc
mc Launches in the current directory with dual panes.
| Key | Action |
|---|---|
j / k | Move cursor down / up |
ctrl+d / ctrl+u | Half-page down / up |
gg | Jump to top |
G | Jump to bottom |
tab | Switch active pane |
h | Collapse directory or jump to parent |
l / enter | Expand directory inline |
o | Navigate into directory (change cwd) |
. | Toggle hidden files |
| Key | Action |
|---|---|
V | Visual select mode — move to extend selection |
esc | Cancel / clear selection |
| Key | Action |
|---|---|
a | Smart create — trailing / = dir, nested paths supported |
r | Rename current file |
y | Yank (copy) to clipboard |
d | Cut to clipboard |
p | Paste into active pane |
x | Delete (prompts for confirmation) |
e | Open in nvim |
| Key | Action |
|---|---|
space | Fuzzy search in current directory |
: | Open command palette |
? | Show help overlay |
q | Quit |
Open with :, then type a command.
| Command | Description |
|---|---|
:ssh user@host | Connect to remote server (SFTP) in active pane |
:disconnect | Disconnect SSH, return to local filesystem |
:goto <path> | Jump to path with live completion |
:find | Recursive fuzzy search from current directory |
:sort name|size|date | Change sort order |
:hidden | Toggle hidden files |
:quit | Exit |
Source: Hacker News

















