开源项目第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 复制代码
bash -c "$(curl -sLo- https://superfile.dev/install.sh)"

Windows

powershell 复制代码
# PowerShell
powershell -ExecutionPolicy Bypass -Command "Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://superfile.dev/install.ps1'))"

# 或用 Winget
winget install --id yorukot.superfile

# 或用 Scoop
scoop install superfile

macOS(Homebrew)

bash 复制代码
brew install superfile

安装完成后直接运行:

bash 复制代码
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 函数包装器:

bash 复制代码
# ~/.bashrc
spf() {
    os=$(uname -s)
    if [[ "$os" == "Linux" ]]; then
        export SPF_LAST_DIR="${XDG_STATE_HOME:-$HOME/.local/state}/superfile/lastdir"
    fi
    if [[ "$os" == "Darwin" ]]; then
        export SPF_LAST_DIR="$HOME/Library/Application Support/superfile/lastdir"
    fi
    command spf "$@"
    [[ ! -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-...

自定义主题:在主题目录新建 .toml 文件,参考官方主题格式配置颜色值。

配置文件

查看配置文件路径:

bash 复制代码
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 支持尚不完整)

参考资源

官方链接


总结

superfile 解决的是「我每天要用终端管理文件,但现有的工具要么太老旧,要么太难看,要么配置太复杂」这个问题。它的设计选择是:好看是第一优先级,功能完整但不臃肿,开箱即用但保留扩展空间。

几个值得记住的设计点:

多文件面板:大多数同类工具只有固定的一列或两列视图,superfile 让用户自由创建/关闭文件面板,这在同时操作多个目录时是真实的效率提升。

cd on quit :看起来是小功能,实际上改变了工作流------spf 不只是「查看文件」,而是「浏览并定位,然后继续在目标目录工作」。配合 zoxide 插件,目录导航的摩擦感进一步降低。

显式五面板布局:进程面板(跟踪后台复制/移动)和剪贴板面板(查看待粘贴内容)在其他工具里通常是隐式的或根本不存在的,superfile 把它们放在视野里,减少了「我那个复制操作完成了没」的不确定感。

19k Star 和持续的社区贡献说明它找到了用户。如果你在找一个现代、好看、上手快的终端文件管理器,bash -c "$(curl -sLo- https://superfile.dev/install.sh)" 是最快的验证方式。


探索 PrimeSkills ------ 精选 AI agent 和技能工具,每一个都经过真实工作流验证。没有炒作,只有真正好用的工具。

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

相关推荐
miofly1 小时前
GitHub 日榜趋势速报 | 2026-11-06
开源·github
Bayze14 小时前
开源了一个 MCP 工具:让 Cherry Studio 里的 AI 助理调度多家模型交叉复核
开源
SL_staff14 小时前
从文档工具到知识中枢:基于JVS数字底座构建企业级统一内容管理平台的技术实践
java·开源·全栈
翌日阳16 小时前
二十分之一的压缩比:Spatial Vivid 1.0 把 3DGS 全链路参考实现按 MIT 开源了
3d·开源
fthux18 小时前
Tick Rest,一个休息提醒工具的自我修养
macos·开源·swift
高调的涵涵18 小时前
300MB 预算,解压 2.2GB 的包
开源
AMASENSYS艾马斯19 小时前
矿山变频设备全生命周期管理与配件备件方案
产品·资讯
刘水生21 小时前
《你的 AI 为什么总在你没批准的时候动手?》
开源
鶴哥只手遮天21 小时前
《Redis 8.10.3 深度剖析》系列 · 第 1 章·全景与源码地图:版本谱系、构建体系、全局状态与启动链路
redis·后端·开源
分布式存储与RustFS1 天前
Longhorn 的卷备份别堆本地盘:用 RustFS 给它当 S3 备份目标
运维·云原生·开源·对象存储·分布式存储·s3·性能基准