mcpField
B
bat

bat

公式Agent-ready
github.com開発ツール61.0kbat今日更新
リポジトリ公式サイト

bat について

ファイル内容を表示する際にシンタックスハイライトを提供します。Git 統計情報を表示し、複数の出力形式とテーマをカスタマイズできます。

主な機能

  1. 01200 以上の言語とフォーマットにシンタックスハイライトを対応
  2. 02行番号を表示し Git の変更をマーク
  3. 03テーマと書式設定オプションで出力スタイルをカスタマイズ

活用シーン

  1. 01開発中のコードファイルをシンタックスコンテキストと共に表示
  2. 02ターミナルで設定やドキュメントファイルを確認
  3. 03ページャー内で Git 追跡ファイルの変更を確認

インストール

OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。

$
brew install bat

インストール後にbat --versionを実行して確認します。

コマンド例

よく使うコマンドを使う順に並べています。

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

詳細

翼の生えた cat クローン、bat
ビルド状況 ライセンス バージョン情報
シンタックスハイライトと Git 統合機能を備えた cat(1) クローンです。

主な機能 • 使い方 • インストール • カスタマイズ • プロジェクトの目標、代替ツール
[English] [中国語] [日本語] [韓国語] [ロシア語]

シンタックスハイライト

bat は、多数のプログラミング言語やマークアップ言語のシンタックスハイライトに対応しています。

シンタックスハイライトの例

Git 統合

bat は git と連携し、インデックスとの差分を表示します(左側のサイドバーを参照)。

Git 統合の例

非表示文字の表示

-A/--show-all オプションを使用すると、非表示文字を表示して強調できます。

非表示文字の例

ページャーの自動使用

デフォルトでは、出力が1画面に収まらない場合、bat は自身の出力をページャー(例:less)にパイプします。 常に cat のように動作させ(出力をページャーに渡さないようにし)たい場合は、コマンドラインまたは設定ファイルでオプションとして --paging=never を指定できます。 シェルの設定で cat を bat にエイリアスする場合は、デフォルトの動作を維持するために alias cat='bat --paging=never' を使用できます。

ファイルの連結

ページャーを設定していても、bat を使ってファイルを連結できます :wink:。 bat が非対話型のターミナル(つまり、別のプロセスやファイルにパイプするとき)を検出すると、--pager オプションの値にかかわらず、cat のドロップイン置換として動作し、プレーンなファイル内容の出力に切り替わります。

使い方

ターミナルに単一のファイルを表示する

bat README.md

複数のファイルを一度に表示する

bat src/*.rs

標準入力から読み込み、構文を自動判定する(ハイライトは、通常は #!/bin/sh のようなシバンによって、ファイルの最初の行から構文を判定できる場合にのみ機能します)

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 を使うと、ripgrep の検索結果を bat で表示できます。

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 リリースでは、実行ファイル名が bat ではなく batcat です)

これを新しいコマンドにまとめて使いたい場合は、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 ディストリビューション。

bat はUbuntu では 20.04(「Focal」)以降、Debian では 2021 年 8 月(Debian 11「Bullseye」)以降で利用できます。

Ubuntu/Debian のインストール環境が十分に新しい場合は、次を実行するだけです。

sudo apt install bat

重要:古い一部の Ubuntu/Debian リリースでは、(別のパッケージと名前が競合するため)実行ファイルは bat ではなく batcat としてインストールされます。新しいリリースでは、実行ファイルは 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 パッケージはありません。 既存のパッケージが利用できる場合がありますが、公式にはサポートされておらず、問題が含まれている可能性があります。

Homebrew 経由(macOS または Linux)

Homebrewを使ってbatをインストールできます。

brew install bat
MacPorts 経由(macOS)

または、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

man ページやシェル補完ファイルなどの追加ファイルは、どちらの方法でも 自動的にはインストールできないことに注意してください。 ローカルソースからインストールする場合は、これらのファイルはcargoによって生成され、 cargo の target フォルダー内のbuild以下に配置されます。

さらに、次のコマンドを実行してシェル補完を利用することもできます。

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

カスタマイズ

ハイライトテーマ

構文ハイライトで使用できるテーマの一覧を取得するには、bat --list-themes を使用します。デフォルトでは、bat はダークテーマに Monokai Extended、ライトテーマに Monokai Extended Light を使用します。TwoDark テーマを選択するには、--theme=TwoDark オプションを指定して bat を呼び出すか、BAT_THEME 環境変数に TwoDark を設定します。変更を永続化するには、シェルの起動ファイルで 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 には、True Color に対応している場合でも、常に8 ビットカラーを使用するテーマが 3 つあります。

  • ansi は、どのターミナルでも十分な見栄えになります。黒、赤、緑、黄、青、マゼンタ、シアン、白の 3 ビットカラーを使用します。
  • base16 は、base16 のターミナルテーマ向けに設計されています。base16 のスタイルガイドラインに沿って、4 ビットカラー(3 ビットカラーとその明るいバリエーション)を使用します。
  • base16-256 は、tinted-shell 向けに設計されています。一部の明るい色を、16~21 の 8 ビットカラーに置き換えます。256 色対応のターミナルを使用しているだけで tinted-shell を使っていない場合は、使用しないでください。

これらのテーマには制約がありますが、True Color のテーマにはない利点が 3 つあります。

  • 互換性が最大限に高くなります。ターミナルユーティリティの中には、3 ビットを超えるカラーに対応していないものがあります。
  • ターミナルテーマの変更に適応します。すでに表示された出力にも適用されます。
  • ほかのターミナルソフトウェアと、より調和した見た目になります。
出力スタイル

--style オプションを使用すると、bat の出力の表示を制御できます。 たとえば、--style=numbers,changes を指定すると、グリッドやファイルヘッダーを表示せずに、Git の変更と行番号だけを表示できます。BAT_STYLE 環境変数を設定すると、これらの変更を永続化できます。または、bat の 設定ファイルを使用することもできます。

デフォルトでは、bat は changes、grid、header-filename、numbers、snip を有効にします。

利用可能な定義済みスタイルは次のとおりです。

StyleDescription
default上記の推奨スタイルコンポーネントを有効にします。
full利用可能なすべてのコンポーネントを有効にします。
auto出力がパイプで渡されない限り、default と同じです。
plain利用可能なすべてのコンポーネントを無効にします。

利用可能な個別のコンポーネントは次のとおりです。

ComponentDescription
changesGit の変更マーカーを表示します。
headerheader-filename の別名です。
header-filenameコンテンツの前にファイル名を表示します。
header-filesizeコンテンツの前にファイルサイズを表示します。
gridサイドバーとヘッダーをコンテンツから区切る縦線/横線を表示します。
ruleファイルを区切る横線を表示します。
numbersサイドバーに行番号を表示します。
snip異なる行範囲の間に区切り線を描画します。

ヒント

bat の設定ファイルでデフォルトのスタイルを指定している場合、--style コマンドライン引数を使って、bat の実行ごとに表示するコンポーネントを変更できます。 コンポーネントの前に + または - を付けると、現在のスタイルに追加したり、現在のスタイルから削除したりできます。

たとえば、設定ファイルに --style=full,-snip が含まれている場合、--style=-grid,+snip を指定して bat を実行すると、グリッドを削除して 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'

例:.ignore という名前のすべてのファイル(完全一致)を「Git Ignore」構文で開くには、次のようにします。

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

例:/etc/apache2 のサブフォルダーにあるすべての .conf ファイルを「Apache Conf」構文で開くには、次のようにします(このマッピングはすでに組み込まれています)。

--map-syntax='/etc/apache2/**/*.conf:Apache Conf'
別のページャーの使用

bat は PAGER 環境変数で指定されたページャーを使います。この変数が設定されていない場合、デフォルトで less が使われます。--pager=builtin を指定するか、BAT_PAGER 環境変数に "builtin" を設定して、bat 組み込みのページャーを使うこともできます。

別のページャーを使いたい場合は、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に設定されている場合。

-R/--RAW-CONTROL-CHARSオプションは、ANSIカラーを正しく解釈するために必要です。

-F/--quit-if-one-screenオプションを指定すると、出力サイズがターミナルの縦方向のサイズより小さい場合に、lessはすぐに終了します。小さなファイルでは、ページャーを終了するためにqを押す必要がなくなり便利です。

-K/--quit-on-intrオプションを指定すると、割り込みシグナルを受信したときにlessはすぐに終了します。これにより、SIGINTを受け取った際にbatとともにlessも終了するようにできます。

-X/--no-initオプションは、lessのバージョンが530未満(Windowsでは558未満)の場合に追加され、-F/--quit-if-one-screen機能の不具合を修正します。ただし、lessでマウスホイールが使えなくなります。古いバージョンのlessでマウスホイールによるスクロールを有効にし、quit-if-one-screen機能を使えなくてもよい場合は、ページャー(--pagerまたはBAT_PAGER)にless -Rを設定できます。less 530以降では、特別な設定なしで動作するはずです。

batの-S/--chop-long-linesオプションが使用されている場合、-S/--chop-long-linesオプションが追加されます。これにより、ターミナル幅を超える行をlessで切り詰めます。

インデント

batはページャーに依存せず、タブを4つのスペースに展開します。これを変更するには、表示するスペース数を指定して--tabs引数を追加します。

注:ページャーのタブストップを設定しても(batの--pager引数、またはlessのLESS環境変数を使用)、反映されません。ページャーには、タブではなく、すでに展開済みのスペースが渡されるためです。この動作は、サイドバーによって生じるインデントの問題を避けるために追加されています。batを--tabs=0で実行すると、この動作を上書きし、ページャーにタブを処理させることができます。

ダークモード

macOSのダークモード機能を利用している場合は、OSのテーマに応じて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環境変数を使用して、それぞれ設定ファイルまたは設定ディレクトリの場所をデフォルト以外の場所に指定できます。

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 という非常に限られた機能のページャーしか含まれていません。Windows 用の less バイナリは、ホームページまたはChocolateyからダウンロードできます。使用するには、バイナリを PATH 内のディレクトリに配置するか、環境変数を定義してください。Chocolatey パッケージを使うと、less が自動的にインストールされます。

色

Windows 10 は、v1511 以降、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 オプションに対応している場合、構文強調表示の前にこのオプションでそのようなシーケンスを削除できます。また、--color=never --wrap=never オプションを bat に渡すと、構文強調表示と折り返しの両方を無効にできます。

信頼できない入力に対しては、--sanitize=auto|always|never オプションを使うと、ターミナルを動作させる制御バイトと Unicode の双方向テキスト/ゼロ幅書式文字も Unicode の置換文字に置き換えられます。このオプションは、同じ値の --strip-ansi を適用します。

メモ

--strip-ansi の auto オプションは、構文がプレーンテキストの場合、エスケープシーケンスの削除を回避します。

ターミナルと色

bat は、TrueColor に対応するターミナルと対応しないターミナルの両方を扱えます。ただし、ほとんどの構文強調表示テーマの色は、8 ビットカラー向けに最適化されていません。そのため、24 ビット TrueColor に対応するターミナル(terminator、konsole、iTerm2 など)を使用するか、色数が限られた環境向けに設計された基本的な8 ビットテーマを使うことを強くおすすめします。詳しい説明と、TrueColor に対応するターミナルの一覧については、この記事を参照してください。

TrueColor 対応のターミナルで、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 ファイルをご覧ください。

コメント