Skip to content

laggardkernel/git-ignore

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

git-ignore

License: MIT

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

images/preview-01.jpg

Feature

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

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

Installation

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 https://github.com/laggardkernel/git-ignore.git ${ZDOTDIR:-$HOME}/.zprezto/contrib/git-ignore

Usage

$ 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 <laggardkernel@gmail.com>
https://github.com/laggardkernel/git-ignore

Generates .gitignore files offline using templates from gitignore.io

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

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

Options:
  -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
1C,1C-Bitrix,A-Frame,Actionscript,Ada,Adobe,AdvancedInstaller,Agda,AL...
# 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

Todo

  • Support all types of templates files from dvcs/gitignore
    • Templates
    • Patch
    • Stack
    • Order
  • Remove unnecessary external dependencies: sed, awk
  • ZSH completion
    • Separate compdef into file functions/_git-ignore
  • git sub-command git ignore
  • Options like --list, --update, --search, etc
  • [ ] Configure the plugin with zstyle
    • 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 https://www.gitignore.io.

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

License

The MIT License (MIT)

Copyright (c) 2019 laggardkernel

Copyright (c) 2019 Wenxuan Zhang

About

Generate .gitignore files with templates from gitignore.io offline

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages