lf
用 Go 写的轻量级终端文件管理器,双栏浏览 + vim 键绑定,5MB 零依赖
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用 Go 写的轻量级终端文件管理器,双栏浏览 + vim 键绑定,5MB 零依赖
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
ls -la,一层层 cd,一个文件找不到要切七八个 tab?大多数开发者的日常:打开终端 → ls 看一眼 → cd 进去 → 再 ls → 发现不对 → cd .. → 再进另一个目录。这不是效率,这是体力劳动。
lf(Last File Manager)解决的就是这个问题——让你在终端里拥有类似 GUI 文件管理器的浏览体验,同时保留键盘操作的全部效率。GitHub 9,303 Stars、持续维护 9 年、MIT 协议。
lf 由独立开发者 gokcehan 于 2016 年 8 月创建,项目灵感直接来源于 Python 编写的 ranger。作者在 FAQ 中坦承:ranger 功能强大,但 Python 的启动延迟和内存占用让他不满意,于是用 Go 从头重写。
这一决定带来了显著收益:
.tar.gz 或 .zip 运行项目采用 MIT 协议,无商业锁定,完全开源。最新版本 r41(2026年2月)提供 30 个预编译平台二进制文件,覆盖从 Linux x86 到 Android ARM64,从 FreeBSD 到 Solaris 的全平台矩阵。
如果把文件管理器分为「用鼠标点」和「用键盘操作」两个阵营,lf 属于后者,但比传统 CLI 工具多了视觉化双栏浏览:
这就像把 ranger 的所有功能浓缩进了一个 5MB 的 Go 程序里。
lf 默认绑定 vi 风格的快捷键,熟习 vim 的用户几乎零学习成本:
h/j/k/l 或方向键导航gg 跳到顶部,G 跳到底部/ 搜索,n/N 跳到下/上一个匹配yy 复制,dd 剪切,p 粘贴:cmd 执行任意 shell 命令lf 支持后台常驻服务(-server),多个终端实例共享同一状态。通过 -remote 参数可以在任何地方向服务器发送命令,实现真正的多终端同步。这对于在 tmux 或 zellij 中工作的用户尤其有价值。
文件操作(复制、移动、删除)均通过异步 goroutine 实现,UI 始终保持响应。对于文本文件,结合 less 或 bat 可实现边选边预览。对于图片,lf 提供了在终端渲染图片的能力(依赖特定终端支持)。
lf 的所有行为均可通过 lfrc 配置文件定制:
icons.go 模块实现)适合人群:
需要了解:
无 Web-UI,纯终端界面,不适合习惯 GUI 点击操作的用户。
lf 采用 Go 1.25 编写,核心依赖仅 6 个:
gdamore/tcell/v3:跨平台终端 UI 库fsnotify:文件变化监控golang.org/x/term:终端控制代码结构清晰,按功能模块分为独立 .go 文件(app.go、nav.go、eval.go、copy.go 等),遵循 Go 惯用风格。代码仓库包含完整测试套件(_test.go 文件),代码风格通过 golangci-lint 规范检查。文档质量极高——不仅有 doc.md 完整手册、lf.1 man 页面,还有官方 wiki 教程和 FAQ。
在 AI 编码工具(如 Cursor、Copilot)大行其道的今天,lf 代表了一种底层效率工具的持续进化路径:不依赖 AI,从工具本身挖掘效率。GitHub 上 9,300+ Stars 和持续 9 年的活跃维护,本身就是其价值的最好证明。
项目不支持 Docker 快速部署,但这恰恰体现了它的设计哲学:一个 5MB 的原生二进制,下载即用,无需任何基础设施。对于追求极简的开发者,这才是真正的 zero-config。