zplug
Manage Zsh plugins and themes
SYNOPSIS
zplug command [options] [arguments]
PARAMETERS
command
Specifies the action zplug should perform. Common commands include install
, update
, load
, clean
, and status
.
install
Installs new plugins and their dependencies defined in your .zshrc
file.
update
Updates all installed plugins to their latest versions.
load
Processes and loads the plugins defined in your configuration. This command is typically run automatically within .zshrc
.
clean
Removes plugins that are no longer referenced in your configuration file.
status
Displays the current status of installed and loaded plugins.
check
Checks for outdated plugins that need updating.
clear
Clears the plugin cache, forcing a fresh load or install on next run.
config
Generates the necessary internal configuration for zplug to function correctly, often run as part of the installation.
--help
Shows help information for the specified command or general usage of zplug.
--verbose
Enables verbose output, showing more details during zplug operations.
--log
Logs output to a file instead of displaying it on stdout.
DESCRIPTION
zplug is a feature-rich, modern plugin manager designed specifically for Zsh. It aims to provide a fast, flexible, and powerful way to manage your Zsh configuration by handling plugins, themes, fonts, and even binaries from various sources like GitHub, Bitbucket, Gist, local paths, or arbitrary URLs. Unlike older managers, zplug focuses on asynchronous loading, which significantly speeds up shell startup times. It offers advanced features such as on-demand loading, dependency resolution, automatic compilation, caching, and a fuzzy-finder for easy plugin discovery. Users define their plugins in the .zshrc
file using a clear, declarative syntax, allowing for fine-grained control over how and when each component is loaded, making it a robust choice for both simple and complex Zsh setups.
CAVEATS
zplug requires Zsh to be installed and configured as your shell. Its extensive options for plugin definition can have a learning curve, and incorrect configurations might lead to slower shell startup or unexpected behavior. Migrating from other plugin managers requires careful cleanup to avoid conflicts.
PLUGIN DEFINITION SYNTAX
Plugins are defined in the .zshrc
using the zplug
command followed by the plugin path and various options. For example: zplug 'plugins/git', from:oh-my-zsh, defer:2
zplug 'b4b4r07/enhancd', nice:10, as:command, use:bin/enhancd
These options allow specifying the source (GitHub, OMZ, etc.), how the plugin should be loaded (asynchronously, on-demand), its type (plugin, theme, command, font), dependencies, and post-load hooks. This declarative syntax is key to zplug's flexibility.
ASYNCHRONOUS LOADING
One of zplug's core features is its ability to load plugins asynchronously. This means that instead of waiting for each plugin to fully initialize before the shell becomes interactive, zplug can defer their loading to the background, significantly improving the perceived shell startup speed. This is primarily controlled via options like defer
and nice
in plugin definitions, allowing users to fine-tune the loading behavior of individual plugins.
HISTORY
Developed by @b4b4r07 and first released around 2015, zplug emerged as a next-generation Zsh plugin manager with a strong focus on performance and flexibility. Its asynchronous loading capabilities were a significant advancement over existing solutions, addressing common complaints about slow Zsh startup times due to numerous plugins. Over the years, it has gained popularity among Zsh users seeking more control and speed in their shell environments.
SEE ALSO
zsh(1), antigen(1), oh-my-zsh(1), prezto(1)