Fish-like fast/unobtrusive autosuggestions for zsh.
It suggests commands as you type, based on command history.
Clone this repository somewhere on your machine. This guide will assume ~/.zsh/zsh-autosuggestions
.
git clone git://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestions
Add the following to your .zshrc
:
source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh
Start a new terminal session.
Clone this repository into $ZSH_CUSTOM/plugins
(by default ~/.oh-my-zsh/custom/plugins
)
git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
Add the plugin to the list of plugins for Oh My Zsh to load:
plugins=(zsh-autosuggestions)
Start a new terminal session.
As you type commands, you will see a completion offered after the cursor in a muted gray color. This color can be changed by setting the ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE
variable. See configuration.
If you press the → key (forward-char
widget) or End (end-of-line
widget) with the cursor at the end of the buffer, it will accept the suggestion, replacing the contents of the command line buffer with the suggestion.
If you invoke the forward-word
widget, it will partially accept the suggestion up to the point that the cursor moves to.
You may want to override the default global config variables after sourcing the plugin. Default values of these variables can be found here.
Note: If you are using Oh My Zsh, you can put this configuration in a file in the $ZSH_CUSTOM
directory. See their comments on overriding internals.
Set ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE
to configure the style that the suggestion is shown with. The default is fg=8
.
Set ZSH_AUTOSUGGEST_STRATEGY
to choose the strategy for generating suggestions. There are currently two to choose from:
default
: Chooses the most recent match.match_prev_cmd
: Chooses the most recent match whose preceding history item matches the most recently executed command (more info). Note that this strategy won't work as expected with ZSH options that don't preserve the history order such as HIST_IGNORE_ALL_DUPS
or HIST_EXPIRE_DUPS_FIRST
.This plugin works by triggering custom behavior when certain zle widgets are invoked. You can add and remove widgets from these arrays to change the behavior of this plugin:
ZSH_AUTOSUGGEST_CLEAR_WIDGETS
: Widgets in this array will clear the suggestion when invoked.ZSH_AUTOSUGGEST_ACCEPT_WIDGETS
: Widgets in this array will accept the suggestion when invoked.ZSH_AUTOSUGGEST_EXECUTE_WIDGETS
: Widgets in this array will execute the suggestion when invoked.ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS
: Widgets in this array will partially accept the suggestion when invoked.ZSH_AUTOSUGGEST_IGNORE_WIDGETS
: Widgets in this array will not trigger any custom behavior.Widgets that modify the buffer and are not found in any of these arrays will fetch a new suggestion after they are invoked.
Note: A widget shouldn't belong to more than one of the above arrays.
Set ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE
to an integer value to disable autosuggestion for large buffers. The default is unset, which means that autosuggestion will be tried for any buffer size. Recommended value is 20.
This can be useful when pasting large amount of text in the terminal, to avoid triggering autosuggestion for too long strings.
This plugin provides three widgets that you can use with bindkey
:
autosuggest-accept
: Accepts the current suggestion.autosuggest-execute
: Accepts and executes the current suggestion.autosuggest-clear
: Clears the current suggestion.For example, this would bind ctrl + space to accept the current suggestion.
bindkey '^ ' autosuggest-accept
If you have a problem, please search through the list of issues on GitHub to see if someone else has already reported it.
Before reporting an issue, please try temporarily disabling sections of your configuration and other plugins that may be conflicting with this plugin to isolate the problem.
When reporting an issue, please include:
.zshrc
configuration that will reproduce the problem. See this comment for a good example of what this means.zsh --version
)Remove the code referencing this plugin from ~/.zshrc
.
Remove the git repository from your hard drive
rm -rf ~/.zsh/zsh-autosuggestions # Or wherever you installed
Edit the source files in src/
. Run make
to build zsh-autosuggestions.zsh
from those source files.
Pull requests are welcome! If you send a pull request, please:
develop
branch (NOT master
)Testing is performed with shunit2
(v2.1.6). Documentation can be found here.
The test script lives at script/test_runner.zsh
. To run the tests, run make test
.
This project is licensed under MIT license. For the full text of the license, see the LICENSE file.