{"id":16342792,"url":"https://github.com/thiagokokada/zit","last_synced_at":"2025-08-20T16:23:30.528Z","repository":{"id":56521074,"uuid":"93950081","full_name":"thiagokokada/zit","owner":"thiagokokada","description":"minimal plugin manager for ZSH","archived":false,"fork":false,"pushed_at":"2020-11-02T19:15:41.000Z","size":77,"stargazers_count":25,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-27T20:46:58.091Z","etag":null,"topics":["plugin-manager","shell","zit","zsh"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thiagokokada.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-06-10T16:00:54.000Z","updated_at":"2025-01-10T20:38:42.000Z","dependencies_parsed_at":"2022-08-15T20:20:15.345Z","dependency_job_id":null,"html_url":"https://github.com/thiagokokada/zit","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/thiagokokada/zit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagokokada%2Fzit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagokokada%2Fzit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagokokada%2Fzit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagokokada%2Fzit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thiagokokada","download_url":"https://codeload.github.com/thiagokokada/zit/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagokokada%2Fzit/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262361661,"owners_count":23299084,"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","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":["plugin-manager","shell","zit","zsh"],"created_at":"2024-10-11T00:05:12.122Z","updated_at":"2025-06-28T01:36:23.565Z","avatar_url":"https://github.com/thiagokokada.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Zit\n\n## minimal plugin manager for ZSH\n\n**This software is completed, not abandoned. More details in [FAQ](#FAQ).**\n\n[![Test](https://github.com/thiagokokada/zit/workflows/Test/badge.svg)](https://github.com/thiagokokada/zit/actions)\n\nZit is yet another plugin manager for ZSH. It is minimal because it implements\nthe bare minimum to be qualified as a plugin manager: it allows the user to\ninstall plugins from Git repositories (and Git repositories only, them why\nthe name), source plugins and upgrade them. It does not implement fancy\nfunctions like cleanup of removed plugins, automatic compilation of installed\nplugins, alias for oh-my-zsh/prezto/other ZSH frameworks, building binaries,\nPATH manipulation and others.\n\nIt should be as simple as it can be, minimal enough that if you want you can\nsimply copy and paste the whole Zit source to your `~/.zshrc` and it would\nwork.\n\n## Usage\n\nThe first command of Zit is `install`:\n\n    $ zit-install \"https://github.com/Eriner/zim/\" \".zim\"\n\nThe command above will clone [Eriner/zim](https://github.com/Eriner/zim) inside\n`ZIT_MODULES_PATH/.zim` during the next start of your ZSH (or if you do a\n`source ~/.zshrc`). However, if `ZIT_MODULES_PATH/.zim` already exists, it will\ndo nothing.\n\nBy the way, the default value of `ZIT_MODULES_PATH` is defined as the value of\nyour `ZDOTDIR` variable or your home directory.\n\nYou can remove an installed module using `remove`:\n\n    $ zit-remove \".zim\"\n\nThis will prompt if you really want to remove the directory `ZIT_MODULES_PATH/.zim`.\nIf you answer (y)es, the removal will continue.\n\nAfter install, you can load ZIM by running:\n\n    $ zit-load \".zim\" \"init.zsh\"\n\n`zit-load` also supports loading local plugins. Say I have a local plugins in\n`~/.local-plugin` directory named `local.zsh`:\n\n    $ zit-load \".local-plugin\" \"local.zsh\"\n\nZit also supports Git branches. To do so, pass the branch using `#branch` after\nthe repository url during `zit-install` call:\n\n    $ zit-install \"https://github.com/zsh-users/zsh-autosuggestions#develop\" \".zsh-autosuggestions\"\n\n**Important note:** Zit does not support changing branches after install. If\nyou want to change a branch of an already installed branch, go to the directory\nof the installed plugin and call `git checkout branch-name` manually! An alternative\nis to use `zit-remove` to remove the module without removing it from your configuration,\nso the module will be reinstalled in the next ZSH startup.\n\nYou can also call both `zit-install` and `zit-load` in one step:\n\n    $ zit-install-load \"https://github.com/Eriner/zim/\" \".zim\" \"init.zsh\"\n\nFinally, Zit can also upgrade all your installed plugins. For this one you\nsimply need to run:\n\n    $ zit-upgrade\n\nAnd Zit will upgrade all your plugins.\n\nOf course, instead of typing this command at the start of your session\neverytime, you can simply put in your `~/.zshrc`.\n\n## Aliases\n\nZit also provide some command alias so you can type slightly less:\n\n| Command            | Alias    |\n| ------------------ | -------- |\n| `zit-install`      | `zit-in` |\n| `zit-load`         | `zit-lo` |\n| `zit-install-load` | `zit-il` |\n| `zit-upgrade`      | `zit-up` |\n| `zit-remove`       | `zit-rm` |\n\n## Installation\n\nThere are different ways to install Zit. The simplest one is to copy the file\n`zit.zsh` somewhere in your home directory and source it in your `~/.zshrc`.\nThis will always work because I want the source code of Zit to be\nself-contained inside this one file.\n\nIf you want to be fancy, you can also clone this repository:\n\n    $ git clone https://github.com/thiagokokada/zit.git \"${HOME}/.zit\"\n\nAnd source the cloned diretory in your `~/.zshrc`\n\n    source $HOME/.zit/zit.zsh\n\nIn the above case you could even put in your `~/.zshrc` (after above line):\n\n    zit-install \"https://github.com/thiagokokada/zit\" \".zit\"\n\nSo Zit can manage Zit upgrades too.\n\n## Supported versions\n\nZit supports ZSH version `5.2.0` and above. Older versions may work however\nthey're unsupported.\n\nFor Git, version `1.9.0` and above are supported.\n\n## Examples\n\nYou can see examples of Zit utilization in [zshrc.example](zshrc.example)\n\n## FAQ\n\n### Why Zit doesn't have updates? Looks like an abandoned software...\n\nZit is feature complete. It were developed with two objectives in mind:\n\n1. Being as minimal as possible, but not minimal enough that would be useless\n2. Being as correct as possible, doing what I want without trying to be smart\n\nBoth objectives have been archived so I can proudly say that Zit is a finished\nsoftware. I still use Zit daily, and it covers all my use cases and,\nsurprisingly, it is flexible enought that I still find new ways to use it.\n\nAnd more important, the last bug I found in it was months ago (and it was a\nsimple typo!).\n\nThe lack of updates doesn't mean that Zit is abandoned, though. Like I said\nabove, I still use Zit daily, so if I (or someone) found some bug I will fix\nit.\n\n### Why Zit install everything in home directory by default?\n\nBecause some plugins assume that they're running from home. If this isn't a\nproblem for you, you can simply set your `ZIT_MODULES_PATH` to something in\nyour `~/.zshrc`:\n\n    export ZIT_MODULES_PATH=\"$HOME/.zit.d\"\n\nIf you set `ZIT_MODULES_PATH`, and there is one plugin that has hard-coded\npaths, you can do the following:\n\n    ZIT_MODULES_PATH=\"$HOME\" zit-in \"https://github.com/author/random\" \".random\"\n    ZIT_MODULES_PATH=\"$HOME\" zit-lo \".random\" \"random.zsh\"\n\n### How can I compile my ZSH plugins to speed up initialization?\n\nThe script `extras/compile-zsh-files.zsh` shows an example on how to compile\nZSH files and plugins. You can copy it somewhere and adapt it to your needs,\nor you can call it directly by adding the following lines **at the end of your\n`~/.zshrc`**:\n\n    zit-in \"https://github.com/thiagokokada/zit\" \".zit\" # Skip if Zit is already installed\n    zit-lo \".zit\" \"extras/compile-zsh-files.zsh\"\n\n### How can I run a bash/ksh/sh plugin?\n\nYou can simply try `zit-in/zit-lo` or `zit-il` and see if it will work. If\nnot, you can try to run `zit lo` in compatibility mode:\n\n    # You can't use zit-il in this case, since we want to run only zit-lo in emulation mode.\n    zit-in \"https://github.com/author/random-bash-plugin\" \"random-bash-plugin\"\n    # You may need to avoid aliases in emulation mode\n    emulate bash -c 'zit-load \"random-bash-plugin\" \"plugin.bash\"'\n\nJust remember that this may not work either since ZSH emulation is not\nperfect.\n\n### How can I use Zit to manage scripts like fasd?\n\nIf you want to use Zit to manage scripts that should be added to the `PATH`\ninstead of using `source` to load, you can do the following:\n\n    zit-in \"https://github.com/clvv/fasd\" \"fasd\"\n    export PATH=\"${ZIT_MODULES_PATH}/fasd:${PATH}\"\n\n### How can I disable upgrades for a specific module in Zit?\n\nYou can set `ZIT_DISABLE_UPGRADE` in `zit-install` and `zit-install-load` to\ndisable upgrades for a specific module. For example:\n\n    ZIT_DISABLE_UPGRADE=1 zit-install \"https://github.com/Eriner/zim/\" \".zim\"\n    ZIT_DISABLE_UPGRADE=1 zit-install-load \"https://github.com/Eriner/zim/\" \".zim\" \"init.zsh\"\n\nYou can also disable `ZIT_DISABLE_UPGRADE` globally by calling `export\nZIT_DISABLE_UPGRADE=1` in your `.zshrc`. This may be useful if you want to only\nupgrade some specific modules, by unsetting `ZIT_DISABLE_UPGRADE`. For example:\n\n    export ZIT_DISABLE_UPGRADE=1\n    ZIT_DISABLE_UPGRADE= zit-install \"https://github.com/Eriner/zim/\" \".zim\"\n    ZIT_DISABLE_UPGRADE= zit-install-load \"https://github.com/Eriner/zim/\" \".zim\" \"init.zsh\"\n\n### How can I force a specific version of module in Zit?\n\nFollowing the tip above to disable upgrades, you can be sure that one specific\nmodule will never change its version.\n\nSo lets say you want to use `Eriner/zim` with commit `abcde`, you can do\nsomething like this:\n\n    # In your .zshrc\n    ZIT_DISABLE_UPGRADE=1 zit-install \"https://github.com/Eriner/zim/\" \".zim\"\n\n    # In ZSH itself\n    $ cd ~/.zim\n    $ git checkout abcde\n\n### How can I remove a module? It keeps being reinstalled after calling `zit-rm`!\n\nUsing `zit-remove` will delete the directory, however if you do not remove it from\nyour `.zshrc` it will be installed again in the next ZSH startup. So do not forget\nto remove the call to `zit-install` or `zit-install-load` of your module.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthiagokokada%2Fzit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthiagokokada%2Fzit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthiagokokada%2Fzit/lists"}