首页
/ bat:一个带语法高亮与 Git 集成的 cat(1) 替代品 —— 完整使用指南与源码剖析

bat:一个带语法高亮与 Git 集成的 cat(1) 替代品 —— 完整使用指南与源码剖析

2026-09-05 15:43:38作者:范垣楠Rhoda

本文以 bat 仓库的主 README 为主体,系统讲解这个"A cat(1) clone with wings"的终端文件查看工具:涵盖其四大核心能力(语法高亮、Git 变更标记、非打印字符显示、自动分页)、全部常用命令、各平台安装方式、主题与输出风格定制、配置文件机制,并结合仓库源码(如 src/style.rssrc/diff.rssrc/bin/bat/config.rs)剖析这些功能背后的实现细节,帮助你把 bat 从"能看"用到"精通"。

核心功能

语法高亮

bat 支持对大量编程语言和标记语言进行语法高亮。其底层依赖 Rust 生态中成熟的 syntect 库(见 Cargo.toml 中的 [dependencies.syntect] 声明,版本 5.3.0),而 syntect 可以直接读取任何 Sublime Text 的 .sublime-syntax 语法文件与 .tmTheme 主题文件。仓库中 assets/syntaxes/ 目录即为内置语法集,其中 02_Extra/ 子目录收录了 bat 项目自行开发或维护的补充语法,例如 Manpage 语法(README 指出它仍在完善中)。

Git 集成

bat 会与 git 仓库通信,在左侧侧边栏(changes 组件)中显示文件相对于 git index 的修改状态。这一功能由 src/diff.rs 实现:

  • 从源码结构看,LineChange 枚举定义了四种变更状态:AddedRemovedAboveRemovedBelowModifiedsrc/diff.rs#L10-L16);
  • get_git_diff() 函数(src/diff.rs#L43)通过 gix 纯 Rust git 库发现文件所在的仓库、读取 index 中的条目,并用"滑块启发式 + 直方图算法"对 index 中的 blob 与当前工作区文件做逐行比对,生成"行号 → 变更类型"的映射表;
  • 整个模块由 #![cfg(feature = "git")] 守护,对应 Cargo.toml 中的 git = ["gix"] feature,说明 Git 变更标注是可编译开关的能力。

显示非打印字符

使用 -A/--show-all 选项可以显示并高亮文件中的非打印字符(制表符、换行符、控制字符等):

bat -A /etc/hosts

自动分页与文件拼接

默认情况下,当输出超过一屏时,bat 会把输出交给 pager(通常是 less)处理。若希望 bat 始终像 cat 一样不启用分页,可设置 --paging=never(命令行参数或配置文件均可)。如果你打算把 cat 别名为 bat,建议写成 alias cat='bat --paging=never' 以保留原有行为。

即使设置了 pager,bat 依然可以直接用来拼接文件:每当 bat 检测到输出流向非交互式终端(即被管道到别的进程或重定向到文件)时,它会自动退化为 cat 的行为,直接输出纯文件内容,此时 --pager 的取值不再起作用。这一"drop-in replacement for cat"的设计是 bat 项目目标之一。分页相关的枚举定义非常简洁,见 src/paging.rsAlways / QuitIfOneScreen / Never,默认值对应 auto 语义下的行为)。

基本用法

显示单个文件:

bat README.md

一次显示多个文件:

bat src/*.rs

从 stdin 读取并自动推断语法(注意:语法只能依据文件首行判断,通常是通过 #!/bin/sh 之类的 shebang):

curl -s https://sh.rustup.rs | bat

从 stdin 读取并显式指定语言:

yaml2json .travis.yml | json_pp | bat -l json

显示并高亮非打印字符:

bat -A /etc/hosts

作为 cat 的替代品:

bat > note.md  # 快速创建新文件

bat header.md content.md footer.md > document.md

bat -n main.rs  # 只显示行号

bat f - g  # 依次输出 'f'、stdin、'g'

与其他工具集成

fzf

可以把 bat 用作 fzf 的预览器。用 --color=always 强制彩色输出,用 --line-range 限制长文件的加载范围以降低耗时:

fzf --preview "bat --color=always --style=numbers --line-range=:500 {}"

find / fd

find-exec 预览所有搜索结果:

find … -exec bat {} +

使用 fd 时,可以用 -X/--exec-batch 达到同样效果:

fd … -X bat

ripgrep

借助 bat-extras 项目中的 batgrep 脚本,bat 可以作为 ripgrep 搜索结果的"打印器":

batgrep needle src/

tail -f

bat 可与 tail -f 组合,持续监控某个文件并保持语法高亮:

tail -f /var/log/pacman.log | bat --paging=never -l log

注意这里必须关闭分页,管道流才不会被 pager 截住;同时由于无法自动探测,需显式指定语法(-l log)。

git show / git diff

git show 组合,可以按语法高亮查看文件的旧版本:

git show v0.6.0:src/main.rs | bat -l rs

git diff 组合,以 --diff 模式查看代码改动前后的上下文:

batdiff() {
    git diff --name-only --relative --diff-filter=d -z | xargs -0 bat --diff
}

bat-extras 中的独立 batdiff 工具即源于此;如果需要对 git/diff 操作有更多支持,可参考同类工具 delta

xclip

行号与 Git 修改标记会干扰复制文件内容。可以用 -p/--plain 选项,或直接把输出管道到 xclip

bat main.cpp | xclip

bat 检测到输出被重定向后会自动打印纯文件内容。

man

bat 可以作为 man 的彩色分页器,通过 MANPAGER 环境变量设置:

export MANPAGER="bat -plman"
man 2 select

(在部分较老的 Debian/Ubuntu 发行版中,可执行文件名为 batcat 而非 bat。)喜欢独立命令形式的用户可以用 bat-extras 中的 batman。注意 Manpage 语法本身就在本仓库内开发,仍待完善。

prettier / shfmt / rustfmt

bat-extras 中的 prettybat 脚本是一个包装器:先用格式化工具格式化代码,再用 bat 打印。

高亮 --help 消息

可以用 bat 给帮助文本上色:

cp --help | bat -plhelp

也可以封装成通用函数(写入 .bashrc/.zshrc):

alias bathelp='bat --plain --language=help'
help() {
    "$@" --help 2>&1 | bathelp
}

于是 $ help cp$ help git commit 都能得到彩色帮助。在 zsh 中还可以用全局别名直接接管 -h--help

alias -g -- -h='-h 2>&1 | bat --language=help --style=plain'
alias -g -- --help='--help 2>&1 | bat --language=help --style=plain'

在 fish 中可以使用缩写(abbreviation):

abbr -a --position anywhere -- --help '--help | bat -plhelp'
abbr -a --position anywhere -- -h '-h | bat -plhelp'

之后照常用 cp --help,输出却是彩色帮助页。

提示:要移除这些缩写,运行 abbr -e -- --helpabbr -e -- -h。缩写名前的 -- 是必需的,因为 --help-h 以连字符开头,否则会被 abbr 自身当作选项。

注意在个别场景下 -h 并非 --help 的缩写(例如 ls)。需要把 -h 当作普通参数时,可用反斜杠转义(如 ls \-h)。help 语法的问题可在 cmd-help-sublime-syntax 项目仓库中反馈。

安装方式

以下各节均以仓库 README 为准,覆盖主流发行版与包管理器。

Ubuntu / Debian 系(apt)

bat 自 Ubuntu 20.04(Focal)与 Debian 11(Bullseye,2021 年 8 月)起进入官方源:

sudo apt install bat

重要:部分老版本 Ubuntu/Debian 中可执行文件名为 batcat(因与另一个包重名)。若安装后 bat --version 不可用,请尝试 batcat --version。可建立符号链接或别名以统一行为:

mkdir -p ~/.local/bin
ln -s /usr/bin/batcat ~/.local/bin/bat

或:

alias bat="batcat"

Ubuntu / Debian(最新 .deb 包)

如果发行版仓库中的版本过旧,可从发行版发布页下载最新的 .deb 包安装:

sudo dpkg -i bat_0.18.3_amd64.deb  # 请自行调整版本号与架构

Alpine Linux

apk add bat

Arch Linux

pacman -S bat

Fedora

dnf install bat

Gentoo

emerge sys-apps/bat

FreeBSD

用 pkg 安装预编译包:

pkg install bat

或从 ports 自行构建:

cd /usr/ports/textproc/bat
make install

OpenBSD

pkg_add bat

Nix

nix-env -i bat

openSUSE

zypper install bat

Snap

目前没有官方推荐的 snap 包;社区包可能存在兼容问题,不建议作为首选。

macOS / Linux(Homebrew)

brew install bat

macOS(MacPorts)

port install bat

Windows

Windows 需要先安装 Visual C++ Redistributable 运行库,然后任选一种方式:

  • WinGet:winget install sharkdp.bat
  • Chocolatey:choco install bat
  • Scoop:scoop install bat
  • 预编译二进制:从发行版的 Release 页下载(Chocolatey 还会自动装好 less

二进制 / 源码安装

Release 页提供各架构预编译版本,文件名中带 musl 的归档是静态链接二进制,适合无 glibc 依赖的场景。

从源码构建需要 Rust 1.79.0 或更高(仓库当前 Cargo.tomlrust-version 已提升至 1.88):

# 从本地源码
cargo install --path . --locked

# 从 crates.io
cargo install --locked bat

说明:--path . 指定的是源码所在目录,而不是安装位置。

注意:无论哪种源码安装方式,man 页与 shell 补全文件都不会被自动安装;从本地源码构建时,它们会被 cargo 生成到 target 目录的 build 子目录下。shell 补全也可在运行时直接生成:

bat --completion <shell>   # 支持的 shell 见 --help

定制

高亮主题

bat --list-themes 列出全部可用主题。默认使用 Monokai Extended(深色背景)或 Monokai Extended Light(浅色背景)。选中 TwoDark 可通过 --theme=TwoDark 或环境变量 BAT_THEME=TwoDark 完成,写入 shell 启动文件(export BAT_THEME="TwoDark")即持久生效,也可以写进配置文件。

用 fzf 在自定义文件上预览各主题:

bat --list-themes | fzf --preview="bat --theme={} --color=always /path/to/file"

bat 会根据终端背景色自动挑选深浅主题。可以用 --theme-dark/--theme-light 选项或 BAT_THEME_DARK/BAT_THEME_LIGHT 环境变量分别定制两套主题,频繁切换深浅模式的场景尤为实用。

src/bin/bat/clap_app.rs--theme 的长帮助文本还可以看到几个特殊取值:

  • auto(默认):按终端配色自动选择深浅主题;
  • auto:always:即使输出被重定向也探测终端配色;
  • auto:system:从系统级偏好检测配色(仅 macOS);
  • dark/light:直接使用 --theme-dark/--theme-light 指定的主题。

8 位色主题

bat 内置三个"即使终端支持 truecolor 也始终使用 8 位色"的主题:

  • ansi:在任何终端上都表现尚可,使用 3 位色(黑、红、绿、黄、蓝、品红、青、白);
  • base16:为 base16 终端主题体系设计,遵循 base16 样式规范使用 4 位色(3 位色加亮色变体);
  • base16-256:为 tinted-shell 设计,把某些亮色替换为 16–21 号 8 位色。不要仅仅因为终端支持 256 色就选它。

这三个受限主题的三大优势:

  • 最大兼容性——某些终端工具只支持 3 位色;
  • 能跟随终端主题变化(对已打印出的内容同样生效);
  • 与终端内其他软件在视觉上更协调。

输出风格(--style)

--style 控制输出外观,例如 --style=numbers,changes 只显示 Git 变更标记与行号,不显示网格和文件头。可设 BAT_STYLE 环境变量或写配置文件使其持久。

默认启用的组件为 changesgridheader-filenamenumberssnip。这一点在 src/style.rs#L52-L59 中得到了源码印证——StyleComponent::Default 的展开正是这五个组件(其中 Changes 依赖 git feature 编译开关)。

预定义风格:

Style 说明
default 启用上文列出的推荐组件。
full 启用全部组件(源码见 src/style.rs#L43-L51)。
auto default,但输出被管道时退化为 plain。
plain 禁用全部组件。

可单独组合的组件:

组件 说明
changes 显示 Git 修改标记。
header header-filename 的别名。
header-filename 内容前显示文件名。
header-filesize 内容前显示文件大小。
grid 用竖线/横线分隔侧边栏、表头与内容。
rule 文件之间的水平分隔线。
numbers 侧边栏显示行号。
snip 在不同行范围之间画分隔线。

提示:如果配置文件里写了默认风格,单次运行时仍可用 --style+/- 前缀做增量修改。例如配置中是 --style=full,-snip,本次运行加 --style=-grid,+snip 即可去掉网格并补回 snip;若想完全覆盖,直接写 --style=numbers

这一增量机制的实现见 src/style.rs#L143-L213ComponentAction 将每个组件解析为 Override/Add/Remove 三种动作;StyleComponentList::to_components() 在折叠多个列表时,只要新列表含 Override 动作(即没有 +/- 前缀的项)就先清空已有集合,否则做合并。文件内的单元测试(如 grid,header 叠加 -grid 再叠加 +numbers 得到 header+numbers)验证了这一优先级规则。

装饰(decorations)

默认只在输出到交互式终端时才显示装饰(行号、文件头、网格等)。--decorations 可控制该行为:always 表示即使管道输出也保留装饰;never 完全关闭。可选值为 auto(默认)、neveralways

另有 --force-colorization(短选项 -f),它是 --decorations=always --color=always 的别名,用于管道到其它程序时仍保留颜色与装饰,定义见 src/bin/bat/clap_app.rs#L322-L334

添加新语法 / 语言定义

发现缺少某门语言时,可以按下面步骤扩展当前安装:

  1. 在配置目录下创建语法文件夹并放入 .sublime-syntax 文件:

    mkdir -p "$(bat --config-dir)/syntaxes"
    cd "$(bat --config-dir)/syntaxes"
    
    # 在此目录(或其子目录)放入新的 '.sublime-syntax' 语言定义文件,例如
    # 克隆某个 Sublime 语法包
    

    查找 Sublime 语法包的良好途径是 Sublime 的 Package Control 生态。

  2. 把文件解析进二进制缓存:

    bat cache --build
    
  3. bat --list-languages 确认新语言可用。想恢复默认设置:

    bat cache --clear
    
  4. 若你认为某语法应该被 bat 默认收录,请阅读 doc/assets.md 中的收录政策后,在仓库中开一个 "syntax request" issue。

添加新主题

流程与添加语法几乎相同:

注意:自定义主题必须是 .tmTheme 格式;较新的 .sublime-color-scheme 格式目前不受支持。

mkdir -p "$(bat --config-dir)/themes"
cd "$(bat --config-dir)/themes"

# 下载一个 '.tmTheme' 格式的主题
# (可参考仓库内置主题的目录结构,见 assets/themes/)

# 更新二进制缓存
bat cache --build

最后用 bat --list-themes 验证。主题名直接取自 .tmTheme 文件名。仓库中 assets/themes/ 展示了内置主题的目录组织(ansi.tmThemebase16.tmTheme 等顶层文件,以及 TwoDark/gruvbox/onehalf/ 等主题子目录)。

文件类型关联(--map-syntax)

--map-syntax 新增或修改文件名模式到语言的映射。参数形式为 pattern:syntax,其中 pattern 是与文件绝对路径都进行匹配的 glob,syntaxbat --list-languages 中的完整语言名。

注意:这个选项通常应写进配置文件以持久化,而不是作为一次性命令行参数;若只是单次手动指定语言,直接用 -l 更合适。

示例:

# 所有 .conf 扩展名文件使用 INI 语法
--map-syntax='*.conf:INI'

# 所有名为 .ignore 的文件(精确匹配)使用 Git Ignore 语法
--map-syntax='.ignore:Git Ignore'

# /etc/apache2 子目录下所有 .conf 使用 Apache Conf 语法(此映射已内置)
--map-syntax='/etc/apache2/**/*.conf:Apache Conf'

--map-syntax 的长帮助(src/bin/bat/clap_app.rs#L378-L392)特别强调:冒号右侧是语法名而非文件扩展名。内置映射规则的来源可参考 src/syntax_mapping/builtins/ 目录——按 common/linux/bsd-family/unix-family/windows/ 等分族的 TOML 文件。

使用其它分页器

bat 使用 PAGER 环境变量指定的分页器;未设置时默认 less。也可以用 --pager=builtinBAT_PAGER=builtin 启用内置分页器。想换分页器,改 PAGER 或用 BAT_PAGER 覆盖 PAGER

注意:若 PAGERmoremost,bat 会静默改用 less,以确保颜色支持。

分页器命令行参数也可以经由 PAGER/BAT_PAGER 传递:

export BAT_PAGER="less -RFK"

也可以不用环境变量,直接写进配置文件的 --pager 选项。

以 less 为分页器

使用 less 时,bat 会自动追加额外选项以改善体验:-R/--RAW-CONTROL-CHARS-F/--quit-if-one-screen-K/--quit-on-intr,以及在特定条件下的 -X/--no-init-S/--chop-long-lines

重要:以下情况不会自动追加这些选项:

  • 分页器不是名为 less
  • --pager 参数自带了命令行参数(如 --pager="less -R");
  • BAT_PAGER 环境变量自带了命令行参数(如 export BAT_PAGER="less -R")。

--quit-if-one-screen 在以下情况不会追加:

  • 使用了 --paging=always
  • BAT_PAGING 设为 always

各选项作用:

  • -R:正确解析 ANSI 颜色所必需;
  • -F:输出小于终端高度时立即退出,小文件不必按 q
  • -K:收到中断信号时立即退出,保证 lessbat 在 SIGINT 时一起退出;
  • -X:针对 530 之前版本(Windows 上 558 之前)的 less 追加,用于修复 -F 的 bug,但会破坏鼠标滚轮。老版本 less 若想要滚轮、不在乎一键退出,可把分页器设为 less -R;less 530+ 则开箱即用;
  • -S:仅当 bat 使用了 -S/--chop-long-lines 时追加,指示 less 截断超过终端宽度的行。

缩进(Tab 展开)

bat 自己把 tab 展开为 4 个空格,不依赖分页器。用 --tabs 参数指定展开宽度。

注意:通过 --pagerLESS 环境变量给分页器设置 tabstop 是无效的,因为分页器收到的已经是展开后的空格——这是为了避免侧边栏导致的缩进错乱。--tabs=0 可覆盖此行为,让 tab 交由分页器处理。

深色模式

macOS 深色模式下,可按系统主题切换 bat 主题,例如深色用 default、浅色用 GitHub

alias cat="bat --theme auto:system --theme-dark default --theme-light GitHub"

GNOME 的深色模式影响 org.gnome.desktop.interface color-scheme 设置,可用如下 bash 封装读取该设置:

# .bashrc
sys_color_scheme_is_dark() {
    condition=$(gsettings get org.gnome.desktop.interface color-scheme)
    condition=$(echo "$condition" | tr -d "[:space:]'")
    if [ $condition == "prefer-dark" ]; then
        return 0
    else
        return 1
    fi
}

bat_alias_wrapper() {
    #get color scheme
    sys_color_scheme_is_dark
    if [[ $? -eq 0 ]]; then
        # bat command with dark color scheme
        bat --theme=default "$@"
    else
        # bat command with light color scheme
        bat --theme=GitHub "$@"
    fi
}
alias cat='bat_alias_wrapper'

配置文件

bat 支持配置文件,位置随操作系统而异,用下面命令获取当前系统的默认路径:

bat --config-file

也可以用 BAT_CONFIG_PATHBAT_CONFIG_DIR 环境变量把配置文件(或配置目录)指向非默认位置:

export BAT_CONFIG_PATH="/path/to/bat/bat.conf"
export BAT_CONFIG_DIR="/path/to/bat"

--generate-config-file 可生成一份带注释的默认配置:

bat --generate-config-file

源码中 generate_config_file()src/bin/bat/config.rs#L32-L99)展示了这份默认配置的完整内容,包含主题、斜体、关闭自动分页、tmux 下启用 less 鼠标滚轮、语法映射等注释示例。

此外还有系统级配置:Linux/macOS 位于 /etc/bat/config,Windows 位于 C:\ProgramData\bat\config(对应 src/bin/bat/config.rs#L9-L23DEFAULT_SYSTEM_CONFIG_PREFIX 的平台分支)。若系统级配置存在,用户配置的内容会追加在其后。

格式

配置文件就是一行一个命令行参数的简单列表(bat --help 可查全部选项与取值),以 # 开头的行是注释。

示例配置:

# 主题设为 "TwoDark"
--theme="TwoDark"

# 显示行号、Git 修改与文件头(不显示网格)
--style="numbers,changes,header"

# 终端中使用斜体(并非所有终端都支持)
--italic-text=always

# Arduino .ino 文件使用 C++ 语法
--map-syntax "*.ino:C++"

src/bin/bat/config.rs#L104-L151 可以看到解析逻辑:系统配置与用户配置依次读入(若两者解析为同一文件则跳过,避免重复),逐行去除空行与 # 注释行,再用 shell-words 按 shell 分词规则拆分为参数——这意味着带空格的值需要引号(测试用例验证了 --theme "Sublime Snazzy" 这类情况)。此外 get_args_from_env_vars()src/bin/bat/config.rs#L153-L172)表明以下环境变量会转成对应参数:BAT_TABS--tabsBAT_WIDTH--terminal-widthBAT_THEME/BAT_THEME_DARK/BAT_THEME_LIGHTBAT_PAGER--pagerBAT_PAGING--pagingBAT_STYLE--styleBAT_OPTS 同样会被解析为一组参数(见 src/bin/bat/config.rs#L133-L135)。

在 Windows 上使用 bat

bat 在 Windows 上大体开箱即用,但有几个功能可能需要额外配置。

前置条件

需要安装 Visual C++ Redistributable 运行库。

分页

Windows 自带的分页器 more 功能非常有限。可下载 Windows 版 less(从 less 主页或经 Chocolatey),放到 PATH 中或按上文"使用其它分页器"一节配置环境变量。Chocolatey 包会自动安装 less

颜色

Windows 10 自 v1511 起在 conhost(命令提示符)与 PowerShell 中原生支持颜色,较新的 bash 亦支持。更早的版本可用内置 ConEmu 的 Cmder。

注意:老版本 less 在 Windows 上不能正确解析颜色。修正办法是安装 Git 时勾选可选 Unix 工具以纳入 PATH;若没有其它分页器,可用 --paging=never 或把 BAT_PAGER 设为空串彻底禁用分页。

Cygwin

Windows 版 bat 不原生支持 Cygwin 风格路径(/cygdrive/*),传入绝对 cygwin 路径会报 The system cannot find the path specified. (os error 3)。可写一个包装函数(加入 .bash_profile):

bat() {
    local index
    local args=("$@")
    for index in $(seq 0 ${#args[@]}) ; do
        case "${args[index]}" in
        -*) continue;;
        *)  [ -e "${args[index]}" ] && args[index]="$(cygpath --windows "${args[index]}")";;
        esac
    done
    command bat "${args[@]}"
}

故障排查

输出乱码

若输入文件包含颜色码、ANSI 转义序列或控制字符,bat 在做语法高亮与折行时会出现问题,输出可能乱码。

  • 如果你的 bat 版本支持 --strip-ansi=auto,可用它在高亮前移除这些序列;
  • 或者用 --color=never --wrap=never 同时关闭高亮与折行;
  • 对不可信输入,--sanitize=auto|always|never 还会把终端可执行的控件字节、Unicode 双向/零宽格式字符替换为 Unicode 替换字符,并隐式地以相同取值启用 --strip-ansi

注意:--strip-ansiauto 值在语法为纯文本时不会移除转义序列。

终端与颜色

bat 同时兼容支持/不支持 truecolor 的终端,但多数高亮主题的颜色并非为 8 位色优化。强烈建议使用支持 24 位 truecolor 的终端(terminator、konsole、iTerm2 等),或使用上文介绍的 8 位色主题。

确认 truecolor 终端把 COLORTERM 设为 truecolor24bit,否则 bat 无法判断是否支持 24 位转义序列(会回退到 8 位色)。

行号与网格几乎看不清

换个主题试试(bat --list-themes 查看列表)。OneHalfDarkOneHalfLight 提供的网格与行号颜色更亮。

文件编码

bat 原生支持 UTF-8 与 UTF-16。其它编码通常无法自动探测,建议先转换为 UTF-8,例如用 iconv

iconv -f ISO-8859-1 -t UTF-8 my-file.php | bat

若 bat 无法自动探测语法,可能还需要配合 -l/--language

开发

# 递归克隆以获取所有子模块
git clone --recursive <本仓库地址>

# 构建(debug 版本)
cd bat
cargo build --bins

# 运行单元测试与集成测试
cargo test

# 安装(release 版本)
cargo install --path . --locked

# 构建使用自定义语法/主题的 bat 二进制
bash assets/create.sh
cargo install --path . --locked --force

其中 assets/create.sh 用于把修改过的语法与主题重新打包。如果想把 bat 的 pretty-printing 能力作为来集成到自己的应用中,可参考 examples 目录下的示例程序(如 examples/simple.rsexamples/advanced.rs),并参阅 crate 的 API 文档。注意:以库方式依赖 bat 时必须启用 regex-onigregex-fancy feature 之一(见 Cargo.toml 中的 feature 定义),且建议关闭 application feature。

项目目标与替代品

bat 追求以下目标:

  • 提供美观、先进的语法高亮;
  • 与 Git 集成,显示文件修改;
  • 成为 POSIX cat 的 drop-in replacement;
  • 提供用户友好的命令行界面。

如果需要同类工具的横向比较,见 doc/alternatives.md

其它资源

登录后查看全文
热门项目推荐
相关项目推荐