ohmyzsh/plugins/alias-finder/README.md
Codebuff Contributor 358568dd32 fix(per-directory-history): save to both history files and only push stack in directory mode
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>
2026-06-13 02:21:31 +00:00

2.3 KiB
Raw Blame History

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

image

Options

In order to clarify, let's say alias a=abc has source 'abc' and destination 'a'.

  • Use --longer or -l to include aliases where the source is longer than the input (in other words, the source could contain the whole input).
  • Use --exact or -e to avoid aliases where the source is shorter than the input (in other words, the source must be the same with the input).
  • Use --cheaper or -c to avoid aliases where the destination is longer than the input (in other words, the destination must be the shorter than the input).