mcpField
B
bat

bat

官方Agent-ready
github.com开发者工具61.0kbat今天更新
代码仓库访问官网

关于 bat

显示文件内容时提供语法高亮支持。集成 Git 显示文件变更,支持多种输出格式和主题定制。

主要功能

  1. 01为 200+ 种语言和格式提供语法高亮显示
  2. 02显示行号并标记 Git 变更
  3. 03使用主题和格式选项自定义输出样式

适用场景

  1. 01开发过程中查看代码文件并立即获得语法上下文
  2. 02在命令行中查看配置或文档文件
  3. 03在分页器中审查 Git 跟踪的文件变更

安装

选择你的系统或包管理器,复制命令到终端运行。

$
brew install bat

安装完成后运行bat --version确认安装成功。

命令示例

常用命令按使用顺序排列。

01
bat README.md
02
bat --style=numbers src/index.ts

详细介绍

bat - 一个带翅膀的 cat 克隆
构建状态 许可证 版本信息
一款带语法高亮和 Git 集成的 cat(1) 克隆。

主要功能 • 使用方法 • 安装 • 自定义 • 项目目标、替代方案
[English] [中文] [日本語] [한국어] [Русский]

语法高亮

bat 支持为大量编程和标记语言提供语法高亮:

语法高亮示例

Git 集成

bat 会与 git 通信,显示相对于索引的修改(见左侧边栏):

Git 集成示例

显示不可打印字符

你可以使用 -A/--show-all 选项来显示并高亮不可打印字符:

不可打印字符示例

自动分页

默认情况下,如果输出内容超出一屏,bat 会将自身的输出传递给分页器(例如 less)。 如果你希望 bat 始终像 cat 一样工作(从不分页输出),可以在命令行或配置文件中设置 --paging=never 选项。 如果你打算在 shell 配置中将 cat 别名设为 bat,可以使用 alias cat='bat --paging=never' 来保留默认行为。

文件拼接

即使设置了分页器,你仍然可以用 bat 拼接文件 :wink:。 每当 bat 检测到终端处于非交互模式(即将内容管道传递给另一个进程或文件时),bat 就会作为 cat 的直接替代品运行,并改为输出纯文本文件内容,不受 --pager 选项值的影响。

使用方法

在终端中显示单个文件

bat README.md

一次显示多个文件

bat src/*.rs

从标准输入读取并自动确定语法(注意,只有能从文件第一行确定语法时才能进行高亮, 通常是通过 #!/bin/sh 这样的 shebang)

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

从标准输入读取,并明确指定语言

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

显示并高亮不可打印字符:

bat -A /etc/hosts

将其用作 cat 的替代品:

bat > note.md  # quickly create a new file

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

bat -n main.rs  # show line numbers (only)

bat f - g  # output 'f', then stdin, then 'g'.
与其他工具集成
fzf

你可以将 bat 用作 fzf 的预览器。为此, 使用 bat 的 --color=always 选项强制输出彩色内容。你还可以使用 --line-range 选项限制长文件的加载时间:

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

更多信息请参阅 fzf 的 README。

find 或 fd

你可以使用 find 的 -exec 选项,通过 bat 预览所有搜索结果:

find … -exec bat {} +

如果你使用 fd,也可以使用 -X/--exec-batch 选项实现相同效果:

fd … -X bat
ripgrep

借助 batgrep,bat 可以用作 ripgrep 搜索结果的打印工具。

batgrep needle src/
tail -f

bat 可以与 tail -f 配合使用,持续监视指定文件并显示语法高亮。

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

请注意,必须关闭分页才能正常工作。我们还明确指定了语法 (-l log),因为此处无法自动检测语法。

git

你可以将 bat 与 git show 结合使用,以正确的语法高亮查看指定文件的旧版本:

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

你可以将 bat 与 git diff 结合使用,以正确的语法高亮查看代码更改附近的行:

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

如果你更愿意将其作为独立工具使用,可以查看 bat-extras 中的 batdiff。

如果你需要更多 Git 和 diff 操作支持,可以查看 delta。

xclip

bat 输出中的行号和 Git 修改标记可能会导致文件内容难以复制。要避免这种情况,你可以使用 -p/--plain 选项调用 bat,或者直接将输出传递给 xclip:

bat main.cpp | xclip

bat 会检测到输出被重定向,并打印纯文件内容。

man

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

export MANPAGER="bat -plman"
man 2 select

(在一些较旧的 Debian 或 Ubuntu 版本中,可执行文件名为 batcat,而不是 bat)

如果你希望将其打包成一个新命令,也可以使用 batman。

请注意,Manpage 语法是在此仓库中开发的,目前仍需完善。

prettier / shfmt / rustfmt

prettybat 脚本是一个包装器,可用于格式化代码并通过 bat 打印代码。

高亮显示 --help 消息

你可以使用 bat 为帮助文本添加颜色:$ cp --help | bat -plhelp

你也可以使用一个包装器来实现:

# in your .bashrc/.zshrc/*rc
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,你可以使用缩写:

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

这样,你可以继续使用 cp --help,但获得带颜色的帮助页面。

提示

要稍后删除这些缩写,请运行:

abbr -e -- --help
abbr -e -- -h

缩写名称前必须加上 --,因为 --help 和 -h 以连字符开头,否则会被 abbr 本身解释为标志。

请注意,在某些情况下,-h 可能不是 --help 的简写形式(例如 ls)。如果需要将 -h 用作命令参数,可以在参数前加上 \ 来转义上述定义的别名(例如 ls \-h)。

如果帮助语法存在任何问题,请在此仓库中报告。

安装

打包状态

在 Ubuntu 上(使用 apt)

……以及其他基于 Debian 的 Linux 发行版。

自 Ubuntu 20.04(“Focal”)起以及 Debian 2021 年 8 月起(Debian 11 - “Bullseye”),均已提供 bat。

如果你的 Ubuntu/Debian 版本足够新,只需运行:

sudo apt install bat

重要:在一些较旧的 Ubuntu/Debian 版本中,安装的可执行文件名为 batcat,而不是 bat(因为与另一个软件包名称冲突)。在较新的版本中,可执行文件名为 bat。如果安装后运行 bat --version 无效,请尝试运行 batcat --version。你可以设置 bat -> batcat 符号链接或别名,以避免由此引发的问题,并与其他发行版保持一致:

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

将 batcat 设置为 bat 的别名示例:

alias bat="batcat"
在 Ubuntu 上(使用最新的 .deb 软件包)

……以及其他基于 Debian 的 Linux 发行版。

如果该软件包尚未加入你的 Ubuntu/Debian 安装源,或者你想获取最新版本的 bat,请从发布页面下载最新的 .deb 软件包并通过以下方式安装:

sudo dpkg -i bat_0.18.3_amd64.deb  # adapt version number and architecture
在 Alpine Linux 上

只要启用了适当的软件仓库,你就可以从官方源安装 bat 软件包:

apk add bat
在 Arch Linux 上

你可以从官方源安装 bat 软件包:

pacman -S bat
在 Fedora 上

你可以从官方源安装 bat 软件包:

dnf install bat
在 Gentoo Linux 上

你可以从官方源安装 bat 软件包:

emerge sys-apps/bat
在 FreeBSD 上

你可以使用 pkg 安装预编译的 bat 软件包:

pkg install bat

也可以从 FreeBSD ports 自行构建:

cd /usr/ports/textproc/bat
make install
在 OpenBSD 上

你可以使用 pkg_add(1) 安装 bat 软件包:

pkg_add bat
通过 nix

你可以使用 nix 软件包管理器安装 bat:

nix-env -i bat
在 openSUSE 上

你可以使用 zypper 安装 bat:

zypper install bat
通过 snap 软件包

目前没有推荐的 snap 软件包。 可能有现存的软件包,但它们不受官方支持,且可能存在问题。

在 macOS(或 Linux)上通过 Homebrew 安装

你可以使用 Homebrew 安装 bat:

brew install bat
在 macOS 上通过 MacPorts 安装

或者使用 MacPorts 安装 bat:

port install bat
在 Windows 上

在 Windows 上安装 bat 有几种方式。安装好 bat 后, 请查看“在 Windows 上使用 bat”一节。

先决条件

你需要安装 Visual C++ Redistributable

使用 WinGet

你可以通过 WinGet 安装 bat:

winget install sharkdp.bat
使用 Chocolatey

你可以通过 Chocolatey 安装 bat:

choco install bat
使用 Scoop

你可以通过 scoop 安装 bat:

scoop install bat
使用预编译二进制文件:

你可以从发布页面下载预编译二进制文件,

你需要安装 Visual C++ Redistributable 软件包。

使用二进制文件

请查看发布页面,获取适用于多种不同架构的 bat 预编译版本。也提供静态链接的二进制文件:请查找文件名中带有 musl 的压缩包。

从源代码构建

如果要从源代码构建 bat,你需要 Rust 1.79.0 或更高版本。之后可以使用 cargo 构建全部内容:

从本地源代码构建
cargo install --path . --locked

说明

上面的 --path . 指定的是源代码目录,而不是 bat 的安装位置。 更多信息请参阅 cargo install 文档。

从 crates.io 安装
cargo install --locked bat

请注意,这两种方式都无法自动安装手册页或 shell 补全文件等附加文件。 如果从本地源代码安装,这些文件将由 cargo 生成,并应位于 cargo target 文件夹下的 build 目录中。

此外,也可以通过运行以下命令获取 shell 补全文件:

bat --completion <shell>
# see --help for supported shells

自定义

高亮主题

使用 bat --list-themes 获取所有可用语法高亮主题的列表。默认情况下,bat 在深色和浅色主题下分别使用 Monokai Extended 和 Monokai Extended Light。若要选择 TwoDark 主题,请使用 --theme=TwoDark 选项调用 bat,或将环境变量 BAT_THEME 设置为 TwoDark。在 shell 的启动文件中使用 export BAT_THEME="TwoDark",即可永久应用此更改。或者,也可以使用 bat 的 配置文件。

若想在自定义文件上预览不同的主题,可以使用以下命令(需要 fzf):

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

bat 会根据终端的背景颜色自动选择合适的主题。你可以使用 --theme-dark / --theme-light 选项或 BAT_THEME_DARK / BAT_THEME_LIGHT 环境变量,自定义所用主题。这在你经常切换深色和浅色模式时尤其有用。

你也可以按照下文 “添加新主题”一节使用自定义主题。

8 位主题

bat 有三个始终使用8 位颜色的主题,即使终端支持真彩色也是如此:

  • ansi 在任何终端上都能呈现不错的效果。它使用 3 位颜色:黑、红、绿、黄、蓝、品红、青和白。
  • base16 专为 base16 终端主题设计。它按照 base16 样式指南,使用 4 位颜色(3 位颜色加上亮色变体)。
  • base16-256 专为 tinted-shell 设计。它将某些亮色替换为 16 至 21 的 8 位颜色。不要仅仅因为你使用的是 256 色终端就选用此主题,而你并未使用 tinted-shell。

尽管这些主题的限制更多,但与真彩色主题相比,它们有三个优点:

  • 兼容性最高。有些终端工具不支持超过 3 位的颜色。
  • 能适应终端主题的变化,即使输出已经打印出来也是如此。
  • 与其他终端软件在视觉上更协调。
输出样式

你可以使用 --style 选项控制 bat 输出的外观。 例如,你可以使用 --style=numbers,changes,只显示 Git 更改和 行号,不显示网格和文件标题。设置 BAT_STYLE 环境 变量可永久应用这些更改,也可以使用 bat 的 配置文件。

默认情况下,bat 会启用 changes、grid、header-filename、numbers 和 snip。

可用的预定义样式如下:

样式描述
default启用上文列出的推荐样式组件。
full启用所有可用组件。
auto与 default 相同,但输出被管道传输时除外。
plain禁用所有可用组件。

可用的单项组件如下:

组件描述
changes显示 Git 修改标记。
headerheader-filename 的别名。
header-filename在内容前显示文件名。
header-filesize在内容前显示文件大小。
grid使用垂直线和水平线分隔侧边栏、标题和内容。
rule使用水平线分隔文件。
numbers在侧边栏显示行号。
snip在不同的行范围之间绘制分隔线。

提示

如果你在 bat 的配置文件中指定了默认样式,可以在单次运行 bat 时使用 --style 命令行参数 更改要显示的组件。通过在组件前加上 + 或 -,可以将其添加到当前样式中,或从当前样式中移除。

例如,如果你的配置中包含 --style=full,-snip,可以运行 bat 时使用 --style=-grid,+snip 来移除网格并重新添加 snip 组件。 或者,如果你想完全覆盖样式,可以使用 --style=numbers, 只显示行号。

装饰

默认情况下,bat 只在向交互式终端输出时显示装饰(例如行号、文件标题、网格边框等)。你可以使用 --decorations 选项控制此行为。使用 --decorations=always 可在将输出通过管道传输到其他命令时仍显示装饰;使用 --decorations=never 则可完全禁用装饰。可选值为 auto(默认值)、never 和 always。

此外还有 --force-colorization 选项,它是 --decorations=always --color=always 的别名。如果你希望在将 bat 的输出通过管道传输到其他程序时保留颜色和装饰,此选项会很有用。

添加新的语法/语言定义

如果发现 bat 中没有提供某种语法,可以按照以下说明轻松地为当前的 bat 安装添加新语法。

bat 使用出色的 syntect 库进行语法高亮。syntect 可以读取任何 Sublime Text .sublime-syntax 文件 和主题。

查找 Sublime Syntax 软件包的好资源是 Package Control。找到语法后:

  1. 创建一个包含语法定义文件的文件夹:

    mkdir -p "$(bat --config-dir)/syntaxes"
    cd "$(bat --config-dir)/syntaxes"
    
    # Put new '.sublime-syntax' language definition files
    # in this folder (or its subdirectories), for example:
    git clone https://github.com/tellnobody1/sublime-purescript-syntax
    
  2. 然后使用以下命令将这些文件解析为二进制缓存:

    bat cache --build
    
  3. 最后,使用 bat --list-languages 检查新语言是否可用。

    如果你想恢复默认设置,请执行:

    bat cache --clear
    
  4. 如果你认为某种特定语法应默认包含在 bat 中,请在阅读此处的政策和说明后,考虑提交“语法请求”工单:提交语法请求。

添加新主题

这与添加新的语法定义非常相似。

说明

自定义主题必须存储在 .tmTheme 文件中。 目前不支持较新的 .sublime-color-scheme 文件。

首先,创建一个存放新语法高亮主题的文件夹:

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

# Download a theme in '.tmTheme' format, for example:
git clone https://github.com/greggb/sublime-snazzy

# Update the binary cache
bat cache --build

最后,使用 bat --list-themes 检查新主题是否可用。

说明

bat 使用 .tmTheme 文件的名称作为主题名称。

添加或更改文件类型关联

你可以使用 --map-syntax 命令行选项添加新的(或更改现有的)文件名模式。该选项接受 pattern:syntax 形式的参数,其中 pattern 是一个 glob 模式,用于匹配文件名和绝对文件路径。syntax 部分是受支持语言的完整名称 (使用 bat --list-languages 查看概览)。

注意: 如果想让设置持久生效,通常应将此选项作为一项配置写入 bat 的配置文件,而不是仅在命令行中临时传入。一般来说,如果只想手动指定文件的语言,使用 -l 即可。

示例:要对所有扩展名为 .conf 的文件使用 “INI” 语法高亮,请使用

--map-syntax='*.conf:INI'

示例:要使用 “Git Ignore” 语法打开所有名为 .ignore 的文件(精确匹配),请使用:

--map-syntax='.ignore:Git Ignore'

示例:要使用 “Apache Conf” 语法打开 /etc/apache2 子文件夹中的所有 .conf 文件,请使用(此映射已内置):

--map-syntax='/etc/apache2/**/*.conf:Apache Conf'
使用其他分页器

bat 使用 PAGER 环境变量指定的分页器。如果未设置此变量,默认使用 less。你也可以使用 bat 内置的分页器,方法是设置 --pager=builtin,或将 BAT_PAGER 环境变量设为 "builtin"。

如果想使用其他分页器,可以修改 PAGER 变量,或设置 BAT_PAGER 环境变量,以覆盖 PAGER 中指定的设置。

说明

如果 PAGER 为 more 或 most,bat 将静默改用 less,以确保支持颜色。

如果想向分页器传递命令行参数,也可以通过 PAGER/BAT_PAGER 变量设置:

export BAT_PAGER="less -RFK"

除了使用环境变量,你也可以通过 bat 的配置文件配置分页器(--pager 选项)。

使用 less 作为分页器

使用 less 作为分页器时,bat 会自动向 less 传递额外选项,以改善使用体验。具体而言,会传递 -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。

正确解析 ANSI 颜色需要使用 -R/--RAW-CONTROL-CHARS 选项。

-F/--quit-if-one-screen 选项会让 less 在输出大小小于终端垂直尺寸时立即退出。对于小文件,这很方便,因为你无需按 q 退出分页器。

-K/--quit-on-intr 选项会让 less 在收到中断信号时立即退出。这可以确保 less 与 bat 一起在收到 SIGINT 时退出。

对于低于 530 版的 less(Windows 上低于 558 版),会添加 -X/--no-init 选项,以修复 -F/--quit-if-one-screen 功能中的一个错误。不过,这也会导致 less 的鼠标滚轮支持失效。如果你想在较旧版本的 less 中启用鼠标滚轮滚动,并且不介意失去“单屏时退出”功能,可以将分页器(通过 --pager 或 BAT_PAGER)设为 less -R。对于 530 版或更新版本的 less,该功能应该开箱即用。

使用 bat 的 -S/--chop-long-lines 选项时,会添加 -S/--chop-long-lines 选项。这会让 less 截断所有超过终端宽度的行。

缩进

bat 会自行将制表符扩展为 4 个空格,不依赖分页器。要更改此设置,只需添加 --tabs 参数,并指定要显示的空格数。

注意:为分页器设置制表符宽度(通过 bat 的 --pager 参数,或通过 less 的 LESS 环境变量)不会生效,因为分页器接收到的已经是扩展后的空格,而不是制表符。添加此行为是为了避免侧边栏导致的缩进问题。使用 --tabs=0 调用 bat 可以覆盖此设置,让分页器处理制表符。

深色模式

如果你在 macOS 中使用深色模式功能,可能会想配置 bat,让它根据操作系统主题使用不同的主题。以下代码片段会在_深色模式_下使用 default 主题,在_浅色模式_下使用 GitHub 主题。

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

同一深色模式功能现已在 GNOME 中提供,并会影响 org.gnome.desktop.interface color-scheme 设置。以下代码将上面的示例改为使用该设置。

# .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_PATH 或 BAT_CONFIG_DIR 环境变量,分别将 bat 指向非默认位置的配置文件或配置目录:

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

可以使用 --generate-config-file 选项创建默认配置文件。

bat --generate-config-file

现在还支持系统范围的配置文件:在 Linux 和 Mac OS 上,其位置为 /etc/bat/config;在 windows 上,其位置为 C:\ProgramData\bat\config。如果存在系统范围的配置文件,用户配置文件的内容会直接追加到其中。

格式

配置文件是一个简单的命令行参数列表。运行 bat --help 可查看所有可能的选项和值。此外,你可以在行首添加 # 字符来添加注释。

配置文件示例:

# Set the theme to "TwoDark"
--theme="TwoDark"

# Show line numbers, Git modifications and file header (but no grid)
--style="numbers,changes,header"

# Use italic text on the terminal (not supported on all terminals)
--italic-text=always

# Use C++ syntax for Arduino .ino files
--map-syntax "*.ino:C++"

在 Windows 上使用 bat

bat 在 Windows 上基本可以开箱即用,但某些功能可能需要额外配置。

先决条件

你需要安装 Visual C++ Redistributable 软件包。

分页

Windows 仅提供功能非常有限的分页器 more。你可以从 less 的主页或通过 Chocolatey下载 Windows 二进制文件。要使用它,请将二进制文件放入 PATH 中的某个目录,或定义环境变量。“Chocolatey 软件包”会自动安装 less。

颜色

从 v1511 开始,Windows 10 原生支持在 conhost.exe(命令提示符)和 PowerShell 中显示颜色,也支持较新版本的 bash。在较早版本的 Windows 上,你可以使用包含 ConEmu 的 Cmder。

**注意:**旧版本的 less 无法在 Windows 上正确解析颜色。要解决此问题,安装 Git 时可以将可选的 Unix 工具添加到 PATH。如果你没有安装其他分页器,可以通过传入 --paging=never 或将 BAT_PAGER 设为空字符串来完全禁用分页。

Cygwin

Windows 上的 bat 原生不支持 Cygwin 的 Unix 风格路径(/cygdrive/*)。传入绝对 Cygwin 路径作为参数时,bat 会报错: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 选项,可以用它在语法高亮前移除此类序列。或者,你可以向 bat 传入 --color=never --wrap=never 选项,同时禁用语法高亮和换行。

对于不可信输入,--sanitize=auto|always|never 选项还会将可激活终端的控制字节以及 Unicode 双向/零宽格式字符替换为 Unicode 替换字符。该选项会以相同的值启用 --strip-ansi。

说明

--strip-ansi 的 auto 选项不会移除纯文本中的转义序列。

终端与颜色

bat 支持有真彩色支持和无真彩色支持的终端。不过,大多数语法高亮主题的颜色并未针对 8 位颜色进行优化。因此,强烈建议使用支持 24 位真彩色的终端(terminator、konsole、iTerm2 等),或者使用专为有限颜色集设计的基础 8 位主题。有关详情以及支持真彩色的终端完整列表,请参阅这篇文章。

确保你的真彩色终端将 COLORTERM 变量设为 truecolor 或 24bit。否则,bat 将无法确定是否支持 24 位转义序列(并会退回到 8 位颜色)。

行号和网格几乎看不清

请尝试其他主题(运行 bat --list-themes 查看主题列表)。OneHalfDark 和 OneHalfLight 主题的网格和行号颜色更亮。

文件编码

bat 原生支持 UTF-8 和 UTF-16。对于其他所有文件编码,你可能需要先转换为 UTF-8,因为通常无法自动检测这些编码。你可以使用 iconv 进行转换。 例如,如果你有一个采用 Latin-1(ISO-8859-1)编码的 PHP 文件,可以这样调用:

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

注意:如果 bat 无法自动检测语法,你可能需要使用 -l/--language 选项。

开发

# Recursive clone to retrieve all submodules
git clone --recursive https://github.com/sharkdp/bat

# Build (debug version)
cd bat
cargo build --bins

# Run unit tests and integration tests
cargo test

# Install (release version)
cargo install --path . --locked

# Build a bat binary with modified syntaxes and themes
bash assets/create.sh
cargo install --path . --locked --force

如果你想构建一个使用 bat 美化打印功能的应用程序库,请参阅 API 文档。 请注意,将 bat 作为库依赖时,必须启用 regex-onig 或 regex-fancy 特性。

贡献

请查看 CONTRIBUTING.md 指南。

维护者

安全漏洞

请参阅 SECURITY.md。

项目目标和替代方案

bat 致力于实现以下目标:

  • 提供美观、先进的语法高亮
  • 与 Git 集成,以显示文件修改
  • 成为 (POSIX) cat 的直接替代品
  • 提供易于使用的命令行界面

如果你在寻找类似程序,还有许多替代方案。有关对比,请参阅 此文档。

许可证

Copyright (c) 2018-2025 bat-developers。

bat 根据 MIT License 或 Apache License 2.0 的条款提供,你可以任选其一。

有关许可证详情,请参阅 LICENSE-APACHE 和 LICENSE-MIT 文件。

评论

支持 Markdown