Rust製のcatを便利にしたコマンド、bat。
公式READMEに記載されている通り、
シンタックスハイライト・Gitの差分が分かる機能をcatに追加したものです。
bat/README-ja.md at master · sharkdp/bat
cat と違い長いファイルの場合は less のようにページャーが自動で表示されるのも便利なポイント ☺️
この記事では bat の使い方、設定方法などを記載します。
検証した環境
1 | bat | 0.22.1 |
インストール
Macを使っている人はhomebrewで簡単にインストール出来ます!
$ brew install bat
それ以外のインストール方法は公式GitHubを参考に
sharkdp/bat: A cat(1) clone with wings.
私が行っている設定
batの内容はだいたい知ってる人向けに、先に私が行っている設定を記載します。
aliasの設定
好みの問題もありますが、cat・less と置き換えてしまっても遜色ないためaliasでcat・less使用時に bat が呼び出されるようにしています。
alias cat="bat"
alias less="bat"
この設定をすると
- 元のcat・lessが簡単には使えなくなる
- /bin/cat README.md のようにすれば使える
- batがインストールされていないとcat・lessコマンドが機能しなくなる
点に注意です!
テーマの設定
batにはシンタックスハイライトのテーマが複数用意されています。
(テーマの確認方法は後述)BAT_THEME
という環境変数にテーマ名を指定する事で、
自分の好きなテーマをデフォルトで使用するように設定出来ます。
export BAT_THEME="Dracula"
Draculaに変更後
使い方
シンタックスを有効にしてファイルの確認
batを利用する上で1番重要な部分!
とても簡単で、catと同じようにファイル名を指定するだけでシンタックスが有効になります!
$ bat screenshot.js
手軽にシンタックス効いてくれるのは最高ですね ☺️
複数ファイルの確認
引数に複数のファイルを指定
# 複数ファイルを同時に確認
$ bat screenshot.js search.js
もしくは*
を使って拡張子やファイル名指定も可能
$ bat *.js
対応言語
batはかなりの数の言語に対応してます。
# 対応言語の確認
$ bat --list-languages
上記は対応している言語・拡張子のごくごく一部。
私は聞いた事のないものが沢山ありました。笑
「自分の使っている言語にはシンタックスハイライトしてくれないんじゃないか…?」という心配はまずしなくて大丈夫そうです。
オプション
batはデフォルトでキレイな見た目にしてくれるため、オプション使わずとも十分だったりします!
とはいえせっかくなのでいくつかピックアップしてみました。
-A, —show-all
改行コードやタブも表示してくれます。
$ bat -A main.go
せっかくのシンタックスが無効になってしまいますが
厳格な記載が求められる、例えば/etc/hosts
には有効という事が公式に記載されてます
$ bat -A /etc/hosts
-H, —highlight-line <N:M>…
指定した行をハイライトします。
$ bat -H 8:9 main.go
—style <style-components>
行番号の表示・ファイルサイズの表示・Gitの差分…など、
bat利用時の表示方法を指定出来ます!
良く利用しそうなものをピックアップ
値 | 効果 |
---|---|
numbers | 行番号の表示 |
changes | Gitの差分状況の表示 |
header-filename | ヘッダーにファイル名を表示 |
header-filesize | ヘッダーにファイル名サイズを表示 |
grid | ここまでの画像のようにボーダーで区切って表示 |
full | 全部入り |
--style=/* 使用したい値 */
のように指定し、値の部分は,
区切りで複数指定が出来ます
$ bat --style=changes,header-filesize main.go
$ bat --style=full main.go
—color <when>
シンタックスハイライトの実行タイミングについて指定が出来ます。
基本このオプションは使わずに問題ないですが、
例えばfzf
など他ライブラリと組み合わせるとシンタックスハイライトが効かないケースがあるため、
そのような場合にこのオプションを使用します!
# fzfの --previewオプション内で使用する場合は --color=always を指定しないとシンタックスハイライトが効かない
$ find * -type f | fzf --preview "bat --color=always --style=header-filename,grid {}"
テーマの確認方法
batにはシンタックスハイライトのテーマが複数用意されています!
更にどのテーマがどのような見た目になるか、試す方法まで公式で紹介されています。
至れり尽くせりです。
# テーマの見た目を確認。
# /path/to/file の部分には シンタックスハイライト の確認をするためのファイルパスを指定
$ bat --list-themes | fzf --preview="bat --theme={} --color=always /path/to/file"
# ex: 実行するフォルダ内に main.go がある場合
$ bat --list-themes | fzf --preview="bat --theme={} --color=always main.go"
上記のコマンドを試すためにはfzf
が必要になります
# homebrewでfzfをインストールする
$ brew install fzf
あとは
- 環境変数
BAT_THEME
に指定する - —themeオプションを使用する
事でテーマの指定が出来ます。
# 環境変数でテーマの指定
export BAT_THEME="Dracula"
# --themeオプションでテーマを指定
$ bat --theme="Dracula" main.go