/zsh-autocomplete

🤖 Real-time type-ahead completion for Zsh. Asynchronous find-as-you-type autocompletion.

Primary LanguageShellMIT LicenseMIT

zsh-autocomplete

zsh-autocomplete adds real-time type-ahead autocompletion to Zsh. Find as you type, then press Tab to insert the top completion, ShiftTab to insert the bottom one, or /PgDn to select another completion.

file-search

Enjoy using this software? Become a sponsor!.

Other Features

Besides live autocompletion, zsh-autocomplete comes with many other useful completion features.

Optimized completion config

Zsh's completion system is powerful, but hard to configure. So, zsh-autocomplete does it for you, while providing a manageable list of configuration settings for changing the defaults.

Live history search

Press CtrlR or CtrlS to do live, multi-line history search.

history-search

History menu

Press (or Alt or PgUp) to open a menu with the last 16 history items. If the command line is not empty, then the contents of the command line are used to perform a fuzzy history search.

history menu

Multi-selection

Press CtrlSpace in the completion menu or the history menu to insert more than one item.

multi-select

Recent dirs completion

Works out of the box with zero configuration, but also supports zsh-z, zoxide, z.lua, rupa/z.sh, autojump and fasd.

recent dirs

Key Bindings

On the command line:

Key(s) Action Widget
Tab Accept top completion complete-word
ShiftTab Accept bottom completion complete-word
CtrlSpace Show additional completions list-expand
Cursor up (if able) or history menu up-line-or-search
Cursor down (if able) or completion menu down-line-or-select
PgUp / Alt History menu (always) history-search
PgDn / Alt Completion menu (always) menu-select
CtrlR Live history search, from newest to oldest history-incremental-search-backward
CtrlS Live history search, from oldest to newest history-incremental-search-forward

In the completion menu:

Key(s) Action
/ / / Change selection
Alt Backward one group
Alt Forward one group
PgUp / PgDn Page up/down
Home / End Beginning/End of menu
CtrlR Full text search or previous search match
CtrlS Full text search or next search match
CtrlSpace Multi-select
Tab Accept selection
ShiftTab Accept bottom completion
Enter Accept command line
most other keys Accept selection, then perform usual action

In the history menu:

Key(s) Action
/ Change selection
Home/End Beginning/End of menu
CtrlSpace Multi-select
Tab Accept selection
Enter Accept command line
most other keys Accept selection, then perform usual action

Requirements

Recommended:

  • Tested to work with Zsh 5.7 or newer.

Minimum:

  • Should theoretically work with Zsh 5.4 or newer, but I'm unable to test that.

Installing & Updating

If you use Znap, simply add the following to your .zshrc file:

znap source marlonrichert/zsh-autocomplete

To update, do

% znap pull

For configuration options, see the included .zshrc file.

Manual installation

  1. Clone the repo:
    % cd ~/Git  # or wherever you keep your Git repos/Zsh plugins
    % git clone --depth 1 -- https://github.com/marlonrichert/zsh-autocomplete.git
  2. Add to your ~/.zshrc file, before any calls to compdef:
    source ~/Git/zsh-autocomplete/zsh-autocomplete.plugin.zsh
  3. Remove any calls to compinit from your ~/.zshrc file.

Then, to update, do:

% git -C ~zsh-autocomplete pull

Other Frameworks/Plugin Managers

To install with another Zsh framework or plugin manager, please refer to your framework's/plugin manager's documentation for instructions.

Troubleshooting

Try the steps in the bug report template.

Author

© 2020-2021 Marlon Richert

License

This project is licensed under the MIT License. See the LICENSE file for details.