There is a lot of zsh plugin manager around :
https://github.com/unixorn/awesome-zsh-plugins#frameworks
They all allow you to add cool new features to your shell easily and for authors to easily share their plugin with users and frameworks.
While a lot of people are probably using frameworks like oh-my-zsh
which does
everything for them with minimal setup.
But since I have been using zsh since much before than those frameworks existed, I always ran my custom config.
Historically, I went for the “default” one (or it seemed that way at the time) called zplug
. It allows you to specify the plugins you want and manage them easily. But zplug
is a lot more things, it offers many more features
like installing binary from the internet manage some configuration edge cases
and other things. And it slowwws, I didn’t realize it at first but more I used
it and more I realized that opening a shell would take me a second or two
sometime. Moreover, last release was 5 years ago.
I looked a bit more into it and figured it was actually pretty simple to dumb
it down and write my own. So I wrote one and called it "vtplug"
for “very tiny
plugin manager” and since it’s so small it can be installed directly by copying
it in your config as function from here :
https://gitlab.com/chmouel/zsh-config/blob/master/functions/vtplug
to use it you first need to copy the function in your config and then have a variable that has all the plugins you want to install, which for me is :
ZSH_PLUGINS=(
agkozak/zsh-z
zsh-users/zsh-autosuggestions
chmouel/chmoujump
chmouel/kubectl-config-switcher
b4b4r07/emoji-cli::emoji-cli.zsh
joshskidmore/zsh-fzf-history-search
)
It currently only support public GitHub based plugins so effectively add the
https://github.com/
to the repo/owner specified in ZSHZ_PLUGINS variable.
You then may want to add some configuration of the plugin right after, like this, I have those by you may want to have a look at each plugin READMEs to see which settings you may want to set :
ZSH_TAB_TITLE_ONLY_FOLDER=true
ZSH_TAB_TITLE_DEFAULT_DISABLE_PREFIX=true
ZSHZ_DATA=${HOME}/.cache/zsh-cache-z
EMOJI_CLI_USE_EMOJI=true
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#9400d3"
ZSH_FZF_HISTORY_SEARCH_BIND="^S"
EMOJI_CLI_KEYBIND="^X^S"
and then simply execute vtplug after that :
-$ vtplug
vtplug
would then load all plugins and check them out in ~/.cache/zsh/repos/
if it wasn’t checked out before.
If you need to update the plugin you just do a :
vtplug -u
and it will run a git pull
in those repos.
It’s simple as that, and load in milliseconds.
My whole zsh config is located here if you want to have a look:
https://gitlab.com/chmouel/zsh-config
If you really want a plugin manger that does much more and probably more
flexible, perhaps look at antidote
which seems to be pretty fast and
feature full.