Discover, install, and configure shell plugins with Fig Plugin Store →

Git Ignore (laggardkernel)

Generate .gitignore files with templates from offline

25 stars


License: MIT

ZSH plugin. Generate .gitignore with templates from offline, taking the advantage of fzf fuzzy finder, bat syntax highlighting and ZSH completion.



Basically, this plugin is an offline variant of with ZSH goodies:

  • imitating template generation behavior of exactly
  • fuzzy finder fzf selection with preview
  • ZSH completion
  • pull/update templates from command line (no need to update this plugin)



The only ZSH plugin manager solves the time-consuming init for nvm, nodenv, pyenv, rvm, rbenv, thefuck, fasd, etc, with its amazing async Turbo Mode.

zplugin ice pick'init.zsh' blockf
zplugin light laggardkernel/git-ignore
alias gi="git-ignore"

Update the plugin with

$ zplg update laggardkernel/git-ignore


The only framework does optimizations in plugins with sophisticated coding skill:

mkdir -p ${ZDOTDIR:-$HOME}/.zprezto/contrib 2>/dev/null
git clone ${ZDOTDIR:-$HOME}/.zprezto/contrib/git-ignore


$ alias gi="git-ignore"

# Depends on fzf
$ gi # then press <Enter>

# Separate params with spaces or commas
$ gi macos linux windows vim emacs >> ./.gitignore

# Overwrite existing .gitignore
$ gi macos,linux,windows vim emacs >| ./.gitignore

New CLI (v1.1.0+)

❯ alias gi="git-ignore"

❯ gi -h
git-ignore 1.1.0 by laggardkernel <>

Generates .gitignore files offline using templates from

  git-ignore [options]
  git-ignore keyword1 keyword2 keyword3

  git-ignore macos,linux,windows vim emacs >> ./.gitignore

  -l, --list                List available templates
  -s, --search keyword      Search template with keyword in filenames
  -u, --update              Init/Update local templates repo
  -c, --clean               Clean local gitignore templates repo
  -h, --help                Display this help screen
  -v, --version             Display version information and exit

❯ gi -l
# omitted because it is too long
Total: 479

❯ gi -s py # then press <Tab> for completion
pycharm      pycharm+all  pycharm+iml  pydev        python

❯ gi -u
[Info] Updating gitignore repo...
Already up to date.

❯ gi -c
[Info] No available local gitignore repo
[Info] Use `gi -u` to init

Environment Variables

GI_TEMPLATE: location for templates storage. It fallbacks to:

  1. .git-ignore directory under plugin's root folder
  2. ${XDG_DATA_HOME}/git-ignore (in case the script is not used as a ZSH plugin)
  3. $HOME/.local/share/git-ignore

Optional Dependencies

  • fzf: Command-line fuzzy finder
  • bat: Syntax highlighting for .gitignore templates.

Default Keybindings for fzf

Keybind Action
Enter Confirm
Tab Toggle mark
? Toggle preview window
Ctrl - R Toggle selection
Alt - W Toggle preview wrap
Ctrl - K / P Selection up
Ctrl - J / N Selection down
Alt - K / P Preview up
Alt - J / N Preview down


  • [ ] Support all types of templates files from dvcs/gitignore
  • [x] Templates
  • [x] Patch
  • [x] Stack
  • [ ] Order
  • [x] Remove unnecessary external dependencies: ~~sed~~, ~~awk~~
  • [x] ZSH completion
  • [x] Separate compdef into file functions/_git-ignore
  • [x] git sub-command git ignore
  • [x] Options like --list, --update, --search, etc
  • ~~[ ] Configure the plugin with zstyle~~
  • [x] custom template storage location with GI_TEMPLATE
  • [ ] Script file compatible with BASH

Related projects

wfxr/forgit: git-ignore was designed to be a feature of it. And generating .gitignore files offline was first introduced by me into it. Later, git-ignore is separated from forgit because of disagreement on implementation.

dvcs/gitignore: The largest collection of useful .gitignore templates, maintained by

simonwhitaker/gibo: Another .gitignore generator using templates from github/gitignore written in POSIX sh.


The MIT License (MIT)

Copyright (c) 2019 laggardkernel

Copyright (c) 2019 Wenxuan Zhang