Commit b84833b4c7e71bdfbead84f65b4cb345a10cd91c
1 parent
1d001ec5f6
Add readme.
Showing 1 changed file with 194 additions and 0 deletions Side-by-side Diff
README.mkd
... | ... | @@ -0,0 +1,194 @@ |
1 | +# Antigen | |
2 | + | |
3 | +Antigen is a small set of functions that help you easily manage your shell (zsh) | |
4 | +plugins, called bundles. The concept is pretty much the same as bundles in a | |
5 | +typical vim+pathogen setup. Antigen is to zsh, what [Vundle][] is to vim. | |
6 | + | |
7 | +# Quick Usage | |
8 | + | |
9 | +The usage should be very familiar to you if you use Vundle. A typical `.zshrc` | |
10 | +might look like this | |
11 | + | |
12 | + source ~/labs/antigen/antigen.zsh | |
13 | + | |
14 | + # Load the oh-my-zsh's library. | |
15 | + bundle-lib | |
16 | + | |
17 | + # Bundles from the default repo (robbyrussell's oh-my-zsh). | |
18 | + bundle --loc=plugins/git | |
19 | + bundle --loc=plugins/heroku | |
20 | + bundle --loc=plugins/pip | |
21 | + bundle --loc=plugins/lein | |
22 | + bundle --loc=plugins/command-not-found | |
23 | + | |
24 | + # Syntax highlighting bundle. | |
25 | + bundle zsh-users/zsh-syntax-highlighting | |
26 | + | |
27 | + # Load the theme. | |
28 | + bundle-theme robbyrussell | |
29 | + | |
30 | +Open your zsh with this zshrc and run `bundle-install` and you should be ready | |
31 | +to roll. The complete syntax for the `bundle` command is discussed further down | |
32 | +on this page. | |
33 | + | |
34 | +# Motivation | |
35 | + | |
36 | +If you use zsh and [oh-my-zsh][], you know that having many different plugins | |
37 | +that are developed by many different authors in a single (sub)repo is not a very | |
38 | +easy to maintain. There are some really fantastic plugins and utilities in | |
39 | +oh-my-zsh, but having them all in a single repo doesn't really scale well. And I | |
40 | +admire robbyrussell's efforts for reviewing and mergine the gigantic number of | |
41 | +pull requests the project gets. It needs a better way of plugin management. | |
42 | + | |
43 | +This was discussed on [a][1] [few][2] [issues][3], but it doesn't look like | |
44 | +there was any progress made. So, I'm trying to start this off with antigen, | |
45 | +hoping to better this situation. Please note that I'm by no means a zsh or any | |
46 | +shell script expert (far from it). | |
47 | + | |
48 | +[1]: https://github.com/robbyrussell/oh-my-zsh/issues/465 | |
49 | +[2]: https://github.com/robbyrussell/oh-my-zsh/issues/377 | |
50 | +[3]: https://github.com/robbyrussell/oh-my-zsh/issues/1014 | |
51 | + | |
52 | +Inspired by vundle, antigen can pull oh-my-zsh style plugins from various github | |
53 | +repositories. You are not limited to use plugins from the oh-my-zsh repository | |
54 | +only and you don't need to maintain your own fork and pull from upstream every | |
55 | +now and then. | |
56 | + | |
57 | +Antigen also lets you switch the prompt theme with one command, just like that | |
58 | + | |
59 | + bundle-theme candy | |
60 | + | |
61 | +and your prompt is changed, just for this session of course. | |
62 | + | |
63 | +# Commands | |
64 | + | |
65 | +## bundle | |
66 | + | |
67 | +This is the command you use to tell antigen that you want to use a plugin. The | |
68 | +simplest usage follows the following syntax | |
69 | + | |
70 | + bundle [<url> [<loc> [<name>]]] | |
71 | + | |
72 | +where `<url>` is the repository url and it defaults to [robbyrussell's | |
73 | +oh-my-zsh][oh-my-zsh] repo. `<loc>` is the path under this repository which has | |
74 | +the zsh plugin. This is typically the directory that contains a `*.plugin.zsh` | |
75 | +file, but it could contain a completion file too. `<loc>` defaults to `/`, which | |
76 | +indicates the repository itself is a plugin. `<name>` is the name with which | |
77 | +this plugin will be identified. This plugin will be installed in the bundles | |
78 | +directory with this name used as the directory name. If the `<name>` is not | |
79 | +given, antigen tries to make an intelligent guess based on the other given | |
80 | +arguments. | |
81 | + | |
82 | +An example invocation would be | |
83 | + | |
84 | + bundle https://github.com/robbyrussell/oh-my-zsh.git plugins/ant | |
85 | + | |
86 | +This would install the ant plugin (with `<name>` as `ant`) from robbyrussell's | |
87 | +oh-my-zsh repo. Of course, github url's can be shortened. | |
88 | + | |
89 | + bundle robbyrussell/oh-my-zsh plugins/ant | |
90 | + | |
91 | +And since this is the default, even that isn't necessary. But we can't specify | |
92 | +the `loc` without giving the first argument. | |
93 | + | |
94 | +For this and a few other reasons, `bundle` also supports a simple keyword | |
95 | +argument syntax, using which we can rewrite the above as | |
96 | + | |
97 | + bundle --loc=plugins/ant | |
98 | + | |
99 | +Note that you can mix and match positional and keyword arguments. But you can't | |
100 | +have positional arguments after starting keyword arguments. | |
101 | + | |
102 | + bundle robbyrussell/oh-my-zsh --loc=plugins/ant | |
103 | + | |
104 | +And keyword arguments don't care about the order in which the arguments are | |
105 | +specified. The following is perfectly valid. | |
106 | + | |
107 | + bundle --loc=plugins/ant --url=robbyrussell/oh-my-zsh --name=ant | |
108 | + | |
109 | +In addition to the above discussed arguments, `bundle` also takes the following | |
110 | +arguments but only as keyword arguments. | |
111 | + | |
112 | +`load` — Set to `true` (default) or `false`. If this is set to `false`, | |
113 | +the plugin specified is only recorded, may be for future use. It is not loaded | |
114 | +into the environment. But with `true`, the plugin is immediately sourced and | |
115 | +is ready to use, which is the default behavior. | |
116 | + | |
117 | +## bundle-install | |
118 | + | |
119 | +This is something you might not want to put in your `.zshrc`. Instead, run it to | |
120 | +install all the recorded bundles, using the `bundle` command. It has the | |
121 | +following syntax. | |
122 | + | |
123 | + bundle-install [--update] | |
124 | + | |
125 | +The optional `--update` argument can be given to update all your plugins from | |
126 | +the server. By default, `bundle-install` does *not* check for updates on the | |
127 | +plugins. It just installs them, if there is a cached copy available and if its | |
128 | +not already installed. | |
129 | + | |
130 | +## bundle-install! | |
131 | + | |
132 | +This is the same as running | |
133 | + | |
134 | + bundle-install --update | |
135 | + | |
136 | +That is, it installs the recorded plugins, and updates them to the latest | |
137 | +available versions. | |
138 | + | |
139 | +## bundle-cleanup | |
140 | + | |
141 | +Used to clean up unused bundles. It takes no arguments. When this is run, it | |
142 | +lists out the plugins that are installed but are not recorded with a `bundle` | |
143 | +command, and will ask you if you want to delete them. | |
144 | + | |
145 | +This command currently cannot run in a non-interactive mode. So it won't be very | |
146 | +pleasant to use it in your `.zshrc`. | |
147 | + | |
148 | +## bundle-lib | |
149 | + | |
150 | +This currently exists only to make is possible to use oh-my-zsh's library, since | |
151 | +its organisation is different from that of plugins. If you want to load | |
152 | +oh-my-zsh's library, which you very likely do, put a | |
153 | + | |
154 | + bundle-lib | |
155 | + | |
156 | +in your `.zshrc`, before any `bundle` declarations. It takes no arguments. | |
157 | + | |
158 | +## bundle-theme | |
159 | + | |
160 | +Used for switching the prompt theme. Invoke it with the name of the theme you | |
161 | +want to use. | |
162 | + | |
163 | + bundle-theme fox | |
164 | + | |
165 | +Currently, themes are pulled from robbyrussell's oh-my-zsh repo, but it will | |
166 | +support getting themes from other repos as well in the future. | |
167 | + | |
168 | +# Configuration | |
169 | + | |
170 | +The following environment variables can be set to customize the behavior of | |
171 | +antigen. Make sure you set them *before* sourceing `antigen.zsh`. | |
172 | + | |
173 | +`ANTIGEN_DEFAULT_REPO_URL` — This is the default repository url that is | |
174 | +used for `bundle` commands. The default value is robbyrussell's oh-my-zsh repo, | |
175 | +but you can set this to the fork url of your own fork. | |
176 | + | |
177 | +`ANTIGEN_REPO_CACHE` — This is where the cloned repositories are cached. | |
178 | +Defaults to `$HOME/.antigen/cache` | |
179 | + | |
180 | +`ANTIGEN_BUNDLE_DIR` — This is where the plugins are installed and sourced | |
181 | +from. Defaults to `$HOME/.antigen/bundles` | |
182 | + | |
183 | +# Meta | |
184 | + | |
185 | +Please note that I built this over night and should be considered very alpha. | |
186 | +However, I am using it full time now on my work machine. | |
187 | + | |
188 | +Project is licensed with the MIT License. To contribute, just fork, make changes | |
189 | +and send a pull request. If its a rather long/complicated change, please | |
190 | +consider opening an [issue][] first so we can discuss it out. | |
191 | + | |
192 | +[Vundle]: https://github.com/gmarik/vundle | |
193 | +[oh-my-zsh]: https://github.com/robbyrussell/oh-my-zsh | |
194 | +[issue]: https://github.com/sharat87/antigen/issues |