Go写的终端文件管理器lf,Star 9.3K,ranger的轻量替代品

如果你在终端里管理过文件,应该听说过ranger。那是一个用Python写的文件管理器,Vim风格快捷键,功能完备。lf可以看作ranger的Go语言重写版,保留了同样的操作逻辑,用编译型语言换来了启动速度和部署上的优势。项目目前9.3K Star,在命令行工具里属于中上热度。

正文顶部截图

静态编译,零运行时依赖

lf只有一个二进制文件。Go编译出的静态二进制,不依赖Python环境,不需要pip install任何库。下载解压放进PATH就能用。对服务器环境来说,一个scp命令部署到远程机器,不用先装运行时。

启动速度方面,机器码直接执行,比解释执行的Python版ranger快出一截。内存占用也更低,常年挂在后台不会造成负担。跨平台支持覆盖完整:Linux、macOS、BSD系列和Windows都能用。

一个Non-Features列表

lf的README里有一节叫"Non-Features",这在开源项目中不多见。它明确列出不打算提供的功能:

  • 没有标签页和多窗口。作者认为窗口管理应该交给终端多工器,比如tmux、screen或zellij。
  • 没有内置分页器和编辑器。查看和修改文件内容,用你自己选用的工具。
  • 没有内置文件操作命令。创建目录、改权限、建符号链接,直接用系统的cp、mv、mkdir、chmod等命令。

这种划清边界的做法减少了用户的错误预期。你拿到的是一个文件浏览工具,每个组件各司其职。

异步IO和客户端-服务器架构

lf的界面在扫描包含大量文件的目录时不会卡住。文件列表的读取操作放在异步线程里执行,UI始终能响应用户按键。这个设计在遍历几万甚至几十万文件的目录时感受最明显。

另一个设计是客户端-服务器架构。可以先启动一个lf server进程作为守护,之后在任意终端窗口里用lf client连到同一个实例。多个终端窗口共享浏览会话,文件定位和选中状态实时同步。对于需要在不同目录间频繁切换的场景,这个模式比在单一窗口里反复跳转更方便。

README区域截图

按键映射和shell扩展

lf提供两套默认按键方案:vi风格和readline风格。如果你用vim或nvim,操作逻辑几乎没有学习成本。所有按键绑定都可以在配置文件里重新映射。

扩展方面,lf支持通过shell命令定制操作。选中文件后按一个快捷键,把文件列表传给外部脚本,实现批量重命名、格式转换或其他处理。项目的etc目录下有示例配置、图标集和配色方案,社区维基有教程和录屏,上手参考足够。

适合谁用

ranger老用户觉得Python启动太慢的,lf几乎可以无缝迁移。操作逻辑一致,配置体系类似,迁移成本不高。

需要在无图形界面的服务器上管理文件,lf比ranger更轻量。一个二进制文件带走,不用管Python版本和依赖。

终端多工器重度用户,lf的设计理念和tmux、zellij这类工具互补。lf负责文件浏览,多工器负责标签和窗口,编辑器负责内容修改,每个工具专注一件事。

互补。lf负责文件浏览,多工器负责标签和窗口,编辑器负责内容修改,每个工具专注一件事。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐