A cat(1) clone with wings.
Go to file
Pit Kleyersburg 23813cc08b Make --style parameter more flexible
The `--style` parameter now accepts a comma-separated list of strings,
where every element defines either a single output component (`changes`,
`grid`, `header`, `numbers`) or a predefined style (`full`,
`line-numbers`, `plain`).

If available, bat picks the first predefined style in the user-supplied
style-list and ignores everything else. If no predefined style was
requested, the other parameters that are simple output components will
be used.

Examples:

    --style changes,full,numbers

  Will internally be reduced to only the predefined style `full`.

    --style plain,full

  Will internally be reduced to only the predefined style `plain`.

    --style changes,numbers

  Will not be reduced, because the list does not contain any predefined
  styles.

(Note: if `grid` is requested but no other parameters, bat still creates
the left-most column with a width of `PANEL_WIDTH`. I didn't want to
introduce further logic in this PR that drops or adapts the width of the
left column.)
2018-05-10 12:20:38 +02:00
assets Use syntect newlines mode (instead of nonewlines) 2018-05-06 19:50:48 +02:00
ci Add CI scripts 2018-04-22 15:35:24 +02:00
src Make --style parameter more flexible 2018-05-10 12:20:38 +02:00
.gitignore Remove user specific change 2018-05-06 11:22:48 +02:00
.travis.yml Run 'cargo fmt' and enforce via Travis 2018-05-06 15:10:46 +02:00
Cargo.lock Make --style parameter more flexible 2018-05-10 12:20:38 +02:00
Cargo.toml Make --style parameter more flexible 2018-05-10 12:20:38 +02:00
LICENSE-APACHE Add license 2018-04-22 15:34:14 +02:00
LICENSE-MIT Add license 2018-04-22 15:34:14 +02:00
README.md Add usage examples 2018-05-09 00:33:49 +02:00

bat

Build Status Version info

A cat(1) clone with syntax highlighting and Git integration.

Features

Syntax highlighting

bat supports syntax highlighting for a large number of programming and markup languages:

Syntax highlighting example

Git integration

bat communicates with git to show modifications with respect to the index (see left side bar):

Git integration example

Automatic paging

bat can pipe its own output to less if the output is too large for one screen.

File concatenation

Oh.. you can also use it to concatenate files 😉. Whenever bat detects a non-interactive terminal, it will fall back to printing the plain file contents.

Usage

Display a single file on the terminal

> bat README.md

Display multiple files at once

> bat src/*.rs

Explicitly specify the language

> yaml2json .travis.yml | json_pp | bat -l json
> curl -s https://raw.githubusercontent.com/sharkdp/bat/master/src/main.rs | bat -l rs

Installation

From binaries

Check out the Release page for binary builds and Debian packages.

Arch Linux

On Arch Linux, you can install the AUR package via yaourt, or manually:

git clone https://aur.archlinux.org/bat.git
cd bat
makepkg -si

From source

If you want to build to compile bat from source, you need Rust 1.24 or higher. You can then use cargo to build everything:

cargo install bat

On macOS, you might have to install cmake (brew install cmake) in order for some dependencies to be built.

Customization

bat uses the excellent syntect library for syntax highlighting. syntect can read any Sublime Text .sublime-syntax file and theme.

To build your own language-set and theme, follow these steps:

Create a folder with a syntax highlighting theme:

BAT_CONFIG_DIR="$(bat cache --config-dir)"

mkdir -p "$BAT_CONFIG_DIR/themes"
cd "$BAT_CONFIG_DIR/themes"

# Download a theme, for example:
git clone https://github.com/jonschlinkert/sublime-monokai-extended

# Create a 'Default.tmTheme' link
ln -s "sublime-monokai-extended/Monokai Extended.tmTheme" Default.tmTheme

Create a folder with language definition files:

mkdir -p "$BAT_CONFIG_DIR/syntax"
cd "$BAT_CONFIG_DIR/syntax"

# Download some language definition files, for example:
git clone https://github.com/sublimehq/Packages/
rm -rf Packages/Markdown
git clone https://github.com/jonschlinkert/sublime-markdown-extended

Finally, use the following command to parse all these files into a binary cache:

bat cache --init

If you ever want to go back to the default settings, call:

bat cache --clear