broot README

The project's README from github.com/Canop/broot. As one markdown file: README.md.

Broot

Tests MIT Latest Version Chat on Miaou Packaging status

Broot is a better way to navigate directories, find files, and launch commands.

cows

Complete Documentation - Installation Instructions - Contributing or Getting Help

Get an overview of a directory, even a big one

Hit br -s

overview

Notice the unlisted?

That's what makes it usable, where the old tree command would produce pages of output.

.gitignore files are properly dealt with to put unwanted files out of your way.

As you sometimes want to see gitignored files, or hidden ones, you'll soon get used to the alti and alth shortcuts to toggle those visibilities.

(you can ignore them though, see documentation).

Find a directory, then cd to it

type a few letters

cd

Hit altenter and you're back to the terminal in the desired location.

This way, you can navigate to a directory with the minimum amount of keystrokes, even if you don't exactly remember where it is.

Broot is fast and doesn't block (any keystroke interrupts the current search to start the next one).

Most useful keys for this:

search

Broot tries to select the most relevant file. You can still go from one match to another one using tab or arrow keys.

You may also search with a regular expression. To do this, add a / before the pattern.

And you have other types of searches, for example, searching on file content (start with c/):

content search

You may also apply logical operators or combine patterns, for example, searching test in all files except JSON ones could be !/json$/&c/test and searching carg both in file names and file contents would be carg|c/carg.

Once the file you want is selected, you can

blog: a broot content search workflow

Manipulate your files

Most often, when not using broot, you move your files in the blind. You do a few ls before, then your manipulation, and maybe you check after.

You can instead do it without losing the view of the file hierarchy.

mv

Move, copy, rm, mkdir, are built in, and you can add your own shortcuts.

Here's chmod:

chmod

Manage files with panels

When a directory is selected, do ctrl→ and you open another panel (you may open other ones, or navigate between them, with ctrl← and ctrl→).

custom colors tree

(yes, colors are fully customizable)

You can, for example, copy or move elements between panels:

cpp

If you like, you may do it Norton Commander style by binding :copy_to_panel to F5 and :move_to_panel to F6.

Preview files

Hit ctrl→ when a file is selected, and the preview panel appears.

preview

preview

The preview panel stays synchronized with the selection in the tree panels.

Broot displays images in high resolution when the terminal supports Kitty's graphics protocol (compatible terminals: Kitty, WezTerm):

kitty preview

Apply a standard or personal command to a file

size

Just find the file you want to edit with a few keystrokes, type :e, then enter.

You can add verbs or configure the existing ones; see documentation.

And you can add shortcuts, for example, a ctrl sequence or a function key

Apply commands on several files

Add files to the staging area, then execute any command on all of them.

staging mv

Replace ls (and its clones):

If you want to display sizes, dates, and permissions, do br -sdp which gets you this:

replace ls

You may also toggle options with a few keystrokes while inside broot. For example, you could have typed this -sdp while in broot. Or hit alth and you see hidden files.

Sort, see what takes space:

You may sort by launching broot with --sort-by-size or --sort-by-date. Or you may, inside broot, type a space, then sd, and enter and you toggled the :sort_by_date mode.

When sorting, the whole content of the directories is taken into account. So if you want to find on Monday morning the most recently modified files, launch br --sort-by-date ~.

If you start broot with the --whale-spotting option (or its shortcut -w), you get a mode tailored to "whale spotting" navigation, making it easy to determine what files or folders take space.

Sizes, dates, and file counts are computed in the background; you don't have to wait for them when you navigate.

size

And you keep all broot tools, like filtering or the ability to delete or open files and directories.

If you hit :fs, you can check the usage of all filesystems, so that you focus on cleaning the full ones.

fs

Check git statuses:

Use :gf to display the statuses of files (what are the new ones, the modified ones, etc.), the current branch name, how many commits it is ahead (↑) or behind (↓) its upstream branch, and the change statistics.

The letter tells the state of the file: N untracked, A staged addition, S staged modification, M modified in the working tree, R staged rename, C conflict, I ignored, ? other change (for example a file replaced by a symlink).

size

And if you want to see only the files which would be displayed by the git status command, do :gs.

gg

From there, it's easy to edit, diff, or revert selected files.

blog: use broot and meld to diff before commit

Further Reading

See Broot's web site for instructions regarding installation and usage.

broot (Canop/broot)

Searching Database…

13.1K ·GitHub
这是什么?Broot 是一个终端工具,它以紧凑、可导航的方式展示目录树概览,支持模糊搜索文件和文件内容,然后可以进入目录、打开或操作找到的内容。日常浏览时,它可以替代 tree、ls、find 和 cd。
这是在终端里运行的命令行工具,而不是图形界面的文件管理器吗?是的,这是一个通过 `br` 命令启动的终端应用。它直接在 shell 会话中显示可交互、可折叠的树形视图,而不是打开单独的窗口。
怎么让它运行起来?通过系统的包管理器或 `cargo install broot` 安装 `broot`,然后在任意目录中输入 `br` 启动。在 broot 内按 alt-enter,可以让你当前的 shell 执行 cd,切换到所选文件夹。
使用它需要安装 Rust 吗?不需要。只有在使用 `cargo install broot` 从源码编译时才需要 Rust/Cargo。大多数平台都可以通过包管理器直接安装预编译好的版本。
图片预览在所有终端里都能用吗?高分辨率图片预览仅在支持 Kitty 图形协议的终端中可用,例如 Kitty 或 WezTerm;其他终端会显示清晰度较低的预览。
它除了 Linux 之外,也能在 macOS 和 Windows 上使用吗?能。broot 支持跨平台运行。README 中甚至提到,macOS 预览要用 alt-right-arrow 而不是 ctrl-right-arrow,这暗示它在 Linux 之外也有原生支持。
模糊搜索是怎么工作的?输入字母即可模糊匹配名称;输入 / 前缀可进行正则搜索,输入 c/ 则可搜索文件内容。还可以用 & 和 | 等逻辑运算符组合多个模式,并用 ! 表示取反。
移动或复制文件时能保留树形视图吗?可以。broot 内置了 move、copy、rm、mkdir 和 chmod 等操作命令,还提供多面板模式(ctrl-left/right),让你可以在两个打开的面板之间拖放文件。
broot 能帮我看出哪些东西占用了磁盘空间吗?可以。使用 --sort-by-size 或 --whale-spotting(-w)启动,即可得到专门用于查找大文件和大文件夹的视图。浏览时,文件大小会在后台逐步计算。
能在 broot 里查看 git 状态吗?可以。:gf 命令会显示文件状态(新增、已修改、已暂存、冲突等)、当前分支,以及与上游分支相比领先或落后的提交数。:gs 则只筛选出 git status 会显示的文件。
What are similar projects?yazi, navi, fzf.vim, ripgrep, howdoi, telescope.nvim, thefuck, lazygit
Creator
Canop
Size
20.5 MB
Stars
13.1K
Age
7y
Commits · 90 Days