{"id":26784828,"url":"https://github.com/ddlees/zinit","last_synced_at":"2025-09-01T03:08:46.855Z","repository":{"id":101927315,"uuid":"425063551","full_name":"ddlees/zinit","owner":"ddlees","description":"Fork of zdharma/zinit","archived":false,"fork":false,"pushed_at":"2021-11-05T19:32:51.000Z","size":4776,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-29T10:35:04.771Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ddlees.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"ddlees","custom":["https://commerce.coinbase.com/checkout/fa0b2012-0295-4d96-b10a-ed0140c5c12d"]}},"created_at":"2021-11-05T19:32:15.000Z","updated_at":"2021-11-05T19:34:56.000Z","dependencies_parsed_at":"2023-04-30T17:46:14.129Z","dependency_job_id":null,"html_url":"https://github.com/ddlees/zinit","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ddlees/zinit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddlees%2Fzinit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddlees%2Fzinit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddlees%2Fzinit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddlees%2Fzinit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ddlees","download_url":"https://codeload.github.com/ddlees/zinit/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddlees%2Fzinit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273068856,"owners_count":25039911,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-01T02:00:09.058Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-29T10:32:36.975Z","updated_at":"2025-09-01T03:08:46.846Z","avatar_url":"https://github.com/ddlees.png","language":"C","funding_links":["https://github.com/sponsors/ddlees","https://commerce.coinbase.com/checkout/fa0b2012-0295-4d96-b10a-ed0140c5c12d","https://www.paypal.me/ZdharmaInitiative","https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=D54B3S7C6HGME","https://www.patreon.com/psprint","https://github.com/sponsors/psprint","https://patreon.com/psprint"],"categories":[],"sub_categories":[],"readme":"[![paypal](https://img.shields.io/badge/-Donate-yellow.svg?longCache=true\u0026style=for-the-badge)](https://www.paypal.me/ZdharmaInitiative)\n[![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=D54B3S7C6HGME)\n[![patreon](https://img.shields.io/badge/-Patreon-orange.svg?longCache=true\u0026style=for-the-badge)](https://www.patreon.com/psprint)\n\n[![MIT License][MIT-badge]][MIT-link] [![][ver-badge]][ver-link] [![Join the chat at https://gitter.im/zdharma/zinit][gitter-badge]][gitter-link] [![Subscribe to r/zinit sub][reddit-badge]][reddit-link]\n\n\n\u003c!-- START doctoc generated TOC please keep comment here to allow auto update --\u003e\n\u003c!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --\u003e\n**Table of Contents**  *generated with [DocToc](https://github.com/thlorenz/doctoc)*\n\n- [News](#news)\n- [Zinit](#zinit)\n- [Zinit Wiki](#zinit-wiki)\n- [Quick Start](#quick-start)\n  - [Install](#install)\n    - [Automatic Installation (Recommended)](#automatic-installation-recommended)\n    - [Manual Installation](#manual-installation)\n  - [Usage](#usage)\n    - [Introduction](#introduction)\n    - [Plugins and snippets](#plugins-and-snippets)\n    - [Upgrade Zinit and plugins](#upgrade-zinit-and-plugins)\n    - [Turbo and lucid](#turbo-and-lucid)\n    - [Migration](#migration)\n    - [More Examples](#more-examples)\n- [How to Use](#how-to-use)\n  - [Ice Modifiers](#ice-modifiers)\n    - [Cloning Options](#cloning-options)\n    - [Selection of Files (To Source, …)](#selection-of-files-to-source-)\n    - [Conditional Loading](#conditional-loading)\n    - [Plugin Output](#plugin-output)\n    - [Completions](#completions)\n    - [Command Execution After Cloning, Updating or Loading](#command-execution-after-cloning-updating-or-loading)\n    - [Sticky-Emulation Of Other Shells](#sticky-emulation-of-other-shells)\n    - [Others](#others)\n    - [Order of Execution](#order-of-execution)\n  - [Zinit Commands](#zinit-commands)\n    - [Help](#help)\n    - [Loading and Unloading](#loading-and-unloading)\n    - [Completions](#completions-1)\n    - [Tracking of the Active Session](#tracking-of-the-active-session)\n    - [Reports and Statistics](#reports-and-statistics)\n    - [Compiling](#compiling)\n    - [Other](#other)\n  - [Updating Zinit and Plugins](#updating-zinit-and-plugins)\n- [Completions](#completions-2)\n  - [Calling `compinit` Without Turbo Mode](#calling-compinit-without-turbo-mode)\n  - [Calling `compinit` With Turbo Mode](#calling-compinit-with-turbo-mode)\n  - [Ignoring Compdefs](#ignoring-compdefs)\n  - [Disabling System-Wide `compinit` Call (Ubuntu)](#disabling-system-wide-compinit-call-ubuntu)\n- [Zinit Module](#zinit-module)\n  - [Motivation](#motivation)\n  - [Installation](#installation)\n    - [Without Zinit](#without-zinit)\n    - [With Zinit](#with-zinit)\n  - [Measuring Time of `source`s](#measuring-time-of-sources)\n  - [Debugging](#debugging)\n- [Hints and Tips](#hints-and-tips)\n  - [Customizing Paths](#customizing-paths)\n  - [Non-GitHub (Local) Plugins](#non-github-local-plugins)\n  - [Extending Git](#extending-git)\n- [Supporting](#supporting)\n- [Getting Help and Community](#getting-help-and-community)\n\n\u003c!-- END doctoc generated TOC please keep comment here to allow auto update --\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.com/zdharma/zinit\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/zdharma/zinit/images/zinit.png\"/\u003e\n\u003c/a\u003e\n\u003c/p\u003e\n\n# News\n\n\u003cdetails\u003e\n  \u003csummary\u003eHere are the new features and updates added to Zinit in the last 90 days.\u003c/summary\u003e\n\n* 16-07-2020\n  - A new ice `null` which works exactly the same as `as\"null\"`, i.e.: it makes\n    the plugin a *null*-one ↔ without any scripts sourced (by default, unless\n    `src''` or `multisrc''` are given) and compiled, and without any completions\n    searched / installed. Example use case:\n\n        zi null sbin\"vims\" for MilesCranmer/vim-stream\n    \n    instead of:\n    \n        zi as\"null\" sbin\"vims\" for MilesCranmer/vim-stream\n    .\n\n  - A **new annex** [**Unscope**](https://github.com/zinit-zsh/z-a-unscope) :)\n    It's goal is: to allow the usage of the unscoped — i.e.: given without any\n    GitHub user name — plugin IDs. Basically it allows to specify, e.g.: **zinit load \n    _zsh-syntax-highlighting_** instead of **zinit load\n    _zsh-users/zsh-syntax-highlighting_**. It'll automatically send a request to\n    the GitHub API searching for the best candidate (max. # of stars and of\n    forks). It also has an embedded, static database of short *nicknames* for\n    some of the plugins out there (requests for addition are welcomed), e.g.:\n    **vi-reg** for **zsh-vi-more/evil-registers**.\n\n  - A fresh and elastic hook-based architecture has been implemented and\n    deployed — the code is much cleaner and the development will be easier,\n    i.e.: quicker :).\n\n  - Set of small improvements: **a)** `silent''` mutes the `Snippet not loaded`\n    error message, **b)** much shorter lag/pause after a plugin installation or\n    update, **c)** the 256 color palette is being now used for plugin IDs, if\n    available, **d)** if possible (a UTF-8 locale is needed to be set), the Unicode\n    three-dots `…` will be used instead of `...` in the messages, **e)**\n    nicer snippet IDs in the installation and update messages, **f)** the\n    annexes can be now loaded in any order without influencing their operation\n    in any way (there have been some issues with\n    [Patch-Dl](https://github.com/zinit-zsh/z-a-patch-dl) and\n    [As-Monitor](https://github.com/zinit-zsh/z-a-as-monitor) annexes), **g)**\n    `compile''` can now obtain multiple patterns separated via semicolon (`;`).\n\n* 25-06-2020\n  - Ability to call the autoloaded function at the moment of loading it by\n    `autoload'#fun'`, i.e.: by prefixing it with the hash sigh (`#`). So that\n    it's possible to invoke e.g.:\n\n    ```zsh\n    zinit autoload'#manydots-magic' for knu/zsh-manydots-magic\n    ```\n\n    instead of:\n\n    ```zsh\n    zinit autoload'manydots-magic' atload'manydots-magic' for \\\n        knu/zsh-manydots-magic\n    ```\n\n* 20-06-2020\n  - The [Bin-Gem-Node](https://github.com/zinit-zsh/z-a-bin-gem-node) annex now\n    has an explicit Cygwin support — it creates additional, **extra shim files**\n    — Windows batch scripts that allow to run the shielded applications from\n    e.g.: Windows run dialog — if the `~/.zinit/polaris/bin` directory is being\n    added to the Windows `PATH` environment variable, for example (it is a good\n    idea to do so, IMHO). The Windows shims (*shims* are command-wrapper scripts\n    that are in general created with the `sbin''` ice of the annex) have the\n    same name as the standard ones (which are also being created, normally) plus\n    the `.cmd` extension. You can test the feature by e.g.: installing Firefox\n    from the Zinit package via:\n\n    ```zsh\n    zinit pack=bgn for firefox\n    ```\n\n  - All cURL progress bars are now guaranteed to be single line — this is being\n    done by a wrapper script.\n\n  - I thought that I'll share an interesting function-type that I'm using within\n    Zinit - a function that outputs messages with theming and colors easily\n    available:\n\n    ```zsh\n    typeset -gA COLORS=(\n        col-error  $'\\e[31m'\n        col-file   $'\\e[38;5;110m'\n        col-url    $'\\e[38;5;45m'\n        col-meta   $'\\e[38;5;221m'\n        col-meta2  $'\\e[38;5;154m'\n        col-data   $'\\e[38;5;82m'\n        col-data2  $'\\e[38;5;50m'\n        col-rst    $'\\e[0m'\n        col-can-be-empty \"\"\n    )\n    \n    m() {\n        builtin emulate -LR zsh -o extendedglob\n        if [[ $1 = -* ]] { local opt=$1; shift } else { local opt }\n        local msg=${(j: :)${@//(#b)([\\[\\{]([^\\]\\}]##)[\\]\\}])/${COLORS[col-$match[2]]-$match[1]}}}\n        builtin print -Pr ${opt:#--} -- $msg\n    }\n    ```\n\n    Usage is as follows:\n\n    ```zsh\n    m \"{error}ERROR:{rst} The {meta}data{rst} has the value: {data}value{rst}\"\n    ```\n\n    Effect:\n\n    ![screenshot](https://raw.githubusercontent.com/zdharma/zinit/master/doc/img/m.png)\n\n    The function is available in the `atinit''`, `atload''`, etc. hooks.\n\n* 17-06-2020\n  - `ziextract` and `extract''` now support Windows installers — currently the\n    installer of Firefox. Let me know if any of your installers doesn't work.\n    You can test the installer with the Firefox Developer Edition Zinit\n    [package](https://github.com/Zsh-Packages/firefox-dev):\n\n    ```zsh\n    zinit pack\"bgn\" for firefox-dev\n    ```\n\n    The above command will work on Windows (at least on Cygwin), Linux and OS X.\n\n* 13-06-2020\n  - `ziextract` has a new `--move2` option, which moves files two levels up\n    after unpacking. For example, if there will be an archive file with\n    directory structure: `Pulumi/bin/{pulumi,pulumi2}`, then after `ziextract\n    --move2 --auto` there will be the two files moved to the top level dir:\n    `./{pulumi,pulumi2}`. To obtain the same effect using the `extract''` ice,\n    pass two exclamation marks, i.e.: `extract'!!'`. A real-world example — it\n    uses [z-a-as-monitor](https://github.com/zinit-zsh/z-a-as-monitor) and\n    [z-a-bin-gem-node](https://github.com/zinit-zsh/z-a-bin-gem-node) annexes to\n    download a Zip package that has the files inside two-level nested directory\n    tree:\n\n    ```zsh\n    zi id-as`pulumi` as`monitor|null` mv`pulumi pulumi_` extract`!` \\\n        dlink=`https://get.pulumi.com/releases/sdk/pulumi-%VERSION%-windows-x64.zip` \\\n        sbin`pulumi*` for \\\n            https://www.pulumi.com/docs/get-started/install/versions/\n    ```\n\n* 12-06-2020\n  - New options to `update`: `-s/--snippets` and `-l/--plugins` — they're\n    limiting the `update --all` to only plugins or snippets. Example:\n\n    ```zsh\n    zinit update --plugins\n    ```\n\n    Work also with `-p/--parallel`.\n\n* 15-05-2020\n  - The `autoload''` ice can now rename the autoloaded functions, i.e.: load\n    a function from a file `func-A` as a function `func-B` via: `autoload'func-A\n    -\u003e func-B; …'`.\n  - Also, an alternate autoloading method - via: `eval \"func-file()\n    { $(\u003cfunc-file); }\"` — has been exposed — in order to use it, precede the\n    ice contents with an exclamation mark, i.e.: `autoload'!func-file'`. The\n    rename mode uses this method by default.\n\n* 12-05-2020\n  - A new feature — ability to substitute `stringA` → `stringB` in plugin source\n    body before executing by `subst'A -\u003e B'`. Works also for any nested `source`\n    commands. Example — renaming the `dl''` ice into a `dload''` ice in the\n    [Patch-Dl](https://github.com/zinit-zsh/z-a-patch-dl) annex:\n\n    ```zsh\n    zinit subst\"dl'' -\u003e dload''\" for zinit-zsh/z-a-patch-dl\n    ```\n\n  - A new ice `autoload''` which invokes `autoload -Uz …` on the given\n    files/functions. Example — a plugin that converts `cd ...` into\n    `cd ../..` that lacks proper setup in any `*.plugin.zsh` file:\n\n    ```zsh\n    zinit as=null autoload=manydots-magic atload=manydots-magic for \\\n        knu/zsh-manydots-magic\n    ```\n\n* 09-05-2020\n  - The `from'gh-r'` downloading of the binary files from GitHub releases can\n    now download **multiple files** — if you specify multiple `bpick''` ices\n    **or** separate the patterns with a semicolon (**`;`**). Example:\n\n    ```zsh\n    zinit from\"gh-r\" as\"program\" mv\"krew-* -\u003e krew\" bpick\"*.yaml\" bpick\"*.tar.gz\" for \\\n\tkubernetes-sigs/krew\n    ```\n\n  - A new ice `opts''` which takes options to **sticky-set** during sourcing of\n    the plugin. This means that thee options will be also set for all of the\n    *functions* that the plugin defines — **during their execution**\n    (\u003ci\u003e**only**\u003c/i\u003e). The option list is space separated. Example:\n\n    ```zsh\n    # Suppose the example test plugin has the following in test.plugin.zsh:\n    #\n    # print $options[kshglob] $options[shglob]\n    #\n    # Then:\n\n    zinit opts\"kshglob noshglob\" for zdharma/test\n\n    # Outputs:\n    on off\n\n    # Can mix with the standard emulation-ices: sh, bash, ksh, csh, zsh (the\n    # default one)\n\n    zinit sh opts\"kshglob\" for zdharma/test\n\n    # Outputs `on' for the SH_GLOB, because sh-emulation sets this option\n    on on \n    ```\n\n* 07-05-2020\n  - A new `from''` value is available — `cygwin`. It'll cause to download\n    a package from the Cygwin repository — from a random mirror, and then\n    unpack it. Example use:\n\n    ```zsh\n    # Install gzip and expose it through Bin-Gem-Node annex's sbin'' ice\n    zinit from\"cygwin\" sbin\"usr/bin/gzip.exe -\u003e gzip\" for gzip\n    ```\n\n* 16-04-2020\n  - Turbo plugins will now get gracefully preinstalled first before the prompt\n    (i.e.: within `zshrc` processing) and then loaded **still** as Turbo plugins.\n\n* 15-04-2020\n  - The `…/name.plugin.zsh` and `…/init.zsh` can be now skipped from single-file\n    (non-svn) snippet URLs utilizing the `OMZ::…`, etc. shorthands. Example:\n\n    ```zsh\n    # Instead of: zinit for OMZP::ruby/ruby.plugin.zsh\n    zinit for OMZP::ruby\n    # Instead of: zinit for PZTM::rails/init.zsh\n    zinit for PZTM::rails\n    # Instead of: zinit for OMZT::gnzh.zsh-theme\n    zinit for OMZT::gnzh\n    ```\n\n  - New prefixes `OMZP::` **=** `OMZ::/plugins/`, `OMZT::` **=**\n    `OMZ::/themes/`, `OMZL::` **=** `OMZ::lib/`, `PZTM::` **=** `PZT::modules/`,\n    for both svn and single-file snippets. Example use:\n\n    ```zsh\n    zinit for OMZP::ruby/ruby.plugin.zsh\n    zinit svn for OMZP::ruby\n    ```\n\n    (instead of:\n    ```zsh\n    zinit for OMZ::plugins/ruby/ruby.plugin.zsh\n    zinit svn for OMZ::plugins/ruby\n    ```\n    ).\n\n* 12-04-2020\n  - A new document on the Wiki is available — about the [**bindmap''\n    ice**](https://zdharma.github.io/zinit/wiki/Bindkeys/).\n  - If `id-as''` will have no value, then it'll work as\n    [**id-as'auto'**](https://zdharma.github.io/zinit/wiki/id-as/#id-asauto).\n\n* 07-04-2020\n  - A new feature — `param''` ice that defines params for the time of loading of\n    the plugin or snippet. E.g.:\n\n    ```zsh\n    # Equivalent of `local myparam=1 myparam2=1' right before loading of the plugin\n    zinit param'myparam → 1; myparam2 -\u003e 1' for zdharma/null\n    # Equivalent of `local myparam myparam2' before loading of the plugin\n    zinit param'myparam; myparam2' for zdharma/null\n    ```\n\n  - The `atinit''` ice can now be investigated — if it'll be prepended with `!`,\n    i.e.: `atinit'!…'`.\n\n* 01-04-2020\n  - As a user [noticed](https://github.com/zdharma/zinit/issues/293), Subversion\n    isn't distributed with Xcode Command Line Tools anymore. Here's a [helpful\n    snippet](https://www.reddit.com/r/zinit/wiki/gallery#wiki_building_and_installation_of_subversion)\n    that installs Subversion with use of Zinit.\n\n* 27-02-2020\n  - An **important fix** has been pushed — due to a bug Turbo has been disabled\n    for non-for syntax invocations of Zinit. Issue `zinit self-update` to\n    resolve the mistake.\n    * If you haven't updated yesterday, please restrain from running `zinit\n      update` immediately after `self-update`. Support for reloading Zinit after\n      `self-update` has been pushed yesterday and after pulling this feature,\n      you'll be able to freely invoke `self-update` and `update`.\n\n* 26-02-2020\n  - From now on `zinit self-update` reloads Zinit for the current session (after\n    updating the plugin manager), and `zinit update --all/-p/--parallel` detects\n    that `self-update` has been run in **another session** and also reloads Zinit\n    right before performing the update. This way the update code is always the\n    newest and consistent.\n\n* 26-02-2020\n  - If the loaded object (plugin or snippet) is not already installed when\n    loading, then Turbo gets automatically disabled for this single loading of\n    the object — it'll be installed before prompt, not after it and also\n    immediately (without waiting the number of seconds given to `wait''`), i.e.:\n    during the normal processing of `zshrc`, which intuitively is the expected\n    behavior.\n  - The additional disk accesses for the checks cost about 10 ms out of 150 ms\n    (i.e.: the Zsh startup time increases from 140 ms to 150 ms). If you want,\n    you may disable the feature by setting `$ZINIT[OPTIMIZE_OUT_DISK_ACCESSES]`\n    to `1`.\n  - A bug in Turbo has been fixed that was delaying the objects' loadings,\n    especially when there were no keystrokes issued.\n\n* 20-02-2020\n\n  - A new feature - **parallel updates** of all plugins and snippets — Zinit runs\n    series of spawned concurrent-job groups of size 15 to speed up the update process.\n    To activate, pass `-p`/`--parallel` to `update`, e.g.:\n\n    ```zsh\n    zinit update -p\n    zinit update --parallel\n    # Increase the number of jobs in a concurrent-set to 40\n    zinit update --parallel 40 \n    ```\n\n    See demos: [asciicast1](https://asciinema.org/a/303174),\n    [asciicast2](https://asciinema.org/a/303184).\n\n  - A new article is available on the Wiki — about the\n    [**`extract`**](http://zdharma.github.io/zinit/wiki/extract-Ice/) ice.\n\n* 19-02-2020\n  \n  The project has a fresh, new subreddit [r/zinit](https://www.reddit.com/r/zinit/).\n  You can also visit the old subreddit [r/zplugin](https://www.reddit.com/r/zplugin/).\n\n* 09-02-2020\n\n  Note that the ice `extract` can handle files with spaces — to encode such a name use\n  the non-breaking space (Right Alt + Space) in place of the in-filename spaces :).\n\n* 07-02-2020\n  - A new ice `extract` which extracts:\n    * all files with recognized archive extensions like `zip`, `tar.gz`, etc.,\n    * if no such files will be found, then: all files with recognized archive\n      **types** (examined with the `file` command),\n    * OR, IF GIVEN — the given files, e.g.: `extract'file1.zip file2.tgz'`,\n    * the automatic searching for archives ignores files in sub-sub-directories and\n      located deeper,\n  - It has a `!` flag — i.e.: `extract'!…'` — it'll cause the files to be moved\n    one directory-level up upon unpacking,\n  - and also a `-` flag — i.e.: `extract'-…'` — it'll prevent removal of the archive\n    after unpacking; useful to allow comparing timestamps with the server in case of\n    snippet-downloaded file,\n  - the flags can be combined, e.g.: `extract'!-'`,\n  - also, the function `ziextract` has a new option `--auto`, which causes the\n    automatic behavior identical to the empty `extract` ice.\n* 21-01-2020\n  - A few tips for the project rename following the field reports (the issues created\n    by users):\n    - the `ZPLGM` hash is now `ZINIT`,\n    - the annexes are moved under [zinit-zsh](https://github.com/zinit-zsh)\n      organization.\n\n* 19-01-2020\n  - The name has been changed to **Zinit** based on the results of the\n    [poll](https://github.com/zdharma/zinit/issues/235).\n  - In general, you don't have to do anything after the name change.\n  - Only a run of `zinit update --all` might be necessary.\n  - You might also want to rename your `zplugin` calls in `zshrc` to `zinit`.\n  - Zinit will reuse `~/.zplugin` directory if it exists, otherwise it'll create\n    `~/.zinit`.\n\n* 15-01-2020\n  - There's a new function, `ziextract`, which unpacks the given file. It supports many\n    formats (notably also `dmg` images) — if there's a format that's unsupported please\n    don't hesitate to [make a\n    request](https://github.com/zdharma/zinit/issues/new?template=feature_request.md)\n    for it to be added. A few facts:\n    - the function is available only at the time of the plugin/snippet installation,\n    - it's to be used within `atclone` and `atpull` ices,\n    - it has an optional `--move` option which moves all the files from a subdirectory\n      up one level,\n    - one other option `--norm` prevents the archive from being deleted upon unpacking.\n  - snippets now aren't re-downloaded unless they're newer on the HTTP server; use\n    this with the `--norm` option of `ziextract` to prevent unnecessary updates; for\n    example, the [firefox-dev package](https://github.com/Zsh-Packages/firefox-dev)\n    uses this option for this purpose,\n  - GitHub doesn't report proper `Last-Modified` HTTP server for the files in the\n    repositories so the feature doesn't yet work with such files.\n\n* 13-12-2019\n  - The packages have been disconnected from NPM registry and now live only on Zsh\n    Packages organization. Publishing to NPM isn't needed.\n  - There are two interesting packages,\n    [any-gem](https://github.com/Zsh-Packages/any-gem) and\n    [any-node](https://github.com/Zsh-Packages/any-node). They allow to install any\n    Gem(s) or Node module(s) locally in a newly created plugin directory. For example:\n\n    ```zsh\n    zinit pack param='GEM -\u003e rails' for any-gem\n    zinit pack param='MOD -\u003e doctoc' for any-node\n    # To have the command in zshrc, add an id-as'' ice so that\n    # Zinit knows that the package is already installed\n    # (also: the Unicode arrow is allowed)\n    zinit id-as=jekyll pack param='GEM → jekyll' for any-gem\n    ```\n\n    The binaries will be exposed without altering the PATH via shims\n    ([Bin-Gem-Node](https://github.com/zinit-zsh/z-a-bin-gem-node) annex is needed).\n    Shims are correctly removed when deleting a plugin with `zinit delete …`.\n\n* 11-12-2019\n  - Zinit now supports installing special-Zsh NPM packages! Bye-bye the long and\n    complex ice-lists! Check out the\n    [Wiki](https://zdharma.github.io/zinit/wiki/Zinit-Packages/) for an introductory document\n    on the feature.\n\n* 25-11-2019\n  - A new subcommand `run` that executes a command in the given plugin's directory. It\n    has an `-l` option that will reuse the previously provided plugin. So that it's\n    possible to do:\n\n    ```zsh\n    zplg run my/plugin ls\n    zplg run -l cat \\*.plugin.zsh\n    zplg run -l pwd\n    ```\n\n* 07-11-2019\n  - Added a prefix-char: `@` that can be used before plugins if their name collides\n    with one of the ice-names. For example `sharkdp/fd` collides with the `sh` ice\n    (which causes the plugin to be loaded with the POSIX `sh` emulation applied). To\n    load it, do e.g.:\n\n    ```zsh\n    zinit as\"null\" wait\"2\" lucid from\"gh-r\" for \\\n        mv\"exa* -\u003e exa\" sbin\"exa\"  ogham/exa \\\n        mv\"fd* -\u003e fd\" sbin\"fd/fd\"  @sharkdp/fd \\\n        sbin\"fzf\" junegunn/fzf-bin\n    ```\n\n    i.e.: precede the plugin name with `@`. Note: `sbin''` is an ice added by the\n    [z-a-bin-gem-node](https://github.com/zinit/z-a-bin-gem-node) annex, it provides\n    the command to the command line without altering `$PATH`.\n\n    See the [Zinit Wiki](http://zdharma.github.io/zinit/wiki/For-Syntax/) for more\n    information on the for-syntax.\n\n* 06-11-2019\n  - A new syntax, called for-syntax. Example:\n\n    ```zsh\n     zinit as\"program\" atload'print Hi!' for \\\n         atinit'print First!' zdharma/null \\\n         atinit'print Second!' svn OMZ::plugins/git\n    ```\n\n    The output:\n\n    ```\n    First!\n    Hi!\n    Second!\n    Hi!\n    ```\n\n    And also:\n\n    ```zsh\n    % print -rl $path | egrep -i '(/git|null)'\n    /root/.zinit/snippets/OMZ::plugins/git\n    /root/.zinit/plugins/zdharma---null\n    ```\n\n    To load in light mode, use a new `light-mode` ice. More examples and information\n    can be found on the [Zinit Wiki](https://zdharma.github.io/zinit/wiki/For-Syntax/).\n\n* 03-11-2019\n  - A new value for the `as''` ice — `null`. Specifying `as\"null\"` is like specifying\n    `pick\"/dev/null\" nocompletions`, i.e.: it disables the sourcing of the default\n    script file of a plugin or snippet and also disables the installation of\n    completions.\n\n* 30-10-2019\n  - A new ice `trigger-load''` — create a function that loads given plugin/snippet,\n    with an option (to use it, precede the ice content with `!`) to automatically\n    forward the call afterwards. Example use:\n\n    ```zsh\n    # Invoking the command `crasis' will load the plugin that\n    # provides the function `crasis', and it will be then\n    # immediately invoked with the same arguments\n    zinit ice trigger-load'!crasis'\n    zinit load zdharma/zinit-crasis\n    ```\n\n* 22-10-2019\n  - A new ice `countdown` — causes an interruptable (by Ctrl-C) countdown 5…4…3…2…1…0\n    to be displayed before running the `atclone''`, `atpull''` and `make` ices.\n\n* 21-10-2019\n  - The `times` command has a new option `-m` — it shows the **moments** of the plugin\n    load times — i.e.: how late after loading Zinit a plugin has been loaded.\n\n* 20-10-2019\n  - The `zinit` completion now completes also snippets! The command `snippet`, but\n    also `delete`, `recall`, `edit`, `cd`, etc. all receive such completing.\n  - The `ice` subcommand can now be skipped — just pass in the ices, e.g.:\n    ```zsh\n    zinit atload\"zicompinit; zicdreplay\" blockf\n    zinit light zsh-users/zsh-completions\n    ```\n  - The `compile` command is able to compile snippets.\n  - The plugins that add their subdirectories into `$fpath` can be now `blockf`-ed —\n    the functions located in the dirs will be correctly auto-loaded.\n\n* 12-10-2019\n  - Special value for the `id-as''` ice — `auto`. It sets the plugin/snippet ID\n    automatically to the last component of its spec, e.g.:\n\n    ```zsh\n    zinit ice id-as\"auto\"\n    zinit load robobenklein/zinc\n    ```\n\n    will load the plugin as `id-as'zinc'`.\n\n* 14-09-2019\n  - There's a Vim plugin which extends syntax highlighting of zsh scripts with coloring\n    of the Zinit commands. [Project\n    homepage](https://github.com/zinit/zinit-vim-syntax).\n\n* 13-09-2019\n  - New ice `aliases` which loads plugin with the aliases mechanism enabled. Use for\n    plugins that define **and use** aliases in their scripts.\n\n* 11-09-2019\n  - New ice-mods `sh`,`bash`,`ksh`,`csh` that load plugins (and snippets) with the\n    **sticky emulation** feature of Zsh — all functions defined within the plugin will\n    automatically switch to the desired emulation mode before executing and switch back\n    thereafter. In other words it is now possible to load e.g. bash plugins with\n    Zinit, provided that the emulation level done by Zsh is sufficient, e.g.:\n\n    ```zsh\n    zinit ice bash pick\"bash_it.sh\" \\\n            atinit\"BASH_IT=${ZINIT[PLUGINS_DIR]}/Bash-it---bash-it\" \\\n            atclone\"yes n | ./install.sh\"\n    zinit load Bash-it/bash-it\n    ```\n\n    This script loads correctly thanks to the emulation, however it isn't functional\n    because it uses `type -t …` to check if a function exists.\n\n* 10-09-2019\n  - A new ice-mod `reset''` that ivokes `git reset --hard` (or the provided command)\n    before `git pull` and `atpull''` ice. It can be used it to implement altering (i.e.\n    patching) of the plugin's files inside the `atpull''` ice — `git` will report no\n    conflicts when doing `pull`, and the changes can be then again introduced by the\n    `atpull''` ice.\n  - Three new Zinit annexes (i.e.\n    [extensions](https://zdharma.github.io/zinit/wiki/Annexes/)):\n\n      - [z-a-man](https://github.com/zinit/z-a-man)\n\n        Generates man pages and code-documentation man pages from plugin's README.md\n        and source files (the code documentation is obtained from\n        [Zshelldoc](https://github.com/zdharma/zshelldoc)).\n\n      - [z-a-test](https://github.com/zinit/z-a-test)\n\n        Runs tests (if detected `test` target in a `Makefile` or any `*.zunit` files)\n        on plugin installation and non-empty update.\n\n      - [z-a-patch-dl](https://github.com/zinit/z-a-patch-dl)\n\n        Allows easy download and applying of patches, to e.g. aid building a binary\n        program equipped in the plugin.\n\n  - A new variable is being recognized by the installation script:\n    `$ZPLG_BIN_DIR_NAME`. It configures the directory within `$ZPLG_HOME` to which\n    Zinit should be cloned.\n\n\u003c/details\u003e\n\nTo see the full history check [the changelog](doc/CHANGELOG.md).\n\n# Zinit\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.com/zdharma/pm-perf-test\"\u003e\n\u003cimg width=\"550px\" src=\"https://raw.githubusercontent.com/zdharma/zinit/images/startup-times.png\"/\u003e\n\u003c/a\u003e\n\u003c/p\u003e\n\nZinit is a flexible and fast Zshell plugin manager that will allow you to\ninstall everything from GitHub and other sites. Its characteristics are:\n\n1. Zinit is currently the only plugin manager out there that provides Turbo mode\n   which yields **50-80% faster Zsh startup** (i.e.: the shell will start up to\n   **5** times faster!). Check out a speed comparison with other popular plugin\n   managers [here](https://github.com/zdharma/pm-perf-test).\n\n2. The plugin manager gives **reports** from plugin loadings describing what\n   **aliases**, functions, **bindkeys**, Zle widgets, zstyles, **completions**,\n   variables, `PATH` and `FPATH` elements a plugin has set up. This allows to\n   quickly familiarize oneself with a new plugin and provides rich and easy to\n   digest information which might be helpful on various occasions.\n\n3. Supported is unloading of plugin and ability to list, (un)install and\n   **selectively disable**, **enable** plugin's completions.\n\n4. The plugin manager supports loading Oh My Zsh and Prezto plugins and\n   libraries, however the implementation isn't framework specific and doesn't\n   bloat the plugin manager with such code (more on this topic can be found on\n   the Wiki, in the\n   [Introduction](https://zdharma.github.io/zinit/wiki/INTRODUCTION/#oh_my_zsh_prezto)).\n\n5. The system does not use `$FPATH`, loading multiple plugins doesn't clutter\n   `$FPATH` with the same number of entries (e.g. `10`, `15` or more). Code is\n   immune to `KSH_ARRAYS` and other options typically causing compatibility\n   problems.\n\n6. Zinit supports special, dedicated **packages** that offload the user from\n   providing long and complex commands. See the\n   [Zsh-Packages](https://github.com/Zsh-Packages) organization for a growing,\n   complete list of Zinit packages and the [Wiki\n   page](https://zdharma.github.io/zinit/wiki/Zinit-Packages/) for an article about\n   the feature.\n\n7. Also, specialized Zinit extensions — called **annexes** — allow to extend the\n   plugin manager with new commands, URL-preprocessors (used by e.g.:\n   [z-a-as-monitor](https://github.com/zinit-zsh/z-a-as-monitor) annex),\n   post-install and post-update hooks and much more. See the\n   [zinit-zsh](https://github.com/zinit-zsh) organization for a growing,\n   complete list of available Zinit extensions and refer to the [Wiki\n   article](https://zdharma.github.io/zinit/wiki/Annexes/) for an introduction on\n   creating your own annex.\n\n# Zinit Wiki\n\nThe information in this README is complemented by the [Zinit\nWiki](https://zdharma.github.io/zinit/wiki/). The README is an introductory overview of\nZinit while the Wiki gives a complete information with examples. Make sure to\nread it to get the most out of Zinit.\n\n# Quick Start\n## Install\n### Automatic Installation (Recommended)\n\nThe easiest way to install Zinit is to execute:\n\n```zsh\nsh -c \"$(curl -fsSL https://raw.githubusercontent.com/zdharma/zinit/master/doc/install.sh)\"\n```\n\nThis will install Zinit in `~/.zinit/bin`.\n`.zshrc` will be updated with three lines of code that will be added to the bottom.\nThe lines will be sourcing `zinit.zsh` and setting up completion for command `zinit`.\n\nAfter installing and reloading the shell compile Zinit with `zinit self-update`.\n\n### Manual Installation\n\nTo manually install Zinit clone the repo to e.g. `~/.zinit/bin`:\n\n```sh\nmkdir ~/.zinit\ngit clone https://github.com/zdharma/zinit.git ~/.zinit/bin\n```\n\nand source it from `.zshrc` (above [compinit](http://zsh.sourceforge.net/Doc/Release/Completion-System.html#Initialization)):\n\n```sh\nsource ~/.zinit/bin/zinit.zsh\n```\n\nIf you place the `source` below `compinit`, then add those two lines after the `source`:\n```sh\nautoload -Uz _zinit\n(( ${+_comps} )) \u0026\u0026 _comps[zinit]=_zinit\n```\n\nVarious paths can be customized, see section [Customizing Paths](#customizing-paths).\n\nAfter installing and reloading the shell compile Zinit with `zinit self-update`.\n\n## Usage\n\n### Introduction\n\n[Click here to read the introduction to Zinit](https://zdharma.github.io/zinit/wiki/INTRODUCTION/). It explains basic usage and some of the more unique features of Zinit such as the Turbo mode. If you're new to Zinit we highly recommend you read it at least once.\n\n### Plugins and snippets\n\nPlugins can be loaded using `load` or  `light`.\n\n```zsh\nzinit load  \u003crepo/plugin\u003e # Load with reporting/investigating.\nzinit light \u003crepo/plugin\u003e # Load without reporting/investigating.\n```\n\nIf you want to source local or remote files (using direct URL), you can do so with `snippet`.\n\n```zsh\nzinit snippet \u003cURL\u003e\n```\n\nSuch lines should be added to `.zshrc`. Snippets are cached locally, use `-f` option to download\na fresh version of a snippet, or `zinit update {URL}`. Can also use `zinit update --all` to\nupdate all snippets (and plugins).\n\n**Example**\n```zsh\n# Plugin history-search-multi-word loaded with investigating.\nzinit load zdharma/history-search-multi-word\n\n# Two regular plugins loaded without investigating.\nzinit light zsh-users/zsh-autosuggestions\nzinit light zdharma/fast-syntax-highlighting\n\n# Snippet\nzinit snippet https://gist.githubusercontent.com/hightemp/5071909/raw/\n```\n\n**Prompt(Theme) Example**\n\nThis is [powerlevel10k](https://github.com/romkatv/powerlevel10k), [pure](https://github.com/sindresorhus/pure), [starship](https://github.com/starship/starship) sample:\n```zsh\n# Load powerlevel10k theme\nzinit ice depth\"1\" # git clone depth\nzinit light romkatv/powerlevel10k\n\n# Load pure theme\nzinit ice pick\"async.zsh\" src\"pure.zsh\" # with zsh-async library that's bundled with it.\nzinit light sindresorhus/pure\n\n# Load starship theme\nzinit ice as\"command\" from\"gh-r\" \\ # `starship` binary as command, from github release\n          atclone\"./starship init zsh \u003e init.zsh; ./starship completions zsh \u003e _starship\" \\ # starship setup at clone(create init.zsh, completion)\n          atpull\"%atclone\" src\"init.zsh\" # pull behavior same as clone, source init.zsh\nzinit light starship/starship\n```\n\n### Upgrade Zinit and plugins\n\nZinit can be updated to `self-update` and plugins to `update`.\n\n```zsh\n# Self update\nzinit self-update\n\n# Plugin update\nzinit update\n\n# Plugin parallel update\nzinit update --parallel\n\n# Increase the number of jobs in a concurrent-set to 40\nzinit update --parallel 40\n```\n\n### Turbo and lucid\n\nTurbo and lucid are the most used options.\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003cb\u003eTurbo Mode\u003c/b\u003e\u003c/summary\u003e\nTurbo mode is the key to performance. It can be loaded asynchronously, which makes a huge difference when the amount of plugins increases.\n\nUsually used as `zinit ice wait\"\u003cSECONDS\u003e\"`, let's use the previous example:\n```zsh\nzinit ice wait    # wait is same wait\"0\"\nzinit load zdharma/history-search-multi-word\n\nzinit ice wait\"2\" # load after 2 seconds\nzinit load zdharma/history-search-multi-word\n\nzinit ice wait    # also be used in `light` and `snippet`\nzinit snippet https://gist.githubusercontent.com/hightemp/5071909/raw/\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003cb\u003eLucid\u003c/b\u003e\u003c/summary\u003e\n\nTurbo mode is verbose, so you need an option for quiet.\n\nYou can use with `lucid`:\n```zsh\nzinit ice wait lucid\nzinit load zdharma/history-search-multi-word\n```\n\u003c/details\u003e\n\n***F\u0026A:*** What is `ice`?\n\n`ice` is zinit's option command. The option melts like ice and is used only once.\n(more: [Ice Modifiers](#ice-modifiers))\n\n### Migration\n\u003cdetails\u003e\n  \u003csummary\u003e\u003cb\u003eMigration from Oh-My-ZSH\u003c/b\u003e\u003c/summary\u003e\n\n**Basic**\n\n```zsh\nzinit snippet \u003cURL\u003e        # Raw Syntax with URL\nzinit snippet OMZ::\u003cPATH\u003e  # Shorthand OMZ/ (http://github.com/ohmyzsh/ohmyzsh/raw/master/)\nzinit snippet OMZL::\u003cPATH\u003e # Shorthand OMZ/lib/\nzinit snippet OMZT::\u003cPATH\u003e # Shorthand OMZ/themes/\nzinit snippet OMZP::\u003cPATH\u003e # Shorthand OMZ/plugins/\n```\n\n**Library**\n\nImporting the [clipboard](https://github.com/ohmyzsh/ohmyzsh/blob/master/lib/clipboard.zsh) and [termsupport](https://github.com/ohmyzsh/ohmyzsh/blob/master/lib/termsupport.zsh) Oh-My-Zsh Library Sample:\n```zsh\n# Raw Syntax\nzinit snippet https://github.com/ohmyzsh/ohmyzsh/blob/master/lib/clipboard.zsh\nzinit snippet https://github.com/ohmyzsh/ohmyzsh/blob/master/lib/termsupport.zsh\n\n# OMZ Shorthand Syntax\nzinit snippet OMZ::lib/clipboard.zsh\nzinit snippet OMZ::lib/termsupport.zsh\n\n# OMZL Shorthand Syntax\nzinit snippet OMZL::clipboard.zsh\nzinit snippet OMZL::termsupport.zsh\n```\n\n**Theme**\n\nTo use **themes** created for Oh My Zsh you might want to first source the `git` library there.\n\nThen you can use the themes as snippets (`zinit snippet \u003cfile path or GitHub URL\u003e`).\nSome themes require not only Oh My Zsh's Git **library**, but also Git **plugin** (error\nabout `current_branch` may appear). Load this Git-plugin as single-file\nsnippet directly from OMZ.\n\nMost themes require `promptsubst` option (`setopt promptsubst` in `zshrc`), if it isn't set, then\nprompt will appear as something like: `... $(build_prompt) ...`.\n\nYou might want to suppress completions provided by the git plugin by issuing `zinit cdclear -q`\n(`-q` is for quiet) – see below **Ignoring Compdefs**.\n\n\nTo summarize:\n```zsh\n## Oh My Zsh Setting\nZSH_THEME=\"robbyrussell\"\n\n## Zinit Setting\n# Must Load OMZ Git library\nzinit snippet OMZL::git.zsh\n\n# Load Git plugin from OMZ\nzinit snippet OMZP::git\nzinit cdclear -q # \u003c- forget completions provided up to this moment\n\nsetopt promptsubst\n\n# Load Prompt\nzinit snippet OMZT::robbyrussell\n```\n\nExternal Theme Sample: [NicoSantangelo/Alpharized](https://github.com/nicosantangelo/Alpharized)\n```zsh\n## Oh My Zsh Setting\nZSH_THEME=\"alpharized\"\n\n## Zinit Setting\n# Must Load OMZ Git library\nzinit snippet OMZL::git.zsh\n\n# Load Git plugin from OMZ\nzinit snippet OMZP::git\nzinit cdclear -q # \u003c- forget completions provided up to this moment\n\nsetopt promptsubst\n\n# Load Prompt\nzinit light NicoSantangelo/Alpharized\n```\n\n***F\u0026A:*** Error occurs when loading OMZ's theme.\n\nIf the `git` library will not be loaded, then similar to following errors will be appearing:\n\n```zsh\n........:1: command not found: git_prompt_status\n........:1: command not found: git_prompt_short_sha\n```\n\n**Plugin**\n\nIf it consists of a single file, you can just load it.\n```zsh\n## Oh-My-Zsh Setting\nplugins=(\n  git\n  dotenv\n  rake\n  rbenv\n  ruby\n)\n\n## Zinit Setting\nzinit snippet OMZP::git\nzinit snippet OMZP::dotenv\nzinit snippet OMZP::rake\nzinit snippet OMZP::rbenv\nzinit snippet OMZP::ruby\n```\n\nUse `zinit ice svn` if multiple files require an entire subdirectory.\nLike [gitfast](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/gitfast), [osx](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/osx):\n```zsh\nzinit ice svn\nzinit snippet OMZP::gitfast\n\nzinit ice svn\nzinit snippet OMZP::osx\n```\n\nUse `zinit ice as\"completion\"` to directly add single file completion snippets.\nLike [docker](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/docker), [fd](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/fd):\n```zsh\nzinit ice as\"completion\"\nzinit snippet OMZP::docker/_docker\n\nzinit ice as\"completion\"\nzinit snippet OMZP::fd/_fd\n```\n\n[You can see an extended explanation of Oh-My-Zsh setup in the Wiki](http://zdharma.github.io/zinit/wiki/Example-Oh-My-Zsh-setup/)\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003cb\u003eMigration from Prezto\u003c/b\u003e\u003c/summary\u003e\n\n**Basic**\n\n```shell\nzinit snippet \u003cURL\u003e        # Raw Syntax with URL\nzinit snippet PZT::\u003cPATH\u003e  # Shorthand PZT/ (https://github.com/sorin-ionescu/prezto/tree/master/)\nzinit snippet PZTM::\u003cPATH\u003e # Shorthand PZT/modules/\n```\n\n**Modules**\n\nImporting the  [environment](https://github.com/sorin-ionescu/prezto/tree/master/modules/environment) and [terminal](https://github.com/sorin-ionescu/prezto/tree/master/modules/terminal) Prezto Modules Sample:\n```zsh\n## Prezto Setting\nzstyle ':prezto:load' pmodule 'environment' 'terminal'\n\n## Zinit Setting\n# Raw Syntax\nzinit snippet https://github.com/sorin-ionescu/prezto/blob/master/modules/environment/init.zsh\nzinit snippet https://github.com/sorin-ionescu/prezto/blob/master/modules/terminal/init.zsh\n\n# PZT Shorthand Syntax\nzinit snippet PZT::modules/environment\nzinit snippet PZT::modules/terminal\n\n# PZTM Shorthand Syntax\nzinit snippet PZTM::environment\nzinit snippet PZTM::terminal\n```\n\nUse `zinit ice svn` if multiple files require an entire subdirectory.\nLike [docker](https://github.com/sorin-ionescu/prezto/tree/master/modules/docker), [git](https://github.com/sorin-ionescu/prezto/tree/master/modules/git):\n```zsh\nzinit ice svn\nzinit snippet PZTM::docker\n\nzinit ice svn\nzinit snippet PZTM::git\n```\n\nUse `zinit ice as\"null\"` if don't exist `*.plugin.zsh`, `init.zsh`, `*.zsh-theme*` files in module.\nLike [archive](https://github.com/sorin-ionescu/prezto/tree/master/modules/archive):\n```zsh\nzinit ice svn as\"null\"\nzinit snippet PZTM::archive\n```\n\nUse `zinit ice atclone\"git clone \u003crepo\u003e \u003clocation\u003e\"` if module have external module.\nLike [completion](https://github.com/sorin-ionescu/prezto/tree/master/modules/completion):\n```shell\nzplugin ice svn blockf \\ # use blockf to prevent any unnecessary additions to fpath, as zinit manages fpath\n            atclone\"git clone --recursive https://github.com/zsh-users/zsh-completions.git external\"\nzplugin snippet PZTM::completion\n```\n\n***F\u0026A:*** What is `zstyle`?\n\nRead [zstyle](http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fzutil-Module) doc (more: [What does `zstyle` do?](https://unix.stackexchange.com/questions/214657/what-does-zstyle-do)).\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003cb\u003eMigration from Zgen\u003c/b\u003e\u003c/summary\u003e\n\n**Oh My Zsh**\n\nMore reference: check **Migration from Oh-My-ZSH**\n```zsh\n# Load ohmyzsh base\nzgen oh-my-zsh\nzinit snippet OMZL::\u003cALL OF THEM\u003e\n\n# Load ohmyzsh plugins\nzgen oh-my-zsh \u003cPATH\u003e\nzinit snippet OMZ::\u003cPATH\u003e\n```\n\n**Prezto**\n\nMore reference: check **Migration from Prezto**\n\n```zsh\n# Load Prezto\nzgen prezto\nzinit snippet PZTM::\u003cCOMMENT's List\u003e # environment terminal editor history directory spectrum utility completion prompt\n\n# Load prezto plugins\nzgen prezto \u003cmodulename\u003e\nzinit snippet PZTM::\u003cmodulename\u003e\n\n# Load a repo as Prezto plugins\nzgen pmodule \u003creponame\u003e \u003cbranch\u003e\nzinit ice ver\"\u003cbranch\u003e\"\nzinit load \u003crepo/plugin\u003e\n\n# Set prezto options\nzgen prezto \u003cmodulename\u003e \u003coption\u003e \u003cvalue(s)\u003e\nzstyle ':prezto:\u003cmodulename\u003e:' \u003coption\u003e \u003cvalues(s)\u003e # Set original prezto style\n```\n\n**General**\n\n`location`: refer [Selection of Files](#selection-of-files-to-source-)\n```zsh\nzgen load \u003crepo\u003e [location] [branch]\n\nzinit ice ver\"[branch]\"\nzinit load \u003crepo\u003e\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003cb\u003eMigration from Zplug\u003c/b\u003e\u003c/summary\u003e\n\n**Basic**\n```zsh\nzplug \u003crepo/plugin\u003e, tag1:\u003coption1\u003e, tag2:\u003coption2\u003e\n\nzinit ice tag1\"\u003coption1\u003e\" tag2\"\u003coption2\u003e\"\nzinit load \u003crepo/plugin\u003e\n```\n\n**Tag comparison**\n- `as` =\u003e `as`\n- `use` =\u003e `pick`, `src`, `multisrc`\n- `ignore` =\u003e None\n- `from` =\u003e `from`\n- `at` =\u003e `ver`\n- `rename-to` =\u003e `mv`, `cp`\n- `dir` =\u003e Selection(`pick`, ...) with rename\n- `if` =\u003e `if`\n- `hook-build` =\u003e `atclone`, `atpull`\n- `hook-load` =\u003e `atload`\n- `frozen` =\u003e None\n- `on` =\u003e None\n- `defer` =\u003e `wait`\n- `lazy` =\u003e `autoload`\n- `depth` =\u003e `depth`\n\u003c/details\u003e\n\n### More Examples\n\nAfter installing Zinit you can start adding some actions (load some plugins) to `~/.zshrc`, at bottom. Some examples:\n\n```zsh\n# Load the pure theme, with zsh-async library that's bundled with it.\nzinit ice pick\"async.zsh\" src\"pure.zsh\"\nzinit light sindresorhus/pure\n\n# A glance at the new for-syntax – load all of the above\n# plugins with a single command. For more information see:\n# https://zdharma.github.io/zinit/wiki/For-Syntax/\nzinit for \\\n    light-mode  zsh-users/zsh-autosuggestions \\\n    light-mode  zdharma/fast-syntax-highlighting \\\n                zdharma/history-search-multi-word \\\n    light-mode pick\"async.zsh\" src\"pure.zsh\" \\\n                sindresorhus/pure\n\n# Binary release in archive, from GitHub-releases page.\n# After automatic unpacking it provides program \"fzf\".\nzinit ice from\"gh-r\" as\"program\"\nzinit light junegunn/fzf\n\n# One other binary release, it needs renaming from `docker-compose-Linux-x86_64`.\n# This is done by ice-mod `mv'{from} -\u003e {to}'. There are multiple packages per\n# single version, for OS X, Linux and Windows – so ice-mod `bpick' is used to\n# select Linux package – in this case this is actually not needed, Zinit will\n# grep operating system name and architecture automatically when there's no `bpick'.\nzinit ice from\"gh-r\" as\"program\" mv\"docker* -\u003e docker-compose\" bpick\"*linux*\"\nzinit load docker/compose\n\n# Vim repository on GitHub – a typical source code that needs compilation – Zinit\n# can manage it for you if you like, run `./configure` and other `make`, etc. stuff.\n# Ice-mod `pick` selects a binary program to add to $PATH. You could also install the\n# package under the path $ZPFX, see: http://zdharma.github.io/zinit/wiki/Compiling-programs\nzinit ice as\"program\" atclone\"rm -f src/auto/config.cache; ./configure\" \\\n    atpull\"%atclone\" make pick\"src/vim\"\nzinit light vim/vim\n\n# Scripts that are built at install (there's single default make target, \"install\",\n# and it constructs scripts by `cat'ing a few files). The make'' ice could also be:\n# `make\"install PREFIX=$ZPFX\"`, if \"install\" wouldn't be the only, default target.\nzinit ice as\"program\" pick\"$ZPFX/bin/git-*\" make\"PREFIX=$ZPFX\"\nzinit light tj/git-extras\n\n# Handle completions without loading any plugin, see \"clist\" command.\n# This one is to be ran just once, in interactive session.\nzinit creinstall %HOME/my_completions\n```\n\n```zsh\n# For GNU ls (the binaries can be gls, gdircolors, e.g. on OS X when installing the\n# coreutils package from Homebrew; you can also use https://github.com/ogham/exa)\nzinit ice atclone\"dircolors -b LS_COLORS \u003e c.zsh\" atpull'%atclone' pick\"c.zsh\" nocompile'!'\nzinit light trapd00r/LS_COLORS\n```\n[You can see an extended explanation of LS_COLORS in the Wiki.](https://zdharma.github.io/zinit/wiki/LS_COLORS-explanation/)\n\n```zsh\n# make'!...' -\u003e run make before atclone \u0026 atpull\nzinit ice as\"program\" make'!' atclone'./direnv hook zsh \u003e zhook.zsh' atpull'%atclone' src\"zhook.zsh\"\nzinit light direnv/direnv\n```\n[You can see an extended explanation of direnv in the Wiki.](https://zdharma.github.io/zinit/wiki/Direnv-explanation/)\n\nIf you're interested in more examples then check out the [zinit-configs\nrepository](https://github.com/zdharma/zinit-configs) where users have uploaded their\n`~/.zshrc` and Zinit configurations. Feel free to\n[submit](https://github.com/zdharma/zinit-configs/issues/new?template=request-to-add-zshrc-to-the-zinit-configs-repo.md)\nyour `~/.zshrc` there if it contains Zinit commands.\n\nYou can also check out the [Gallery of Zinit\nInvocations](https://zdharma.github.io/zinit/wiki/GALLERY/) for some additional\nexamples.\n\nAlso, two articles on the Wiki present an example setup\n[here](https://zdharma.github.io/zinit/wiki/Example-Minimal-Setup/) and\n[here](https://zdharma.github.io/zinit/wiki/Example-Oh-My-Zsh-setup/).\n\n# How to Use\n\n## Ice Modifiers\n\nFollowing `ice` modifiers are to be\n[passed](http://zdharma.github.io/zinit/wiki/Alternate-Ice-Syntax/) to `zinit ice ...` to\nobtain described effects.  The word `ice` means something that's added (like ice to a\ndrink) – and in Zinit it means adding modifier to a next `zinit` command, and also\nsomething that's temporary because it melts – and this means that the modification will\nlast only for a **single** next `zinit` command.\n\nSome Ice-modifiers are highlighted and clicking on them will take you to the\nappropriate Wiki page for an extended explanation.\n\nYou may safely assume a given ice works with both plugins and snippets unless\nexplicitly stated otherwise.\n\n### Cloning Options\n| Modifier | Description |\n|:-:|-|\n| `proto` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eChange protocol to `git`,`ftp`,`ftps`,`ssh`, `rsync`, etc. Default is `https`. **Does not work with snippets.** \u003c/div\u003e|\n| [**`from`**](http://zdharma.github.io/zinit/wiki/Private-Repositories/) |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eClone plugin from given site. Supported are `from\"github\"` (default), `...\"github-rel\"`, `...\"gitlab\"`, `...\"bitbucket\"`, `...\"notabug\"` (short names: `gh`, `gh-r`, `gl`, `bb`, `nb`). Can also be a full domain name (e.g. for GitHub enterprise). **Does not work with snippets.**\u003c/div\u003e|\n| `ver` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eUsed with `from\"gh-r\"` (i.e. downloading a binary release, e.g. for use with `as\"program\"`) – selects which version to download. Default is latest, can also be explicitly `ver\"latest\"`. Works also with regular plugins, checkouts e.g. `ver\"abranch\"`, i.e. a specific version. **Does not work with snippets.**\u003c/div\u003e|\n| `bpick` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eUsed to select which release from GitHub Releases to download, e.g. `zini ice from\"gh-r\" as\"program\" bpick\"*Darwin*\"; zini load docker/compose`. **Does not work with snippets.** \u003c/div\u003e|\n| `depth` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003ePass `--depth` to `git`, i.e. limit how much of history to download. **Does not work with snippets.**\u003c/div\u003e|\n| `cloneopts` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003ePass the contents of `cloneopts` to `git clone`. Defaults to `--recursive`. I.e.: change cloning options. Pass empty ice to disable recursive cloning. **Does not work with snippets.** \u003c/div\u003e|\n| `pullopts` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003ePass the contents of `pullopts` to `git pull` used when updating plugins. **Does not work with snippets.** \u003c/div\u003e|\n| `svn` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eUse Subversion for downloading snippet. GitHub supports `SVN` protocol, this allows to clone subdirectories as snippets, e.g. `zinit ice svn; zinit snippet OMZP::git`. Other ice `pick` can be used to select file to source (default are: `*.plugin.zsh`, `init.zsh`, `*.zsh-theme`). **Does not work with plugins.**\u003c/div\u003e|\n\n### Selection of Files (To Source, …)\n| Modifier | Description |\n|:-:|-|\n| [**`pick`**](http://zdharma.github.io/zinit/wiki/Sourcing-multiple-files/) |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eSelect the file to source, or the file to set as command (when using `snippet --command` or the ice `as\"program\"`); it is a pattern, alphabetically first matched file is being chosen; e.g. `zinit ice pick\"*.plugin.zsh\"; zinit load …`.\u003c/div\u003e|\n| [**`src`**](http://zdharma.github.io/zinit/wiki/Sourcing-multiple-files) |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eSpecify additional file to source after sourcing main file or after setting up command (via `as\"program\"`). It is not a pattern but a plain file name.\u003c/div\u003e|\n| [**`multisrc`**](http://zdharma.github.io/zinit/wiki/Sourcing-multiple-files) |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eAllows to specify multiple files for sourcing, enumerated with spaces as the separators (e.g. `multisrc'misc.zsh grep.zsh'`) and also using brace-expansion syntax (e.g. `multisrc'{misc,grep}.zsh'`). Supports patterns.\u003c/div\u003e|\n\n### Conditional Loading\n| Modifier | Description |\n|:-:|-|\n| [**`wait`**](http://zdharma.github.io/zinit/wiki/Example-wait-conditions) |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003ePostpone loading a plugin or snippet. For `wait'1'`, loading is done `1` second after prompt. For `wait'[[ ... ]]'`, `wait'(( ... ))'`, loading is done when given condition is meet. For `wait'!...'`, prompt is reset after load. Zsh can start 80% (i.e.: 5x) faster thanks to postponed loading. **Fact:** when `wait` is used without value, it works as `wait'0'`.\u003c/div\u003e|\n| [**`load`**](http://zdharma.github.io/zinit/wiki/Multiple-prompts) |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eA condition to check which should cause plugin to load. It will load once, the condition can be still true, but will not trigger second load (unless plugin is unloaded earlier, see `unload` below). E.g.: `load'[[ $PWD = */github* ]]'`.\u003c/div\u003e|\n| [**`unload`**](http://zdharma.github.io/zinit/wiki/Multiple-prompts) |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eA condition to check causing plugin to unload. It will unload once, then only if loaded again. E.g.: `unload'[[ $PWD != */github* ]]'`.\u003c/div\u003e|\n| `cloneonly` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eDon't load the plugin / snippet, only download it \u003c/div\u003e|\n| `if` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eLoad plugin or snippet only when given condition is fulfilled, for example: `zinit ice if'[[ -n \"$commands[otool]\" ]]'; zinit load ...`.\u003c/div\u003e|\n| `has` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eLoad plugin or snippet only when given command is available (in $PATH), e.g. `zinit ice has'git' ...` \u003c/div\u003e|\n| `subscribe` / `on-update-of` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003ePostpone loading of a plugin or snippet until the given file(s) get updated, e.g. `subscribe'{~/files-*,/tmp/files-*}'` \u003c/div\u003e|\n| `trigger-load` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eCreates a function that loads the associated plugin/snippet, with an option (to use it, precede the ice content with `!`) to automatically forward the call afterwards, to a command of the same name as the function. Can obtain multiple functions to create – sparate with `;`.\u003c/div\u003e |\n\n### Plugin Output\n| Modifier | Description |\n|:-:|-|\n| `silent` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eMute plugin's or snippet's `stderr` \u0026 `stdout`. Also skip `Loaded ...` message under prompt for `wait`, etc. loaded plugins, and completion-installation messages.\u003c/div\u003e|\n| `lucid` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eSkip `Loaded ...` message under prompt for `wait`, etc. loaded plugins (a subset of `silent`).\u003c/div\u003e|\n| `notify` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eOutput given message under-prompt after successfully loading a plugin/snippet. In case of problems with the loading, output a warning message and the return code. If starts with `!` it will then always output the given message. Hint: if the message is empty, then it will just notify about problems.\u003c/div\u003e|\n\n### Completions\n| Modifier | Description |\n|:-:|-|\n| `blockf` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eDisallow plugin to modify `fpath`. Useful when a plugin wants to provide completions in traditional way. Zinit can manage completions and plugin can be blocked from exposing them.\u003c/div\u003e|\n| `nocompletions` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eDon't detect, install and manage completions for this plugin. Completions can be installed later with `zinit creinstall {plugin-spec}`.\u003c/div\u003e|\n\n### Command Execution After Cloning, Updating or Loading\n| Modifier | Description |\n|:-:|-|\n| `mv` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eMove file after cloning or after update (then, only if new commits were downloaded). Example: `mv \"fzf-* -\u003e fzf\"`. It uses `-\u003e` as separator for old and new file names. Works also with snippets.\u003c/div\u003e|\n| `cp` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eCopy file after cloning or after update (then, only if new commits were downloaded). Example: `cp \"docker-c* -\u003e dcompose\"`. Ran after `mv`.\u003c/div\u003e|\n| [**`atclone`**](http://zdharma.github.io/zinit/wiki/atload-and-other-at-ices) |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eRun command after cloning, within plugin's directory, e.g. `zinit ice atclone\"echo Cloned\"`. Ran also after downloading snippet.\u003c/div\u003e|\n| [**`atpull`**](http://zdharma.github.io/zinit/wiki/atload-and-other-at-ices) |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eRun command after updating (**only if new commits are waiting for download**), within plugin's directory. If starts with \"!\" then command will be ran before `mv` \u0026 `cp` ices and before `git pull` or `svn update`. Otherwise it is ran after them. Can be `atpull'%atclone'`, to repeat `atclone` Ice-mod.\u003c/div\u003e|\n| [**`atinit`**](http://zdharma.github.io/zinit/wiki/atload-and-other-at-ices) |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eRun command after directory setup (cloning, checking it, etc.) of plugin/snippet but before loading.\u003c/div\u003e|\n| [**`atload`**](http://zdharma.github.io/zinit/wiki/atload-and-other-at-ices) |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eRun command after loading, within plugin's directory. Can be also used with snippets. Passed code can be preceded with `!`, it will then be investigated (if using `load`, not `light`).\u003c/div\u003e|\n| `run-atpull` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eAlways run the atpull hook (when updating), not only when there are new commits to be downloaded.\u003c/div\u003e|\n| `nocd` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eDon't switch the current directory into the plugin's directory when evaluating the above ice-mods `atinit''`,`atload''`, etc.\u003c/div\u003e|\n| [**`make`**](http://zdharma.github.io/zinit/wiki/Installing-with-make) |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eRun `make` command after cloning/updating and executing `mv`, `cp`, `atpull`, `atclone` Ice mods. Can obtain argument, e.g. `make\"install PREFIX=/opt\"`. If the value starts with `!` then `make` is ran before `atclone`/`atpull`, e.g. `make'!'`.\u003c/div\u003e|\n| `countdown` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eCauses an interruptable (by Ctrl-C) countdown 5…4…3…2…1…0 to be displayed before executing `atclone''`,`atpull''` and `make` ices\u003c/div\u003e|\n| `reset` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eInvokes `git reset --hard HEAD` for plugins or `svn revert` for SVN snippets before pulling any new changes. This way `git` or `svn` will not report conflicts if some changes were done in e.g.: `atclone''` ice. For file snippets and `gh-r` plugins it invokes `rm -rf *`.\u003c/div\u003e|\n\n### Sticky-Emulation Of Other Shells\n| Modifier | Description |\n|:-:|-|\n| `sh`, `!sh` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eSource the plugin's (or snippet's) script with `sh` emulation so that also all functions declared within the file will get a *sticky* emulation assigned – when invoked they'll execute also with the `sh` emulation set-up. The `!sh` version switches additional options that are rather not important from the portability perspective.\u003c/div\u003e|\n| `bash`, `!bash` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eThe same as `sh`, but with the `SH_GLOB` option disabled, so that Bash regular expressions work.\u003c/div\u003e|\n| `ksh`, `!ksh` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eThe same as `sh`, but emulating `ksh` shell.\u003c/div\u003e|\n| `csh`, `!csh` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eThe same as `sh`, but emulating `csh` shell.\u003c/div\u003e|\n\n### Others\n| Modifier | Description |\n|:-:|-|\n| `as` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eCan be `as\"program\"` (also the alias: `as\"command\"`), and will cause to add script/program to `$PATH` instead of sourcing (see `pick`). Can also be `as\"completion\"` – use with plugins or snippets in whose only underscore-starting `_*` files you are interested in. The third possible value is `as\"null\"` – a shorthand for `pick\"/dev/null\" nocompletions` – i.e.: it disables the default script-file sourcing and also the installation of completions.\u003c/div\u003e|\n| [**`id-as`**](http://zdharma.github.io/zinit/wiki/id-as/) |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eNickname a plugin or snippet, to e.g. create a short handler for long-url snippet.\u003c/div\u003e|\n| `compile` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003ePattern (+ possible `{...}` expansion, like `{a/*,b*}`) to select additional files to compile, e.g. `compile\"(pure\\|async).zsh\"` for `sindresorhus/pure`.\u003c/div\u003e |\n| `nocompile` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eDon't try to compile `pick`-pointed files. If passed the exclamation mark (i.e. `nocompile'!'`), then do compile, but after `make''` and `atclone''` (useful if Makefile installs some scripts, to point `pick''` at the location of their installation).\u003c/div\u003e|\n| `service` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eMake following plugin or snippet a *service*, which will be ran in background, and only in single Zshell instance. See [zservices-organization](https://github.com/zservices) page.\u003c/div\u003e|\n| `reset-prompt` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eReset the prompt after loading the plugin/snippet (by issuing `zle .reset-prompt`). Note: normally it's sufficient to precede the value of `wait''` ice with `!`.\u003c/div\u003e|\n| `bindmap` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eTo hold `;`-separated strings like `Key(s)A -\u003e Key(s)B`, e.g. `^R -\u003e ^T; ^A -\u003e ^B`. In general, `bindmap''`changes bindings (done with the `bindkey` builtin) the plugin does. The example would cause the plugin to map Ctrl-T instead of Ctrl-R, and Ctrl-B instead of Ctrl-A. **Does not work with snippets.**\u003c/div\u003e|\n| `trackbinds` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eShadow but only `bindkey` calls even with `zinit light ...`, i.e. even with investigating disabled (fast loading), to allow `bindmap` to remap the key-binds. The same effect has `zinit light -b ...`, i.e. additional `-b` option to the `light`-subcommand. **Does not work with snippets.**\u003c/div\u003e|\n| [**`wrap-track`**](http://zdharma.github.io/zinit/wiki/wrap-track) |\u003cdiv align=\"justify\" style='text-align: justify;'\u003e Takes a `;`-separated list of function names that are to be investigated (meaning gathering report and unload data) **once** during execution. It works by wrapping the functions with a investigating-enabling and disabling snippet of code. In summary, `wrap-track` allows to extend the investigating beyond the moment of loading of a plugin. Example use is to `wrap-track` a precmd function of a prompt (like `_p9k_precmd()` of powerlevel10k) or other plugin that _postpones its initialization till the first prompt_ (like e.g.: zsh-autosuggestions). **Does not work with snippets.**\u003c/div\u003e|\n| `aliases` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eLoad the plugin with the aliases mechanism enabled. Use with plugins that define **and use** aliases in their scripts.\u003c/div\u003e|\n| `light-mode` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eLoad the plugin without the investigating, i.e.: as if it would be loaded with the `light` command. Useful for the for-syntax, where there is no `load` nor `light` subcommand\u003c/div\u003e|\n| [**`extract`**](http://zdharma.github.io/zinit/wiki/extract-Ice/) |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003ePerforms archive extraction supporting multiple formats like `zip`, `tar.gz`, etc. and also notably OS X `dmg` images. If it has no value, then it works in the *auto* mode – it automatically extracts all files of known archive extensions IF they aren't located deeper than in a sub-directory (this is to prevent extraction of some helper archive files, typically located somewhere deeper in the tree). If no such files will be found, then it extracts all found files of known **type** – the type is being read by the `file` Unix command. If not empty, then takes names of the files to extract. Refer to the Wiki page for further information.\u003c/div\u003e|\n| `subst` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eSubstitute the given string into another string when sourcing the plugin script, e.g.: `zinit subst'autoload → autoload -Uz' …`.\u003c/div\u003e|\n| `autoload` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eAutoload the given functions (from their files). Equvalent to calling `atinit'autoload the-function'`. Supports renaming of the function – pass `'… → new-name'` or `'… -\u003e new-name'`, e.g.: `zinit autoload'fun → my-fun; fun2 → my-fun2'`.\u003c/div\u003e|\n\n### Order of Execution\n\nOrder of execution of related Ice-mods: `atinit` -\u003e `atpull!` -\u003e `make'!!'` -\u003e `mv` -\u003e `cp` -\u003e `make!` -\u003e `atclone`/`atpull` -\u003e `make` -\u003e `(plugin script loading)` -\u003e `src` -\u003e `multisrc` -\u003e `atload`.\n\n## Zinit Commands\n\nFollowing commands are passed to `zinit ...` to obtain described effects.\n\n### Help\n\n| Command | Description |\n|:-:|-|\n| `-h, --help, help` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Usage information.\u003c/div\u003e|\n| `man` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Manual.\u003c/div\u003e|\n\n### Loading and Unloading\n\n| Command | Description |\n|:-:|-|\n| `load {plg-spec}` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Load plugin, can also receive absolute local path.\u003c/div\u003e|\n| `light [-b] {plg-spec}` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Light plugin load, without reporting/investigating. `-b` – investigate `bindkey`-calls only. There's also `light-mode` ice which can be used to induce the no-investigating (i.e.: *light*) loading, regardless of the command used.\u003c/div\u003e|\n| `unload [-q] {plg-spec}` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Unload plugin loaded with `zinit load ...`. `-q` – quiet.\u003c/div\u003e|\n| `snippet [-f] {url}` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Source local or remote file (by direct URL). `-f` – don't use cache (force redownload). The URL can use the following shorthands: `PZT::` (Prezto), `PZTM::` (Prezto module), `OMZ::` (Oh My Zsh), `OMZP::` (OMZ plugin), `OMZL::` (OMZ library), `OMZT::` (OMZ theme), e.g.: `PZTM::environment`, `OMZP::git`, etc.\u003c/div\u003e|\n\n### Completions\n\n| Command | Description |\n|:-:|-|\n| \u003ccode\u003e clist [*columns*], completions [*columns*] \u003c/code\u003e |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e List completions in use, with \u003ccode\u003e*columns*\u003c/code\u003e completions per line. `zpl clist 5` will for example print 5 completions per line. Default is 3.\u003c/div\u003e|\n| `cdisable {cname}` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Disable completion `cname`.\u003c/div\u003e|\n| `cenable {cname}` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Enable completion `cname`.\u003c/div\u003e|\n| `creinstall [-q] [-Q] {plg-spec}` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Install completions for plugin, can also receive absolute local path. `-q` – quiet. `-Q` - quiet all.\u003c/div\u003e|\n| `cuninstall {plg-spec}` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Uninstall completions for plugin.\u003c/div\u003e|\n| `csearch` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Search for available completions from any plugin.\u003c/div\u003e|\n| `compinit` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Refresh installed completions.\u003c/div\u003e|\n| `cclear` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Clear stray and improper completions.\u003c/div\u003e|\n| `cdlist` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Show compdef replay list.\u003c/div\u003e|\n| `cdreplay [-q]` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Replay compdefs (to be done after compinit). `-q` – quiet.\u003c/div\u003e|\n| `cdclear [-q]` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Clear compdef replay list. `-q` – quiet.\u003c/div\u003e|\n\n### Tracking of the Active Session\n\n| Command | Description |\n|:-:|-|\n| `dtrace, dstart` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Start investigating what's going on in session.\u003c/div\u003e|\n| `dstop` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Stop investigating what's going on in session.\u003c/div\u003e|\n| `dunload` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Revert changes recorded between dstart and dstop.\u003c/div\u003e|\n| `dreport` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Report what was going on in session.\u003c/div\u003e|\n| `dclear` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Clear report of what was going on in session.\u003c/div\u003e|\n\n### Reports and Statistics\n\n| Command | Description |\n|:-:|-|\n| `times [-s] [-m]` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Statistics on plugin load times, sorted in order of loading. `-s` – use seconds instead of milliseconds. `-m` – show plugin loading moments.\u003c/div\u003e|\n| `zstatus` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Overall Zinit status.\u003c/div\u003e|\n| `report {plg-spec}\\|--all` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Show plugin report. `--all` – do it for all plugins.\u003c/div\u003e|\n| `loaded [keyword], list [keyword]` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Show what plugins are loaded (filter with 'keyword').\u003c/div\u003e|\n| `ls` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e List snippets in formatted and colorized manner. Requires **tree** program.\u003c/div\u003e|\n| `status {plg-spec}\\|URL\\|--all` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Git status for plugin or svn status for snippet. `--all` – do it for all plugins and snippets.\u003c/div\u003e|\n| `recently [time-spec]` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Show plugins that changed recently, argument is e.g. 1 month 2 days.\u003c/div\u003e|\n| `bindkeys` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Lists bindkeys set up by each plugin.\u003c/div\u003e|\n\n### Compiling\n\n| Command | Description |\n|:-:|-|\n| `compile {plg-spec}\\|--all` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Compile plugin. `--all` – compile all plugins.\u003c/div\u003e|\n| `uncompile {plg-spec}\\|--all` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Remove compiled version of plugin. `--all` – do it for all plugins.\u003c/div\u003e|\n| `compiled` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e List plugins that are compiled.\u003c/div\u003e|\n\n### Other\n\n| Command | Description |\n|:-:|-|\n| `self-update` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Updates and compiles Zinit.\u003c/div\u003e|\n| `update [-q] [-r] {plg-spec}\\|URL\\|--all` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Git update plugin or snippet.\u003cbr\u003e `--all` – update all plugins and snippets.\u003cbr\u003e  `-q` – quiet.\u003cbr\u003e `-r` \\| `--reset` – run `git reset --hard` / `svn revert` before pulling changes.\u003c/div\u003e|\n| `ice \u003cice specification\u003e` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Add ice to next command, argument is e.g. from\"gitlab\".\u003c/div\u003e|\n| `delete {plg-spec}\\|URL\\|--clean\\|--all` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Remove plugin or snippet from disk (good to forget wrongly passed ice-mods).  \u003cbr\u003e `--all` – purge.\u003cbr\u003e `--clean` – delete plugins and snippets that are not loaded.\u003c/div\u003e|\n| `cd {plg-spec}` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Cd into plugin's directory. Also support snippets if fed with URL.\u003c/div\u003e|\n| `edit {plg-spec}` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Edit plugin's file with $EDITOR.\u003c/div\u003e|\n| `glance {plg-spec}` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Look at plugin's source (pygmentize, {,source-}highlight).\u003c/div\u003e|\n| `stress {plg-spec}` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Test plugin for compatibility with set of options.\u003c/div\u003e|\n| `changes {plg-spec}` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e View plugin's git log.\u003c/div\u003e|\n| `create {plg-spec}` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Create plugin (also together with GitHub repository).\u003c/div\u003e|\n| `srv {service-id} [cmd]` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Control a service, command can be: stop,start,restart,next,quit; `next` moves the service to another Zshell.\u003c/div\u003e|\n| `recall {plg-spec}\\|URL` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Fetch saved ice modifiers and construct `zinit ice ...` command.\u003c/div\u003e|\n| `env-whitelist [-v] [-h] {env..}` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Allows to specify names (also patterns) of variables left unchanged during an unload. `-v` – verbose.\u003c/div\u003e|\n| `module` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003e Manage binary Zsh module shipped with Zinit, see `zinit module help`.\u003c/div\u003e|\n| `add-fpath\\|fpath` `[-f\\|--front]` `{plg-spec}` `[subdirectory]` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eAdds given plugin (not yet snippet) directory to `$fpath`. If the second argument is given, it is appended to the directory path. If the option `-f`/`--front` is given, the directory path is prepended instead of appended to `$fpath`. The `{plg-spec}` can be absolute path, i.e.: it's possible to also add regular directories.\u003c/div\u003e|\n| `run` `[-l]` `[plugin]` `{command}` |\u003cdiv align=\"justify\" style=\"text-align: justify;\"\u003eRuns the given command in the given plugin's directory. If the option `-l` will be given then the plugin should be skipped – the option will cause the previous plugin to be reused.\u003c/div\u003e|\n\n## Updating Zinit and Plugins\n\nTo update Zinit issue `zinit self-update` in the command line.\n\nTo update all plugins and snippets, issue `zinit update`. If you wish to update only\na single plugin/snippet instead issue `zinit update NAME_OF_PLUGIN`. A list of\ncommits will be shown:\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"./doc/img/update.png\" /\u003e\n\u003c/p\u003e\n\nSome plugins require performing an action each time they're updated. One way you can do\nthis is by using the `atpull` ice modifier. For example, writing `zinit ice atpull'./configure'` before loading a plugin will execute `./configure` after a successful update. Refer to [Ice Modifiers](#ice-modifiers) for more information.\n\nThe ice modifiers for any plugin or snippet are stored in their directory in a\n`._zinit` subdirectory, hence the plugin doesn't have to be loaded to be correctly\nupdated. There's one other file created there, `.zinit_lstupd` – it holds the log of\nthe new commits pulled-in in the last update.\n\n# Completions\n\n## Calling `compinit` Without Turbo Mode\n\nWith no Turbo mode in use, compinit can be called normally, i.e.: as `autoload compinit;\ncompinit`. This should be done after loading of all plugins and before possibly calling\n`zinit cdreplay`. \n\nThe `cdreplay` subcommand is provided to re-play all catched `compdef` calls. The\n`compdef` calls are used to define a completion for a command. For example, `compdef\n_git git` defines that the `git` command should be completed by a `_git` function.\n\nThe `compdef` function is provided by `compinit` call. As it should be called later,\nafter loading all of the plugins, Zinit provides its own `compdef` function that\ncatches (i.e.: records in an array) the arguments of the call, so that the loaded\nplugins can freely call `compdef`. Then, the `cdreplay` (*compdef-replay*) can be used,\nafter `compinit` will be called (and the original `compdef` function will become\navailable), to execute all detected `compdef` calls. To summarize:\n\n```sh\nsource ~/.zinit/bin/zinit.zsh\n\nzinit load \"some/plugin\"\n...\ncompdef _gnu_generic fd  # this will be intercepted by Zinit, because as the compinit\n                         # isn't yet loaded, thus there's no such function `compdef'; yet\n                         # Zinit provides its own `compdef' function which saves the\n                         # completion-definition for later possible re-run with `zinit\n                         # cdreplay' or `zicdreplay' (the second one can be used in hooks\n                         # like atload'', atinit'', etc.)\n...\nzinit load \"other/plugin\"\n\nautoload -Uz compinit\ncompinit\n\nzinit cdreplay -q   # -q is for quiet; actually run all the `compdef's saved before\n                    #`compinit` call (`compinit' declares the `compdef' function, so\n                    # it cannot be used until `compinit' is ran; Zinit solves this\n                    # via intercepting the `compdef'-calls and storing them for later\n                    # use with `zinit cdreplay')\n```\n\nThis allows to call compinit once.\nPerformance gains are huge, example shell startup time with double `compinit`: **0.980** sec, with\n`cdreplay` and single `compinit`: **0.156** sec.\n\n## Calling `compinit` With Turbo Mode\n\nIf you load completions using `wait''` Turbo mode then you can add\n`atinit'zicompinit'` to syntax-highlighting plugin (which should be the last\none loaded, as their (2 projects, [z-sy-h](https://github.com/zsh-users/zsh-syntax-highlighting) \u0026\n[f-sy-h](https://github.com/zdharma/fast-syntax-highlighting))\n documentation state), or `atload'zicompinit'` to last\ncompletion-related plugin. `zicompinit` is a function that just runs `autoload\ncompinit; compinit`, created for convenience. There's also `zicdreplay` which\nwill replay any caught compdefs so you can also do: `atinit'zicompinit;\nzicdreplay'`, etc. Basically, the whole topic is the same as normal `compinit` call,\nbut it is done in `atinit` or `atload` hook of the last related plugin with use of the\nhelper functions (`zicompinit`,`zicdreplay` \u0026 `zicdclear` – see below for explanation\nof the last one). To summarize:\n\n```zsh\nsource ~/.zinit/bin/zinit.zsh\n\n# Load using the for-syntax\nzinit wait lucid for \\\n    \"some/plugin\"\nzinit wait lucid for \\\n    \"other/plugin\"\n\nzinit wait lucid atload\"zicompinit; zicdreplay\" blockf for \\\n    zsh-users/zsh-completions\n```\n\n## Ignoring Compdefs\n\nIf you want to ignore compdefs provided by some plugins or snippets, place their load commands\nbefore commands loading other plugins or snippets, and issue `zinit cdclear` (or\n`zicdclear`, designed to be used in hooks like `atload''`):\n\n```SystemVerilog\nsource ~/.zinit/bin/zinit.zsh\nzinit snippet OMZP::git\nzinit cdclear -q # \u003c- forget completions provided by Git plugin\n\nzinit load \"some/plugin\"\n...\nzinit load \"other/plugin\"\n\nautoload -Uz compinit\ncompinit\nzinit cdreplay -q # \u003c- execute compdefs provided by rest of plugins\nzinit cdlist # look at gathered compdefs\n```\n\nThe `cdreplay` is important if you use plugins like\n`OMZP::kubectl` or `asdf-vm/asdf`, because these plugins call\n`compdef`.\n\n## Disabling System-Wide `compinit` Call (Ubuntu)\n\nOn Ubuntu users might get surprised that e.g. their completions work while they didn't\ncall `compinit` in their `.zshrc`. That's because the function is being called in\n`/etc/zshrc`. To disable this call – what is needed to avoid the slowdown and if user\nloads any completion-equipped plugins, i.e. almost on 100% – add the following lines to\n`~/.zshenv`:\n\n```zsh\n# Skip the not really helping Ubuntu global compinit\nskip_global_compinit=1\n```\n\n# Zinit Module\n\n## Motivation\n\nThe module is a binary Zsh module (think about `zmodload` Zsh command, it's that topic) which transparently and\nautomatically **compiles sourced scripts**. Many plugin managers do not offer compilation of plugins, the module is\na solution to this. Even if a plugin manager does compile plugin's main script (like Zinit does), the script can\nsource smaller helper scripts or dependency libraries (for example, the prompt `geometry-zsh/geometry` does that)\nand there are very few solutions to that, which are demanding (e.g. specifying all helper files in plugin load\ncommand and investigating updates to the plugin – in Zinit case: by using `compile` ice-mod).\n\n  ![image](https://raw.githubusercontent.com/zdharma/zinit/images/mod-auto-compile.png)\n\n## Installation\n\n### Without Zinit\n\nTo install just the binary Zinit module **standalone** (Zinit is not needed, the module can be used with any\nother plugin manager), execute:\n\n```zsh\nsh -c \"$(curl -fsSL https://raw.githubusercontent.com/zdharma/zinit/master/doc/mod-install.sh)\"\n```\n\nThis script will display what to add to `~/.zshrc` (2 lines) and show usage instructions.\n\n### With Zinit\n\nZinit users can build the module by issuing following command instead of running above `mod-install.sh` script\n(the script is for e.g. `zgen` users or users of any other plugin manager):\n\n```zsh\nzinit module build\n```\n\nThis command will compile the module and display instructions on what to add to `~/.zshrc`.\n\n## Measuring Time of `source`s\n\nBesides the compilation-feature, the module also measures **duration** of each script sourcing. Issue `zpmod\nsource-study` after loading the module at top of `~/.zshrc` to see a list of all sourced files with the time the\nsourcing took in milliseconds on the left. This feature allows to profile the shell startup. Also, no script can\npass-through that check and you will obtain a complete list of all loaded scripts, like if Zshell itself was\ninvestigating this. The list can be surprising.\n\n## Debugging\n\nTo enable debug messages from the module set:\n\n```zsh\ntypeset -g ZPLG_MOD_DEBUG=1\n```\n\n# Hints and Tips\n\n## Customizing Paths\n\nFollowing variables can be set to custom values, before sourcing Zinit. The\nprevious global variables like `$ZPLG_HOME` have been removed to not pollute\nthe namespace – there's single `$ZINIT` hash instead of `8` string\nvariables. Please update your dotfiles.\n\n```\ndeclare -A ZINIT  # initial Zinit's hash definition, if configuring before loading Zinit, and then:\n```\n| Hash Field | Description |\n-------------|--------------\n| ZINIT[BIN_DIR]         | Where Zinit code resides, e.g.: \"~/.zinit/bin\"                      |\n| ZINIT[HOME_DIR]        | Where Zinit should create all working directories, e.g.: \"~/.zinit\" |\n| ZINIT[PLUGINS_DIR]     | Override single working directory – for plugins, e.g. \"/opt/zsh/zinit/plugins\" |\n| ZINIT[COMPLETIONS_DIR] | As above, but for completion files, e.g. \"/opt/zsh/zinit/root_completions\"     |\n| ZINIT[SNIPPETS_DIR]    | As above, but for snippets |\n| ZINIT[ZCOMPDUMP_PATH]  | Path to `.zcompdump` file, with the file included (i.e. its name can be different) |\n| ZINIT[COMPINIT_OPTS]   | Options for `compinit` call (i.e. done by `zicompinit`), use to pass -C to speed up loading |\n| ZINIT[MUTE_WARNINGS]   | If set to `1`, then mutes some of the Zinit warnings, specifically the `plugin already registered` warning |\n| ZINIT[OPTIMIZE_OUT_DISK_ACCESSES] | If set to `1`, then Zinit will skip checking if a Turbo-loaded object exists on the disk. By default Zinit skips Turbo for non-existing objects (plugins or snippets) to install them before the first prompt – without any delays, during the normal processing of `zshrc`. This option can give a performance gain of about 10 ms out of 150 ms (i.e.: Zsh will start up in 140 ms instead of 150 ms).|\n\nThere is also `$ZPFX`, set by default to `~/.zinit/polaris` – a directory\nwhere software with `Makefile`, etc. can be pointed to, by e.g. `atclone'./configure --prefix=$ZPFX'`.\n\n## Non-GitHub (Local) Plugins\n\nUse `create` subcommand with user name `_local` (the default) to create plugin's\nskeleton in `$ZINIT[PLUGINS_DIR]`. It will be not connected with GitHub repository\n(because of user name being `_local`). To enter the plugin's directory use `cd` command\nwith just plugin's name (without `_local`, it's optional).\n\nIf user name will not be `_local`, then Zinit will create repository also on GitHub\nand setup correct repository origin.\n\n\n## Extending Git\n\nThere are several projects that provide git extensions. Installing them with\nZinit has many benefits:\n\n - all files are under `$HOME` – no administrator rights needed,\n - declarative setup (like Chef or Puppet) – copying `.zshrc` to different account\n   brings also git-related setup,\n - easy update by e.g. `zinit update --all`.\n\nBelow is a configuration that adds multiple git extensions, loaded in Turbo mode,\n1 second after prompt, with use of the\n[Bin-Gem-Node](https://github.com/zinit-zsh/z-a-bin-gem-node) annex:\n\n```zsh\nzinit as\"null\" wait\"1\" lucid for \\\n    sbin    Fakerr/git-recall \\\n    sbin    cloneopts paulirish/git-open \\\n    sbin    paulirish/git-recent \\\n    sbin    davidosomething/git-my \\\n    sbin atload\"export _MENU_THEME=legacy\" \\\n            arzzen/git-quick-stats \\\n    sbin    iwata/git-now \\\n    make\"PREFIX=$ZPFX install\" \\\n            tj/git-extras \\\n    sbin\"bin/git-dsf;bin/diff-so-fancy\" \\\n            zdharma/zsh-diff-so-fancy \\\n    sbin\"git-url;git-guclone\" make\"GITURL_NO_CGITURL=1\" \\\n            zdharma/git-url\n```\n\nTarget directory for installed files is `$ZPFX` (`~/.zinit/polaris` by default).\n\n# Supporting\n\nZinit is a personal, free-time project with no funding and a huge [feature request\nbacklog](https://github.com/zdharma/zinit/issues). If you love it, consider supporting its\ndevelopment via [GitHub Sponsors](https://github.com/sponsors/psprint) or\n[Patreon](https://patreon.com/psprint). Any help counts!\n\n# Getting Help and Community\n\nDo you need help or wish to get in touch with other Zinit users?\n\n- Visit our subreddit [r/zinit](https://www.reddit.com/r/zinit/).\n\n- Chat with us in our IRC channel. Connect to [chat.freenode.net:6697](ircs://chat.freenode.net:6697/%23zinit) (SSL) or [chat.freenode.net:6667](irc://chat.freenode.net:6667/%23zinit) and join #zinit. Following is a quick access via Webchat [![IRC](https://kiwiirc.com/buttons/chat.freenode.net/zinit.png)](https://kiwiirc.com/client/chat.freenode.net:+6697/#zinit)\n\n- Or via Gitter [![Join the chat at https://gitter.im/zdharma/zinit][gitter-badge]][gitter-link]\n\n[status-badge]: https://travis-ci.org/zdharma/zinit.svg?branch=master\n[status-link]: https://travis-ci.org/zdharma/zinit\n[MIT-badge]: https://img.shields.io/badge/license-MIT-blue.svg\n[MIT-link]: ./LICENSE\n[ver-badge]: https://img.shields.io/github/tag/zdharma/zinit.svg\n[ver-link]: https://github.com/zdharma/zinit/releases\n[act-badge]: https://img.shields.io/github/commit-activity/y/zdharma/zinit.svg\n[gitter-badge]: https://badges.gitter.im/zdharma/zinit.svg\n[gitter-link]: https://gitter.im/zdharma/zinit?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge\n[reddit-badge]: https://img.shields.io/reddit/subreddit-subscribers/zinit?style=social\n[reddit-link]: https://reddit.com/r/zinit\n\n\u003c!-- vim:set ft=markdown tw=80 fo+=1n: --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fddlees%2Fzinit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fddlees%2Fzinit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fddlees%2Fzinit/lists"}