18 KiB
シンタックスハイライトとGitとの連携機能付きの cat(1) クローン。
特徴 • 使い方 • インストール • カスタマイズ • プロジェクトの目標と既存の類似したOSS • 翻訳 [中文][日本語]
シンタックスハイライト
bat
は多くのプログラミング言語やマークアップ言語のシンタックスハイライトに対応しています。
Gitの統合
bat
は git
とも連携しており、差分を表現する記号が表示されます(図の左端):
空白文字の可視化
-A
/--show-all
オプションをつけることで、空白文字を可視化できます:
自動呼び出し
出力が1つの画面に対して大きすぎる場合、bat
は自身の出力を less
にパイプで繋げることが可能です。
ファイルの連結
あなたはさらにファイルを連結させるに使うことも可能です😉。
bat
は非対話型のターミナルを検出すると、いつでも cat
の完全互換として振る舞い、
プレーンなファイルを表示します。
使い方
単一のファイルを表示させたい
> bat README.md
複数のファイルを一度に表示させたい場合
> bat src/*.rs
標準入力から自動的に構文を決定させたい場合
> curl -s https://sh.rustup.rs | bat
標準入力から明示的に言語を指定したい場合
> yaml2json .travis.yml | json_pp | bat -l json
空白文字を可視化させたい場合:
> bat -A /etc/hosts
cat
の代わりに bat
を使用する際の例:
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'.
インストール
Ubuntu
... や他のDebianベースのLinuxディストリビューション
最新の .deb
パッケージをこちらからダウンロードして、インストールしてください:
sudo dpkg -i bat_0.12.1_amd64.deb # adapt version number and architecture
Arch Linux
Arch Linuxの公式リソースからインストールできます。
pacman -S bat
Void Linux
xbps-ininstall経由で bat
をインストールできます。
xbps-install -S bat
Fedora
Fedora Modular経由で bat
をインストールできます。これはFedora 29以上ではデフォルトで有効化されています。 もしそうでなければ、 dnf install fedora-repos-modular
を実行してセットアップし、 fedora-modular
と fedora-updates-modular
が /etc/yum.repos.d
で有効化されていることを確認してください。
dnf module install bat
Gentoo Linux
Gentoo Linuxの公式リソースからインストールできます。
emerge sys-apps/bat
FreeBSD
事前にコンパイル済みであるpkgをインストールできます:
pkg install bat
または、FreeBSDのportsから自身でビルドすることも可能です:
cd /usr/ports/textproc/bat
make install
nix
bat
をnix package manager経由でインストールすることができます:
nix-env -i bat
openSUSE
You can install bat
with zypper:
bat
をzypperでインストールすることができます:
zypper install bat
macOS
Homebrewでインストールすることができます:
brew install bat
Windows
You can download prebuilt binaries from the [Release page], or install it with :
事前にビルド済みのバイナリをリリースページからダウンロードすることができます。または、scoopでインストールすることも可能です。
scoop install bat
See below for notes.
Docker
コンテナ内でbat
を使いたい方のためにDocker imageが用意されています。
docker pull danlynn/bat
alias bat='docker run -it --rm -e BAT_THEME -e BAT_STYLE -e BAT_TABS -v "$(pwd):/myapp" danlynn/bat'
Ansible
Ansibleでインストールすることができます:
# Install role on local machine
ansible-galaxy install aeimer.install_bat
---
# Playbook to install bat
- host: all
roles:
- aeimer.install_bat
これは以下のディストリビューションで動作するはずです:
- Debian/Ubuntu
- ARM (eg. Raspberry PI)
- Arch Linux
- Void Linux
- FreeBSD
- MacOS
From binaries
多くの異なるアーキテクチャのためのプレビルドバージョンをリリースページからチェックしてみてください。静的にリンクされている多くのバイナリも利用できます: ファイル名に musl
を含むアーカイブを探します。
From source
bat
をソースからビルドしたいならば、Rust 1.29 以上の環境が必要です。そして、 cargo
をビルドに対して使用します:
cargo install bat
カスタマイズ
ハイライト テーマ
bat --list-themes
を使うと現在利用可能なシンタックスハイライトのテーマを入手できます。 TwoDark
テーマを選ぶためには --theme=TwoDark
オプションをつけるか BAT_THEME
という環境変数に TwoDark
を代入する必要があります。 シェルの起動ファイルに export BAT_THEME="TwoDark"
と定義すればその設定が変わることはないでしょう。あるいは、 bat
の設定ファイルを利用してください。
もし、ファイルにより異なるテーマを利用したい場合は、以下のfzf
を利用した以下のコマンドを使うことができます:
bat --list-themes | fzf --preview="bat --theme={} --color=always /path/to/file"
bat
はデフォルトだと黒い背景色のターミナルに適しています。しかし、GitHub
や OneHalfLight
のような白い背景色のテーマでもいい感じにすることができます。
以下のカスタムテーマを参考にしてみてください。
'Adding new themes' section below
出力のスタイル
--style
を使うことで bat
の表示の見た目を変更することができます。例えば、 --style=numbers,changes
と入力します。すると、Gitの差分と行番号だけが表示され、グリッド線とファイルヘッダーは表示されません。
環境変数に BAT_STYLE
を定義するとこれらの設定を永続的に使用することができます。
設定ファイルを参考にしても良いでしょう。
新しい構文の追加 / 言語の定義
bat
はシンタックスハイライトのためのsyntext
という最高にイケてるライブラリを使用しています。syntect
はSublime Textのために作られた.sublime-syntax
fileテーマです。新しい構文を定義するために以下の手順を行います。
構文定義ファイルを入れておくためのフォルダを作る:
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
次のコマンドを使用して、これらのファイルをバイナリキャッシュに解析します:
bat cache --build
最後に bat --list-languages
と入力すると新しい言語が利用可能かどうかチェックします。
デフォルトの設定に戻したいときは以下のコマンドを実行します:
bat cache --clear
新しいテーマの追加
これは構文を新しく定義するやり方と非常に似ています。
まず、新しいシンタックスハイライトのテーマのフォルダを作ります:
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
は環境変数 PAGER
に使用するページャーを明記します。
この環境変数が定義されていない場合、デフォルトで less
が使用されます。もし、異なるページャーが使用したい場合は、PAGER
を修正してください。または、PAGER
を上書きする環境変数として BAT_PAGER
を定義することも可能です。
もし、ページャーにコマンドライン引数を渡したい場合は、 PAGER
/BAT_PAGER
環境変数を定義してください:
export BAT_PAGER="less -RF"
環境変数を利用する代わりに、 bat
の設定ファイルの --pager
オプションを使用することも可能です。
注意: デフォルトにより、ページャーが less
にセットされているならば bat
は以下のコマンドラインを受け付けるでしょう。
ページャーのオプション: -R
/--RAW-CONTROL-CHARS
, -F
/--quit-if-one-screen
, -X
/--no-init
最初の -R
はANSIカラーを正しく解釈するために必要です。2番目の -F
は出力サイズがターミナルの縦のサイズよりも小さいならば less
に即座に終了するように命令します。したがって、少量のファイルのためにページャーを終了する q
を押す必要がありません。3番目のオプションの -X
は less
の古いバージョンの機能である --quit-if-one-screen
でバグを修正するために必要です。運の悪いことに、これは less
のマウス-ホイールのサポートを無効にします。もし、マウス-ホイール スクローリングを有効にしたいなら、-R
だけをオプションとしてつけてください(ただし、これは --quit-if-one-screen
を無効にするでしょう)。または、 less
の最近バージョンを利用し、 -RF
をつけてください。 これは望ましいことに --quit-if-one-screen
と マウス-ホイールスクローリングの両方を有効にするでしょう。
スクロールが未だ動作しないのであれば、加えて -S
オプションを追加してみてください。
設定ファイル
bat
は設定ファイルでカスタマイズすることが可能です。ファイルの場所はOSに依存します。使用しているOSのデフォルトパスを調べるには以下のコマンドを実行してください:
bat --config-file
また、環境変数 BAT_CONFIG_PATH
に設定ファイルの場所を明記することもできます:
export BAT_CONFIG_PATH="/path/to/bat.conf"
フォーマット
この設定ファイルはコマンドライン引数の単純なリストです。 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
# Add mouse scrolling support in less (does not work with older
# versions of "less")
--pager="less -FR"
# Use C++ syntax (instead of C) for .h header files
--map-syntax h:cpp
# Use "gitignore" highlighting for ".ignore" files
--map-syntax .ignore:.gitignore
Windows での bat
の利用
Windows 上で bat
はほとんど動作しますが、いくつかの機能は設定を必要をする場合があります。
ページング
Windowsには、more
形式の非常に限られたページャーしか含まれていません。ホームページまたはChocolateyからWindows用のless
バイナリをダウンロードできます。 使用するには、バイナリをPATH
の通っているディレクトリに配置するか、環境変数を定義します。
色
Windows 10 はv1151からbashの新しいバージョンと同様に conhost.exe
(コマンドプロンプト)と PowerShell の色をネイティブサポートしていません。Windows の新しいバージョンでは、Cmderを使うことができます。これはConEmuを含んでいます。
注意: Git と MSYS の less
はWindows上で色を正しく解釈しません。もし、あなたが他のページャーをインストールしていないのであれば、 --paging=never
オプションを付け加えるまたは BAT_PAGER
に空文字を設定することでページングを完全に無効にできます。
Cygwin
Windows上の bat
は Cygwin のunix風のpath(/cygdrive/*
)をネイティブサポートしていません。
絶対的なcygwinパスを引数として受けたときに、 bat
は以下のエラーを返すでしょう: The system cannot find the path specified. (os error 3)
wrapperを作成するまたは以下の関数を .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[@]}"
}
トラブルシューティング
ターミナルと色
bat
はターミナルがトゥルーカラーをサポートしている/していない関係なくサポートします。しかし、シンタックスハイライトのテーマの色が8-bitカラーに最適化されていない場合、24-bitであるトゥルーカラーをサポートしているターミナルを使用することを強く推奨します(terminator
, konsole
, iTerm2
, ...)。
この記事には24-bitカラーがサポートされているターミナルの一覧が掲載されています。
本当の色をターミナルにセットするために、環境変数 COLORTERM
に truecolor
か 24bit
のどちらかを代入してください。さもなければ、 bat
はどの色を使うのか決定することができません。または、24-bit エスケープシーケンスがサポートされません(そして、8-bit colorに戻ります)。
行番号とグリッド線がほとんど見えない
異なるテーマを試してみてください(bat --list-themes
でテーマを閲覧できます)。 OneHalfDark
と OneHalfLight
テーマはグリッド線と線の色を明るくします。
開発
# 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
# Build a bat binary with modified syntaxes and themes
bash assets/create.sh
cargo install -f
プロジェクトの目標と既存の類似したOSS
bat
は以下の目標を達成しようと試みています:
- 美しい高度なシンタックスハイライトの提供
- ファイルの差分を表示するためのGitとの連携
- (POSIX)
cat
との完全互換 - ユーザーフレンドリーがコマンドラインインターフェースの提供
既存の類似したOSSはたくさんあります。
bat
とこれらを比較した表がこちらにあります。
ライセンス
Copyright (c) 2018-2020 bat-developers.
bat
は MIT License 及び Apache License 2.0 の両方の条件の下で配布されています。
ライセンスの詳細については LICENSE-APACHE 及び LICENSE-MIT ファイルを参照して下さい。