引言
“Pretty fancy and modern terminal file manager”
这是「每日一个开源项目」系列的第 165 篇。今天的项目是superfile—— 一个用 Go 编写、基于 Bubbletea 框架的现代终端文件管理器,以颜值出众、快捷键设计贴近 Vim 用户习惯著称。
终端文件管理器的发展已经有很长的历史:mc(Midnight Commander)是 1994 年的经典,ranger靠 Python + 三列视图积累了大量用户,lf走轻量路线。2024 年出现的 superfile 问的是另一个问题:如果从今天的终端 UI 标准重新设计一个文件管理器,它应该长什么样?
19,170 颗 Star,创建于 2024 年 3 月,至今保持活跃更新。
你会学到什么
- superfile 的五面板布局设计及各面板的用途
- Vim 友好的快捷键体系(普通模式 vs 选择模式)
- 实用功能:图片预览、zoxide 集成、退出跳转目录(cd on quit)
- 主题与插件扩展方式
- 与 ranger、lf 等同类工具的横向对比
前提知识
- 基本的终端/命令行使用经验
- 了解 Vim 的基础概念(j/k 导航、可视模式)有助于理解快捷键设计,但不是必须的
项目背景
概述
superfile(命令别名spf)是一个 TUI(文本用户界面)文件管理器,用 Go 编写,基于 Charm 生态的 Bubbletea 框架构建界面。它的设计目标不是追求极简,而是在终端里提供视觉现代、操作高效的文件管理体验。
项目信息
- 作者: yorukot(+ 核心维护者 lazysegtree)
- 主语言: Go
- 许可证: MIT
- 官网: superfile.dev
- 命令:
spf
项目数据
- ⭐ GitHub Stars:19,170+
- 🍴 Forks: 587+
- 📄 许可证: MIT
- 📅 创建时间: 2024-03-19
安装
macOS / Linux(一键安装)
bash-c"$(curl-sLo- https://superfile.dev/install.sh)"Windows
# PowerShellpowershell-ExecutionPolicy Bypass-Command"Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://superfile.dev/install.ps1'))"# 或用 Wingetwinget install--id yorukot.superfile# 或用 Scoopscoop install superfilemacOS(Homebrew)
brewinstallsuperfile安装完成后直接运行:
spf退出按q或Esc。
功能特性
五面板布局
superfile 启动后显示五个面板,这是它区别于大多数同类工具的视觉特征:
| 面板 | 快捷键 | 功能 |
|---|---|---|
| 文件面板 | 默认焦点 | 文件浏览、操作的主区域,可创建多个 |
| 侧边栏 | s | 目录书签(Pinned)+ 磁盘/设备列表 |
| 进程面板 | p | 后台文件操作进度(复制/移动) |
| 元数据面板 | m | 文件详情,聚焦时显示文件夹大小 |
| 剪贴板面板 | — | 已复制/剪切的文件队列 |
底部还有一个命令执行栏,按:打开。
按f切换文件预览窗口的显示/隐藏;按F(Shift+f)切换所有底部面板。
多文件面板
这是 superfile 最常被提及的特性之一:一个屏幕里可以打开多个并排的文件面板。
n— 创建新文件面板w— 关闭当前文件面板Tab/L(Shift+l) — 切换到下一个面板Shift+Left/H(Shift+h) — 切换到上一个面板
这在做文件复制/移动(跨目录拖拽替代方案)或对比两个目录内容时特别方便。
Vim 风格导航
superfile 的快捷键对 Vim 用户友好:
文件面板导航:
| 操作 | 快捷键 |
|---|---|
| 向上移动 | ↑或k |
| 向下移动 | ↓或j |
| 进入目录 / 打开文件 | Enter或l |
| 返回上级目录 | h或Backspace |
| 搜索当前目录 | / |
| 显示/隐藏点文件 | . |
| 排序选项 | o(支持名称/大小/修改时间) |
| 反向排序 | R(Shift+r) |
选择模式(类 Vim 可视模式)
superfile 有两种模式,当前模式显示在文件面板右下角:
- Browser 模式(默认):单文件操作
- Select 模式:批量操作
按v在两种模式间切换。
在选择模式下:
| 操作 | 快捷键 |
|---|---|
| 选择/取消当前项 | Enter或L(Shift+l) |
| 向上选择移动 | Shift+↑或K(Shift+k) |
| 向下选择移动 | Shift+↓或J(Shift+j) |
| 全选当前目录 | A(Shift+a) |
注意:复制、剪切、删除可以在选择模式下使用;新建文件/文件夹、重命名只能在普通模式下使用。
文件操作
| 操作 | 快捷键 |
|---|---|
| 新建文件 | Ctrl+n |
| 新建文件夹 | Ctrl+n然后名称末尾加/ |
| 新建多层目录 + 文件 | 目录/子目录/文件名 |
| 重命名 | Ctrl+r |
| 复制 | Ctrl+c |
| 剪切 | Ctrl+x |
| 粘贴 | Ctrl+v |
| 删除(移到回收站) | Ctrl+d |
| 永久删除 | Ctrl+Delete或Delete |
固定目录到侧边栏:进入目标目录后按P(Shift+p)固定/取消固定。
图片预览
superfile 支持在文件预览窗格中直接渲染图片,通过配置项show_image_preview: true启用(默认关闭)。
支持的渲染方式取决于终端:
- 支持 Kitty 图形协议的终端(Kitty、WezTerm 等)可以显示高质量图片
- 其他终端使用 Unicode 半块字符近似渲染
cd on quit(退出跳转目录)
这是一个小但极其实用的功能:退出 superfile 时,终端路径自动切换到最后浏览的目录。
在config.toml里设置cd_on_quit: true,然后在.bashrc(或对应 shell 的配置文件)里添加一个简单的 shell 函数包装器:
# ~/.bashrcspf(){os=$(uname-s)if[["$os"=="Linux"]];thenexportSPF_LAST_DIR="${XDG_STATE_HOME:-$HOME/.local/state}/superfile/lastdir"fiif[["$os"=="Darwin"]];thenexportSPF_LAST_DIR="$HOME/Library/Application Support/superfile/lastdir"ficommandspf"$@"[[!-f"$SPF_LAST_DIR"]]||{."$SPF_LAST_DIR";rm-f--"$SPF_LAST_DIR">/dev/null}}之后spf就变成了一个「浏览+跳转」的工作流:打开 superfile → 浏览到目标目录 → 退出 → 直接在目标目录继续工作。
深度解析
插件系统
superfile 通过配置文件启用插件,目前提供三个官方插件:
Zoxide 集成(zoxide_support: true)
需要先安装 zoxide。启用后按z打开 zoxide 跳转模态框 —— 输入关键词,按方向键选择,回车跳转。对于经常在几十个项目目录间切换的工程师来说,这是使用频率极高的功能。
exiftool 元数据(metadata: true)
需要安装 exiftool。启用后在元数据面板显示文件的详细 EXIF 信息,对图片、视频、音频等媒体文件尤其有用。
MD5 校验(enable_md5_checksum: true)
无需额外依赖。在元数据面板实时计算并显示选中文件的 MD5 校验值。注意:大文件会读取整个文件来计算,性能影响明显。
主题系统
superfile 有一套独立的主题配置,支持自定义所有 UI 颜色:前景色、背景色、边框色、高亮色等。
查看主题列表:superfile.dev/list/theme-list
自定义主题:在主题目录新建.toml文件,参考官方主题格式配置颜色值。
配置文件
查看配置文件路径:
spf pl# pl = path locations,列出所有 superfile 相关文件路径主要配置项(config.toml):
| 配置项 | 说明 |
|---|---|
theme | 主题名称 |
editor | 用Enter打开文件时调用的编辑器 |
dir_editor | 打开目录时调用的编辑器 |
cd_on_quit | 退出时切换到最后路径 |
auto_check_update | 自动检查更新(每天最多一次) |
default_open_file_preview | 启动时默认显示文件预览 |
show_image_preview | 文件预览中显示图片 |
file_size_use_si | 用 1000 进制(kB/MB)显示文件大小 |
横向对比:与同类终端文件管理器的比较
| 工具 | 语言 | 启动速度 | 多面板 | 图片预览 | 学习曲线 |
|---|---|---|---|---|---|
| superfile | Go | 快 | ✅(多文件面板) | ✅ | 低~中 |
| ranger | Python | 慢 | 固定三列 | ✅(需配置) | 中 |
| lf | Go | 极快 | — | ✅(需外部工具) | 低 |
| yazi | Rust | 极快 | — | ✅(内置) | 低~中 |
| nnn | C | 极快 | — | 有限 | 中~高 |
| mc | C | 快 | 固定双面板 | — | 低 |
superfile vs ranger:ranger 更成熟、插件生态更大,但 Python 启动开销明显;ranger 的三列布局是固定的,superfile 的多文件面板可以自由控制数量。
superfile vs lf:lf 追求极简,配置也极为灵活(shell 脚本驱动),适合高级用户深度定制;superfile 开箱体验更完整,不需要配置就有好看的 UI 和基础功能。
superfile vs yazi:同样是 2024 年左右兴起的现代 TUI 文件管理器,yazi 用 Rust 实现,主打异步架构和性能;superfile 的多文件面板设计和更完整的开箱 UI 是差异化点。
适合谁使用
✅superfile 的优势场景:
- 想要好看的终端文件管理界面,不想花太多时间配置
- 需要同时对比/操作多个目录(多文件面板)
- Vim 用户迁移过来的快速上手
- 需要图片预览或 zoxide 集成的用户
⚠️可能不太适合的场景:
- 极度追求启动速度(lf/yazi/nnn 更快)
- 需要大量自定义命令和脚本集成(lf 更灵活)
- Windows 主力用户(当前 Windows 支持尚不完整)
参考资源
官方链接
- 🌟GitHub: yorukot/superfile
- 🌐官网: superfile.dev
- 📖教程: superfile.dev/getting-started/tutorial
- 🎨主题列表: superfile.dev/list/theme-list
- 🔌插件列表: superfile.dev/list/plugin-list
- ⌨️快捷键参考: superfile.dev/configure/custom-hotkeys
- 💬Discord: discord.gg/YYtJ23Du7B
总结
superfile 解决的是「我每天要用终端管理文件,但现有的工具要么太老旧,要么太难看,要么配置太复杂」这个问题。它的设计选择是:好看是第一优先级,功能完整但不臃肿,开箱即用但保留扩展空间。
几个值得记住的设计点:
多文件面板:大多数同类工具只有固定的一列或两列视图,superfile 让用户自由创建/关闭文件面板,这在同时操作多个目录时是真实的效率提升。
cd on quit:看起来是小功能,实际上改变了工作流——spf不只是「查看文件」,而是「浏览并定位,然后继续在目标目录工作」。配合 zoxide 插件,目录导航的摩擦感进一步降低。
显式五面板布局:进程面板(跟踪后台复制/移动)和剪贴板面板(查看待粘贴内容)在其他工具里通常是隐式的或根本不存在的,superfile 把它们放在视野里,减少了「我那个复制操作完成了没」的不确定感。
19k Star 和持续的社区贡献说明它找到了用户。如果你在找一个现代、好看、上手快的终端文件管理器,bash -c "$(curl -sLo- https://superfile.dev/install.sh)"是最快的验证方式。
探索 PrimeSkills —— 精选 AI agent 和技能工具,每一个都经过真实工作流验证。没有炒作,只有真正好用的工具。
访问我的个人主页,获取更多见解和有趣的产品。