ZSH abbreviation expansion plugin
# ~/.config/zabrze/config.toml
[[snippets]]
name = "git"
trigger = "g"
snippet = "git"
[[snippets]]
name = "awk '{print $1}'"
trigger = ".1"
snippet = "awk '{print $1}'"$ eval "$(zabrze init --bind-keys)"then
$ g<SP>
# ↓ expanded
$ git
$ cat a.txt | .1<CR>
# ↓ expanded and executed
$ cat a.txt | awk '{print $1}'[[snippets]]
name = ">/dev/null 2>&1"
trigger = "null"
snippet = ">/dev/null 2>&1"
global = true$ echo a null<SP>
# ↓ expanded
$ echo a >/dev/null 2>&1[[snippets]]
name = "git commit"
trigger = "c"
snippet = "commit"
global = true
context = '^git\s'
[[snippets]]
name = "git commit -m"
trigger = "cm"
snippet = "commit -m '{}'"
cursor = "{}" # optional; defaults to "{}"
global = true
context = '^git\s'
[[snippets]]
name = "branch name"
trigger = "B"
snippet = "$(git symbolic-ref --short HEAD)"
evaluate = true
global = true
context = '^git\s'$ git c<SP>
# ↓ expanded
$ git commit
$ git cm<SP>
# ↓ expanded and move into quotes
$ git commit -m '|'
$ git push -d origin B<CR>
# ↓ expanded and executed
$ git push -d origin main[[snippets]]
name = "chrome"
trigger = "chrome"
snippet = "open -a 'Google Chrome'"
if = '[[ "$OSTYPE" =~ darwin ]]' # only available in macOS
[[snippets]]
name = "trash"
trigger = "rm"
snippet = "trash"
if = "(( ${+commands[trash]} ))" # available if trash is installed
[[snippets]]
name = "rm -r"
trigger = "rm"
snippet = "rm -r" # fallback[[snippets]]
name = "python3 *.py"
trigger-pattern = '^(?<file>.+\.py)$'
snippet = "python3 $file"
evaluate = true
# or
[[snippets]]
name = "python3 *.py"
trigger-pattern = '\.py$'
snippet = "python3 $trigger"
evaluate = true$ ./a.py<CR>
# ↓ expanded and executed
$ python3 ./a.pyYou can download a binary release here.
zinit blockf light-mode as"program" from"gh-r" for \
atload'eval "$(zabrze init --bind-keys)"' \
Ryooooooga/zabrze$ cargo install zabrze$ brew install ryooooooga/tap/zabrze
⚠️ Note: YAML configuration format is deprecated. Please use TOML instead.
zabrze reads configuration files from the following locations:
$ZABRZE_CONFIG_HOMEif set, otherwise$XDG_CONFIG_HOME/zabrze(defaults to$HOME/.config/zabrze)- Configuration files are read in lexicographical order.
- Supported file extensions are
toml(recommended),yaml(deprecated), andyml(deprecated).
The configuration file (TOML) defines a list of abbreviations. Each abbreviation has the following properties:
name(string): A descriptive name for the abbreviation.trigger(string, required, mutually exclusive withtrigger-pattern): The abbreviation to expand.trigger-pattern(string, required, mutually exclusive withtrigger): A regular expression to match the abbreviation.snippet(string, required): The text to replace the abbreviation with.global(boolean): A boolean value indicating whether the abbreviation should be expanded globally. Defaults tofalse.context(string): A regular expression that must match the beginning of the line for the abbreviation to be expanded.evaluate(boolean): A boolean value indicating whether the snippet should be evaluated as a shell command. Defaults tofalse.if(string): A conditional expression that must evaluate to true for the abbreviation to be expanded.cursor(string ornull): A string that specifies the cursor position after expansion. Defaults to{}.abort-on-error(boolean): Experimental: Whenevaluateistrue, this option controls the behavior when a command inside the snippet fails. Iftrue, the snippet expansion will be aborted if the command substitution fails. Defaults tofalse.