开源项目第165期:superfile — 颜值与效率并重的现代终端文件管理器

📅 2026/7/24 22:31:08 👁️ 阅读次数 📝 编程学习
开源项目第165期:superfile — 颜值与效率并重的现代终端文件管理器

引言

“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 superfile

macOS(Homebrew)

brewinstallsuperfile

安装完成后直接运行:

spf

退出按qEsc


功能特性

五面板布局

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
进入目录 / 打开文件Enterl
返回上级目录hBackspace
搜索当前目录/
显示/隐藏点文件.
排序选项o(支持名称/大小/修改时间)
反向排序R(Shift+r)

选择模式(类 Vim 可视模式)

superfile 有两种模式,当前模式显示在文件面板右下角:

  • Browser 模式(默认):单文件操作
  • Select 模式:批量操作

v在两种模式间切换。

在选择模式下:

操作快捷键
选择/取消当前项EnterL(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+DeleteDelete

固定目录到侧边栏:进入目标目录后按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主题名称
editorEnter打开文件时调用的编辑器
dir_editor打开目录时调用的编辑器
cd_on_quit退出时切换到最后路径
auto_check_update自动检查更新(每天最多一次)
default_open_file_preview启动时默认显示文件预览
show_image_preview文件预览中显示图片
file_size_use_si用 1000 进制(kB/MB)显示文件大小

横向对比:与同类终端文件管理器的比较

工具语言启动速度多面板图片预览学习曲线
superfileGo✅(多文件面板)低~中
rangerPython固定三列✅(需配置)
lfGo极快✅(需外部工具)
yaziRust极快✅(内置)低~中
nnnC极快有限中~高
mcC固定双面板

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 和技能工具,每一个都经过真实工作流验证。没有炒作,只有真正好用的工具。

访问我的个人主页,获取更多见解和有趣的产品。