开源项目第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

退出按 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 函数包装器:

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

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

相关推荐
fthux2 小时前
“装闭”,让装修套路“装”不下去
人工智能·ai·开源·github·open source
杨充5 小时前
11.DDD与战术建模
设计模式·开源·代码规范
杨充5 小时前
12.综合实战图片框架
设计模式·开源·代码规范
DisonTangor6 小时前
【微软开源】Mage-Flow 深度解读:微软4B参数图像生成与编辑模型,单卡A100仅需0.59秒
人工智能·microsoft·ai作画·开源·aigc
microrain11 小时前
从硬编码到热插拔:SagooIoT插件架构如何打破物联网平台的扩展瓶颈
物联网·golang·开源·sagooiot
java_logo12 小时前
Docker Compose 部署 Apache Superset:轻松搭建开源 BI 平台
docker·开源·apache·superset·轩辕镜像·superset部署方案·docker superset
千桐科技13 小时前
DataX 执行引擎正式加入:qData 开源版 v1.6.0 新增 Quartz + DataX 轻量运行模式!
java·大数据·开源·数据治理·数据中台·qdata
王同学的AI学习日记13 小时前
Qwen-Image-3.0技术实测:文字渲染、长上下文与多场景能力深度评测
大数据·人工智能·ai·开源
程序员在囧途13 小时前
AIGC SaaS 多租户平台怎么做行业客户二次演示?从 https://aigc.likeadmin.cn 到开源应用中心复盘链路
开源·aigc