Broot:终端里的文件导航神器
说实话,每次在终端里用 cd
命令一层层往下翻目录的时候,我都有种在迷宫里找出口的感觉。尤其是那种嵌套了七八层的项目目录,找个文件能把人找到怀疑人生。tree
命令倒是能看到整体结构,但输出一大堆文本,眼睛都看花了。
直到我遇到了 Broot,这玩意儿算是拯救了我的终端生活。
Broot 是个啥?
简单说,Broot 就是用 Rust 写的一个终端文件管理器。它能把你的目录用树状结构展示出来,而且可以边看边搜索、边操作。关键是速度快得飞起,再大的目录都不在话下。
它能干啥?
速度是真的快
我试过在一个有几万个文件的项目里用它,秒开。那种复杂的目录结构,Broot 能瞬间给你展示出来,不像 tree
命令那样哗啦哗啦刷屏半天。
搜索很聪明
你可以模糊搜索(就是输几个字母就能找到),也可以用正则表达式(适合有强迫症的同学),甚至能搜文件内容。找个文件真的是秒秒钟的事儿。
界面看着舒服
树状结构一目了然,你在哪层目录、文件关系是啥,清清楚楚。再也不用 pwd
一下看看自己在哪了。
文件预览挺方便
选中文件按个快捷键就能预览,代码还有高亮。不用每次都打开编辑器看一眼再关掉,省事。
批量操作不在话下
复制、移动、删除文件都支持,再也不用写那种一行能绕地球三圈的 shell 脚本了。
双面板操作
就像以前 Windows 上用的 Total Commander,左右两个窗口,文件想怎么搬就怎么搬。
Git 集成真香
这个功能我太爱了。直接能看到哪些文件改了、加了、删了,提交代码前扫一眼,心里有数。
哪都能用
Windows、macOS、Linux 都支持,不管你用啥系统都能用。
想怎么配就怎么配
快捷键、配色、命令都能自己定制。反正我是把常用的操作都绑到顺手的键位上了。
怎么装?
安装很简单,看你用啥系统:
如果你装了 Rust
一行命令搞定:
cargo install broot
macOS 用户
Homebrew 走起:
brew install broot
Debian/Ubuntu
APT 就行:
sudo apt install broot
其他 Linux 发行版
去 GitHub Releases 下载编译好的二进制文件就行。
第一次跑要注意
装完第一次运行 broot
的时候,它会问你要不要装个 shell 函数。这个一定要装,不然后面用起来不方便。跟着提示走就行,一般是让你在 .bashrc
或 .zshrc
里加一行:
source ~/.config/broot/launcher/bash/br
加完之后重启下终端,或者 source
一下配置文件。
怎么用?
启动很简单
终端里敲个 br
就行(记得前面配置 shell 函数了):
br
基本操作
启动后就能看到树状的目录结构了。
移动光标
- 方向键或者
h/j/k/l
都行(vim 党狂喜) Enter
进入目录Esc
或Backspace
返回上一级Ctrl + ↓/↑
可以快速在目录层级间跳转
搜索文件
直接在底部输入框打字就能搜,实时过滤的那种。
- 想模糊搜索?直接打几个字母
- 想精确搜索?用正则表达式,比如
/\.md$
找所有 Markdown 文件 - 想搜文件内容?加个
c/
前缀
预览文件
选中文件按 Ctrl + →
就能看到内容,代码还有高亮。看一眼就知道是不是要找的文件,省得打开编辑器。
常用命令记一下
底部输入框按 :
就能输命令:
:q
- 退出(这个必须会):h
- 显示/隐藏那些以点开头的隐藏文件:size
- 看文件大小:dates
- 看修改日期:git_status
- 看 Git 状态(开发者必备):cp
- 复制:mv
- 移动:rm
- 删除(小心点用):mkdir
- 新建目录
操作文件也简单
比如复制个文件:选中 → 输入 :cp
→ 输入目标路径 → 搞定
移动文件也一样,:mv
就行。
删除的话用 :rm
,不过删之前它会让你确认,还算比较安全。
进阶玩法
双面板模式
按 Ctrl + →
能打开第二个面板,就像以前用 Total Commander 那样。
Ctrl + ←/→
在面板之间切换- 两个面板之间直接拖文件(当然,是用命令"拖")
Ctrl + w
关掉当前面板
这个模式整理文件特别爽,左边源目录,右边目标目录,想怎么搬就怎么搬。
排序功能
找大文件或者最近改的文件,排个序就行:
:sort_by_size
- 按大小排:sort_by_date
- 按日期排:sort_by_name
- 按名字排
清理磁盘空间的时候,:sort_by_size
一用,大文件一目了然。
看磁盘占用
:sizes
这个命令挺实用的,能看到每个目录占了多少空间。比 du
命令直观多了,你能直接在树状结构里看哪个目录最占地方。
调用外部命令
Broot 里还能直接跑外部命令。选中文件后输入 :!命令
,比如:
:!cat {file} # 直接看文件内容
:!code {file} # 用 VS Code 打开
:!vim {file} # vim 党专用
{file}
会自动替换成你选中的文件路径。
自定义配置
配置文件在 ~/.config/broot/conf.hjson
,想怎么改就怎么改。
我一般会加个快捷命令,比如一键用 VS Code 打开:
{
invocation: "code",
execution: "code {file}",
leave_broot: false
}
这样选中文件后直接输入 code
回车就能打开了。
Git 状态查看
在 Git 仓库里用 Broot,输入 :git_status
就能看到所有文件的状态:
M
- 改了A
- 新加的D
- 删了??
- 还没加到 Git 里
提交代码前看一眼,哪些文件动过,清清楚楚。
几个实用技巧
快速跳转项目目录
在 .bashrc
或 .zshrc
里加个别名:
alias brp='br ~/projects'
以后想看项目目录,直接 brp
就行。
配合 cd 使用
这是个很妙的功能。用 br
命令(不是 broot
)启动,选好目录按 Alt+Enter
退出,终端会自动 cd 到那个目录。
br # 选个目录,退出后就在那个目录了
再也不用一层层 cd
了。
搜索特定文件类型
用正则表达式能快速筛选文件:
- 找 JS 文件:
/\.js$
- 找图片:
/\.(png|jpg|gif)$
- 找配置:
/\.config
习惯了这个,找文件快到飞起。
清理磁盘的时候
:sizes
+ :sort_by_size
,组合拳下去,最占空间的目录立马现形。
设置书签
常用目录可以设个快捷键。在配置文件里加:
{
key: "ctrl-p",
execution: ":goto ~/projects"
}
按个 Ctrl+P
就能跳到项目目录,贼方便。
实际场景举几个例子
大项目里找文件
有次在一个几千个文件的项目里找一个组件,传统方法是 IDE 全局搜索,等半天。用 Broot:
br
启动- 输入
header
(组件名的关键词) - 实时过滤出所有匹配文件
- 方向键选一下
Ctrl + →
预览确认- 输入
:code
打开
全程不到 5 秒。
清理 node_modules
前端项目搞久了,满硬盘都是 node_modules
。用 Broot 找出来:
br
启动- 输入
node_modules
过滤 :sizes
看看哪个最占地方- 选中不用的
:rm
删掉
几个 GB 就这么省出来了。
提交代码前检查
提交代码之前想看看改了啥:
- 在仓库里
br
:git_status
一看,所有改动的文件都出来了- 逐个
Ctrl + →
预览一下 - 心里有数了再提交
比 git status
好用多了。
批量操作文件
虽然 Broot 没有内置批量重命名,但可以配合外部命令。比如找出所有 .js
文件,然后用 :!
调用自己写的脚本批量处理。
和其他工具比比
对比 ls
ls
只能看当前目录,想看子目录得一层层进去。Broot 直接树状结构展开,还能实时搜索。
对比 tree
tree
命令在大目录里会刷屏刷到你怀疑人生。Broot 自动折叠,还能交互,体验完全不同。
对比 Midnight Commander
MC 功能是强大,但学习成本也高。Broot 界面更现代,上手快,该有的功能也都有。
对比图形化文件管理器
GUI 文件管理器要鼠标点来点去,在终端环境下还得切来切去。Broot 纯键盘操作,不用离开终端,效率高。
性能怎么样?
因为是 Rust 写的,性能没得说:
- 大目录秒开,我试过几万文件的项目,瞬间就出来了
- 内存占用很低,常驻也不心疼
- 搜索是实时的,打字就能看结果
- 处理大量文件毫无压力
我测过一个 5 万+ 文件的目录,不到 1 秒就索引完了。传统工具根本做不到。
写在最后
用了 Broot 几个月,真的回不去了。
以前在终端里找文件,cd
来 cd
去,ls
看半天,现在直接 br
一开,搜一下,秒到位。特别是处理那种层级巨深的项目,Broot 简直就是救星。
Git 集成也是真香,提交代码前 :git_status
扫一眼,哪些文件动过、改了啥,清清楚楚。配合预览功能,连 IDE 都不用开。
最爽的是双面板模式,整理文件的时候特别爽。左边源目录,右边目标目录,想怎么搬就怎么搬,比写 shell 脚本快多了。
性能方面也没话说,Rust 写的就是快。几万个文件的目录秒开,搜索也是实时的,用起来一点都不卡。
如果你也经常在终端里干活,或者被复杂的目录结构折磨过,试试 Broot 吧。装上之后记得配置好 shell 函数,不然体验会打折扣。
反正我是装上之后,cd
命令用得越来越少了。😄
相关链接
- GitHub 仓库:https://github.com/Canop/broot
- 官方文档:https://dystroy.org/broot/
- 配置示例:https://github.com/Canop/broot/tree/main/resources
有啥问题欢迎留言交流~