The addhistory hook previously had two bugs when inc_append_history or share_history was not set: 1. Commands were only saved to one history file (HISTFILE or per-dir) depending on when fc -AI was called, resulting in lost history. 2. fc -p was called unconditionally after every command, corrupting the zsh history stack even in global mode. This caused the per-dir hook to push a new history frame on every command, breaking the global history state. Fix: always write both history files via fc -AI before any mode check, and only call fc -p (to push into per-directory history) when actually in directory mode. Signed-off-by: god032396-del <god032396@gmail.com>
2.3 KiB
alias-finder plugin
This plugin searches the defined aliases and outputs any that match the command inputted. This makes learning new aliases easier.
Setup
To use it, add alias-finder to the plugins array of your zshrc file:
plugins=(... alias-finder)
To enable it for every single command, set zstyle in your ~/.zshrc.
If the user has installed rg(ripgrep), it will be used because it's faster. Otherwise, it will use the grep command.
# ~/.zshrc
zstyle ':omz:plugins:alias-finder' autoload yes # disabled by default
zstyle ':omz:plugins:alias-finder' longer yes # disabled by default
zstyle ':omz:plugins:alias-finder' exact yes # disabled by default
zstyle ':omz:plugins:alias-finder' cheaper yes # disabled by default
As you can see, options are also available with zstyle.
Usage
When you execute a command alias finder will look at your defined aliases and suggest shorter aliases you could have used, for example:
Running the un-aliased git status command:
╭─tim@fox ~/repo/gitopolis ‹main›
╰─$ git status
gst='git status' # <=== shorter suggestion from alias-finder
On branch main
Your branch is up-to-date with 'origin/main'.
nothing to commit, working tree clean
Running a shorter git st alias from .gitconfig that it suggested :
╭─tim@fox ~/repo/gitopolis ‹main›
╰─$ git st
gs='git st' # <=== shorter suggestion from alias-finder
## main...origin/main
Running the shortest gs shell alias that it found:
╭─tim@fox ~/repo/gitopolis ‹main›
╰─$ gs
# <=== no suggestions alias-finder because this is the shortest
## main...origin/main
Options
In order to clarify, let's say
alias a=abchas source 'abc' and destination 'a'.
- Use
--longeror-lto include aliases where the source is longer than the input (in other words, the source could contain the whole input). - Use
--exactor-eto avoid aliases where the source is shorter than the input (in other words, the source must be the same with the input). - Use
--cheaperor-cto avoid aliases where the destination is longer than the input (in other words, the destination must be the shorter than the input).