Skip to main content

Fuzzy autocorrect for mistyped Linux/macOS shell commands. Works in bash and zsh.

Project description

lk-autocorrect

Fuzzy autocorrect for mistyped shell commands. Works in zsh and bash on Linux and macOS, and PowerShell on Windows.

When you mistype a command, instead of a dead error you get a suggestion:

$ gti status
[lk-autocorrect] Did you mean: git status?
[lk-autocorrect] Run it? [y/N] y
$ dockr ps
[lk-autocorrect] Did you mean: docker ps?
[lk-autocorrect] Run it? [y/N] y
$ terrafrom plan
[lk-autocorrect] Did you mean: terraform plan?
[lk-autocorrect] Run it? [y/N] y

Requirements

  • macOS or Linux (zsh or bash) — check with echo $SHELL
  • Python 3.11+ — check with python3 --version
  • Windows — PowerShell 5 or PowerShell 7

Install

macOS / Linux

Step 1 — Install lk-autocorrect

pip install lk-autocorrect

macOS users: if you see an externally-managed-environment error, use:

pip install lk-autocorrect --user --break-system-packages

Step 2 — Add lk-autocorrect to PATH (if needed)

If lk-autocorrect is not found after installing, run the command to add it to PATH:

export PATH="$HOME/Library/Python/3.13/bin:$PATH"

Add that line to your ~/.zshrc or ~/.bashrc to make it permanent, then restart your shell.

Step 3 — Run the installer

lk-autocorrect install

This automatically adds the source line to your ~/.zshrc or ~/.bashrc.

Step 4 — Reload your shell

source ~/.zshrc   # zsh
source ~/.bashrc  # bash

Step 5 — Test it

gti status        # → Did you mean: git status?
dockr ps          # → Did you mean: docker ps?
kubctl get pods   # → Did you mean: kubectl get pods?

Windows (PowerShell)

Step 1 — Install lk-autocorrect

pip install lk-autocorrect

Step 2 — Add lk-autocorrect to PATH

After installing, if PowerShell cannot find lk-autocorrect run the following commands. This will find where pip installed it and add it to your PATH permanently:

# find where pip installed lk-autocorrect
pip show lk-autocorrect

# add Scripts folder to PATH permanently
$scriptsPath = (pip show lk-autocorrect | Select-String "Location").Line.Split(" ")[1] + "\..\..\Scripts"
$env:PATH += ";$scriptsPath"

This adds the Python Scripts folder to your PATH so lk-autocorrect can be found. Open a new PowerShell window or restart Powershell after running this.

Step 3 — Run the installer

lk-autocorrect install

This automatically adds the source line to your PowerShell profile ($PROFILE). After install you will see the PATH commands printed — run them if lk-autocorrect is not found.

Step 4 — Reload your profile

. $PROFILE

Step 5 — Test it

gti status        # → Did you mean: git status?
dockr ps          # → Did you mean: docker ps?
kubctl get pods   # → Did you mean: kubectl get pods?

Note: if you see a script execution error on first run:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Shell compatibility

Shell Platform Support Notes
zsh macOS / Linux Full Automatic — fires on any mistyped command
bash 4+ macOS / Linux Full Automatic — fires on any mistyped command
bash 3.2 macOS Partial Use lk <command> as fallback
PowerShell 5 Windows Full Automatic via CommandNotFoundAction
PowerShell 7 Windows Full Automatic via CommandNotFoundAction
Git Bash Windows Full Treated as bash — works automatically
WSL Windows Full Treated as Linux — works automatically
CMD Windows No hook mechanism available

bash 3.2 on macOS

This version does not support the command_not_found_handle hook that lk-autocorrect relies on for automatic correction.

When you source the script in bash 3.2 you will see:

[lk-autocorrect] bash 3.2 detected — automatic correction unavailable.
[lk-autocorrect] Use: lk <command>  e.g. lk gti status
[lk-autocorrect] Or switch to zsh: chsh -s /bin/zsh

Option 1 — use the lk fallback:

lk gti status       # → Did you mean: git status?
lk dockr ps         # → Did you mean: docker ps?

Option 2 — switch to zsh (recommended):

chsh -s /bin/zsh
# open a new terminal — autocorrect works automatically

Option 3 — upgrade bash:

brew install bash
echo '/opt/homebrew/bin/bash' | sudo tee -a /etc/shells
chsh -s /opt/homebrew/bin/bash

Python version

lk-autocorrect requires Python 3.11+ and is supported on older versions, but upgrading to 3.13+ is recommended since older versions no longer receive security patches.

Check your version:

python3 --version

Upgrade on macOS:

brew install python@3.13

Upgrade on Linux:

sudo apt install python3.13

Upgrade on Windows:

Download from python.org or:

winget install Python.Python.3.13

Usage

Once installed, autocorrect fires automatically whenever you mistype a command:

$ gti commit -m "fix bug"
[lk-autocorrect] Did you mean: git commit -m "fix bug"?
[lk-autocorrect] Run it? [y/N] y

Shell commands

Command Description
ac-add <cmd> Add a command to the store
ac-remove <cmd> Remove a command from the store
ac-list List all commands in the store
ac-test <typo> Preview what a typo would correct to
ac-help Show in-shell help
# add your own commands
ac-add "mycli"
ac-add "my-test-command"

# preview a correction
ac-test "dockr"
# [lk-autocorrect] 'dockr' → 'docker' (distance: 1)

# list everything in the store
ac-list

CLI commands

Command Description
lk-autocorrect install Install and set up shell hook
lk-autocorrect uninstall Remove from system
lk-autocorrect upgrade Upgrade to the latest stable version
lk-autocorrect upgrade --pre Upgrade to the latest beta/alpha
lk-autocorrect upgrade [version] Upgrade to a specific version
lk-autocorrect status Show installation status
lk-autocorrect verify Check file integrity and print checksums
lk-autocorrect help Show help

Configuration

macOS / Linux

Set these in your ~/.zshrc or ~/.bashrc before the source line:

# how forgiving the matcher is (1 = strict, 5 = loose) — default: 2
export AUTOCORRECT_THRESHOLD=2

# auto-run the correction without asking — default: false
export AUTOCORRECT_AUTO=true

# turn off colours — default: true
export AUTOCORRECT_COLOR=false

Windows (PowerShell)

Set these in your $PROFILE before the source line:

$env:AUTOCORRECT_THRESHOLD = "2"
$env:AUTOCORRECT_AUTO = "true"

Command store

macOS / Linux

The store lives at ~/.config/lk-autocorrect/commands.txt — one command per line, # lines are comments.

Windows

The store lives at %USERPROFILE%\.config\lk-autocorrect\commands.txt.

Ships with 150+ popular commands across git, docker, kubectl, terraform, AWS CLI, Azure CLI and more. Your store is preserved across updates and uninstalls (you are asked before it is deleted).

# add a command
ac-add "mycli"

# remove a command
ac-remove "mycli"

# or edit directly
nano ~/.config/lk-autocorrect/commands.txt  or  vim ~/.config/lk-autocorrect/commands.txt  # macOS / Linux
notepad $env:USERPROFILE\.config\lk-autocorrect\commands.txt  # Windows

How it works

  1. The shell hook (command_not_found_handler in zsh, command_not_found_handle in bash 4+, CommandNotFoundAction in PowerShell) fires when a command is not found.
  2. The typo is passed to matcher.py which compares it against every command in the store using Damerau-Levenshtein distance — an algorithm that counts insertions, deletions, substitutions, and transpositions. This means gtigit scores as distance 1 (one transposition) not 2.
  3. If the closest match is within AUTOCORRECT_THRESHOLD edits, the suggestion is shown.
  4. You confirm with y or it runs automatically if AUTOCORRECT_AUTO=true.

Upgrade

lk-autocorrect detects whether you installed via pip or pipx and runs the correct upgrade command automatically, then refreshes your shell files in one step.

# upgrade to the latest stable release
lk-autocorrect upgrade

# upgrade to the latest beta/alpha (pre-release)
lk-autocorrect upgrade --pre

# upgrade to a specific version
lk-autocorrect upgrade [version]
# example: lk-autocorrect upgrade 1.3.0b4

This works the same way on macOS, Linux, and Windows.


Uninstall

lk-autocorrect uninstall
pip uninstall lk-autocorrect

Verify integrity

lk-autocorrect verify

Prints the SHA256 checksums of the installed files so you can verify them against the GitHub release.


Contributing

Pull requests welcome.

  1. Fork the repo
  2. Create a branch: git checkout -b my-feature
  3. Make changes to src/autocorrect.sh, src/autocorrect.ps1 or src/matcher.py
  4. Test in zsh, bash, and PowerShell
  5. Open a PR

License

MIT — see LICENSE


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lk_autocorrect-1.3.0.tar.gz (16.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lk_autocorrect-1.3.0-py3-none-any.whl (20.0 kB view details)

Uploaded Python 3

File details

Details for the file lk_autocorrect-1.3.0.tar.gz.

File metadata

  • Download URL: lk_autocorrect-1.3.0.tar.gz
  • Upload date:
  • Size: 16.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lk_autocorrect-1.3.0.tar.gz
Algorithm Hash digest
SHA256 6cc95539112ed3204f6fb434c073fe4bdfe761b078462ece1e26a0713e869b52
MD5 d3a389d03d5970cd62b81dad8cb26ba6
BLAKE2b-256 9848952c09ae0277e87d31a4a25723472d5f568eb75fc4013a024efed6abd920

See more details on using hashes here.

Provenance

The following attestation bundles were made for lk_autocorrect-1.3.0.tar.gz:

Publisher: publish.yml on OladipupoGomez/lk-autocorrect

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lk_autocorrect-1.3.0-py3-none-any.whl.

File metadata

  • Download URL: lk_autocorrect-1.3.0-py3-none-any.whl
  • Upload date:
  • Size: 20.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lk_autocorrect-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6f74885c80802fb6a41120636d74bfaff4b00429e59870bef34f093cffc0f436
MD5 9ae6dab1fd08f3b5dc10617bbe4ee665
BLAKE2b-256 f0243c3ee797a278c791fd50a66ac3c1e4846c15e5a9021cd576e410d4a55dda

See more details on using hashes here.

Provenance

The following attestation bundles were made for lk_autocorrect-1.3.0-py3-none-any.whl:

Publisher: publish.yml on OladipupoGomez/lk-autocorrect

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page