2018-12-12 10:40:23 -05:00
Zsh IMproved FrameWork
======================
2015-12-15 00:12:17 -05:00
2015-12-17 07:44:19 -05:00
< div align = "center" >
2018-01-01 07:58:41 -05:00
< a href = "https://github.com/zimfw/zimfw" >
2019-12-01 16:00:47 -05:00
< img width = 650px src = "https://zimfw.github.io/images/zim_banner.png" >
2015-12-17 07:44:19 -05:00
< / a >
< / div >
2015-12-15 00:12:17 -05:00
What is Zim?
------------
2019-01-22 19:40:43 -05:00
Zim is a Zsh configuration framework with [blazing speed] and modular extensions.
2015-12-17 08:06:26 -05:00
2015-12-18 07:40:11 -05:00
Zim is very easy to customize, and comes with a rich set of modules and features without compromising on speed or functionality!
2015-12-15 00:12:17 -05:00
What does Zim offer?
-----------------
2019-01-22 19:40:43 -05:00
If you're here, it means you want to see the cool shit Zim can do. Check out the [available modules]!
2015-12-16 18:00:14 -05:00
Below is a brief showcase of Zim's features.
2015-12-15 00:12:17 -05:00
2015-12-18 13:41:02 -05:00
### Speed
2019-01-22 19:40:43 -05:00
For a speed comparison between Zim and other frameworks, see [this wiki entry][blazing speed].
2015-12-18 13:34:24 -05:00
2015-12-18 13:41:02 -05:00
### Themes
2015-12-18 11:44:57 -05:00
2019-01-22 19:40:43 -05:00
To preview some of the available themes, check the [themes wiki page].
2015-12-18 11:44:57 -05:00
2018-12-12 10:40:23 -05:00
### Fish-shell history navigation
2019-01-22 19:40:43 -05:00
![history-substring-search]
2015-12-15 00:12:17 -05:00
2018-12-12 10:40:23 -05:00
### Syntax highlighting
2019-01-22 19:40:43 -05:00
![syntax-highlighting]
2015-12-15 00:12:17 -05:00
2015-12-18 13:41:02 -05:00
### And much more!
2015-12-15 00:12:17 -05:00
Zim has many modules! Enable as many or as few as you'd like.
Installation
------------
2019-01-10 19:59:04 -05:00
Installing Zim is easy:
2015-12-15 00:12:17 -05:00
2019-01-22 19:40:43 -05:00
* With curl:
curl -fsSL https://raw.githubusercontent.com/zimfw/install/develop/install.zsh | zsh
* With wget:
wget -nv -O - https://raw.githubusercontent.com/zimfw/install/develop/install.zsh | zsh
2015-12-15 00:12:17 -05:00
2019-01-10 19:59:04 -05:00
Open a new terminal and you're done! Enjoy your Zsh IMproved! Take some time to
2019-01-22 19:40:43 -05:00
read about the [available modules] and tweak your `.zshrc` file.
2015-12-15 00:12:17 -05:00
2019-01-10 19:59:04 -05:00
If you have a different shell framework installed (like oh-my-zsh or prezto),
*uninstall those first to prevent conflicts*.
Add a plugin mechanism \o/
This is a major change, where Zsh modules/plugins are not git submodules
in the Zim repo anymore, but customized and installed separately as
individual repositories. The discussion about this started more than 2
years ago in #88. Closes #299.
This will allow contributors' modules to live in their own repositories.
Closes #33, closes #138, closes #262, closes #277, closes #281.
Some discussion topics that I think are worth considering before merging
this:
- [ ] Reduce the Zim "core" to a single file?
- [ ] Simplify installation? With an installation script? (See #182)
- [ ] Put the configuration into `.zshrc` instead of a separate `.zimrc`?
(See #288)
- [ ] Rerun the Eriner/zsh-framework-benchmark?
I suggest we create individual GitHub issues/PRs to start the separate
discussions.
The current code has what, up to this point, I considered to be the best
balance between simplicity, execution speed and number of files.
One measured decision was to make the initialization of modules depend
only on the `':zim' modules` style, keeping it as fast as possible.
The `':zim:module' module` style is used to install, update and clean
the modules, all operations that happen after the user got his
as-blazing-fast-possible shell prompt.
Even though I didn't care much about making install or update fast,
`xargs` has a nice feature of allowing commands to be executed in
parallel with `-P`. I took advantage of that.
I've also worked on making the `zimfw` utility give the user some nice
(while still minimalistic) output. Also I'm suggesting this as the new
name for the `zmanage` tool, since `zimfw` does not shadow the `zim`
wiki tool.
I strongly recommend you install this from scratch in a separate
directory, instead of checking out `develop` in your current Zim
installation repo.
2019-01-07 18:25:34 -05:00
2019-12-01 16:00:47 -05:00
Usage
-----
2016-09-05 18:36:44 -04:00
2019-12-01 16:00:47 -05:00
### zmodule
2016-09-05 18:36:44 -04:00
2019-12-01 16:00:47 -05:00
Add `zmodule` calls to your `.zimrc` file to define the modules to be loaded.
The modules are loaded in the same order they are defined. Add:
2016-09-05 18:36:44 -04:00
2019-12-01 16:00:47 -05:00
zmodule < url > [-n|--name < module_name > ] [options]
2016-09-05 18:36:44 -04:00
2019-12-01 16:00:47 -05:00
where < url> is the required repository URL or path. The following formats
are equivalent: *name* , zimfw/*name*, https://< em ></ em > github.com/zimfw/< em > name</ em > .git
2016-09-05 18:36:44 -04:00
2019-12-01 16:00:47 -05:00
By default, the module name is the last component in the < url> . Use the
`-n` |`--name` < module_ name> option to set a custom module name.
Add a plugin mechanism \o/
This is a major change, where Zsh modules/plugins are not git submodules
in the Zim repo anymore, but customized and installed separately as
individual repositories. The discussion about this started more than 2
years ago in #88. Closes #299.
This will allow contributors' modules to live in their own repositories.
Closes #33, closes #138, closes #262, closes #277, closes #281.
Some discussion topics that I think are worth considering before merging
this:
- [ ] Reduce the Zim "core" to a single file?
- [ ] Simplify installation? With an installation script? (See #182)
- [ ] Put the configuration into `.zshrc` instead of a separate `.zimrc`?
(See #288)
- [ ] Rerun the Eriner/zsh-framework-benchmark?
I suggest we create individual GitHub issues/PRs to start the separate
discussions.
The current code has what, up to this point, I considered to be the best
balance between simplicity, execution speed and number of files.
One measured decision was to make the initialization of modules depend
only on the `':zim' modules` style, keeping it as fast as possible.
The `':zim:module' module` style is used to install, update and clean
the modules, all operations that happen after the user got his
as-blazing-fast-possible shell prompt.
Even though I didn't care much about making install or update fast,
`xargs` has a nice feature of allowing commands to be executed in
parallel with `-P`. I took advantage of that.
I've also worked on making the `zimfw` utility give the user some nice
(while still minimalistic) output. Also I'm suggesting this as the new
name for the `zmanage` tool, since `zimfw` does not shadow the `zim`
wiki tool.
I strongly recommend you install this from scratch in a separate
directory, instead of checking out `develop` in your current Zim
installation repo.
2019-01-07 18:25:34 -05:00
2019-12-01 16:00:47 -05:00
#### Repository options
Add a plugin mechanism \o/
This is a major change, where Zsh modules/plugins are not git submodules
in the Zim repo anymore, but customized and installed separately as
individual repositories. The discussion about this started more than 2
years ago in #88. Closes #299.
This will allow contributors' modules to live in their own repositories.
Closes #33, closes #138, closes #262, closes #277, closes #281.
Some discussion topics that I think are worth considering before merging
this:
- [ ] Reduce the Zim "core" to a single file?
- [ ] Simplify installation? With an installation script? (See #182)
- [ ] Put the configuration into `.zshrc` instead of a separate `.zimrc`?
(See #288)
- [ ] Rerun the Eriner/zsh-framework-benchmark?
I suggest we create individual GitHub issues/PRs to start the separate
discussions.
The current code has what, up to this point, I considered to be the best
balance between simplicity, execution speed and number of files.
One measured decision was to make the initialization of modules depend
only on the `':zim' modules` style, keeping it as fast as possible.
The `':zim:module' module` style is used to install, update and clean
the modules, all operations that happen after the user got his
as-blazing-fast-possible shell prompt.
Even though I didn't care much about making install or update fast,
`xargs` has a nice feature of allowing commands to be executed in
parallel with `-P`. I took advantage of that.
I've also worked on making the `zimfw` utility give the user some nice
(while still minimalistic) output. Also I'm suggesting this as the new
name for the `zmanage` tool, since `zimfw` does not shadow the `zim`
wiki tool.
I strongly recommend you install this from scratch in a separate
directory, instead of checking out `develop` in your current Zim
installation repo.
2019-01-07 18:25:34 -05:00
2019-12-01 16:00:47 -05:00
* `-b` | `--branch` < branch_ name> : Use specified branch when installing and updating the module. Overrides the tag option. Default: `master`
* `-t` | `--tag` < tag_ name> : Use specified tag when installing and updating the module. Overrides the branch option.
* `-z` | `--frozen`: Don't install or update the module
Add a plugin mechanism \o/
This is a major change, where Zsh modules/plugins are not git submodules
in the Zim repo anymore, but customized and installed separately as
individual repositories. The discussion about this started more than 2
years ago in #88. Closes #299.
This will allow contributors' modules to live in their own repositories.
Closes #33, closes #138, closes #262, closes #277, closes #281.
Some discussion topics that I think are worth considering before merging
this:
- [ ] Reduce the Zim "core" to a single file?
- [ ] Simplify installation? With an installation script? (See #182)
- [ ] Put the configuration into `.zshrc` instead of a separate `.zimrc`?
(See #288)
- [ ] Rerun the Eriner/zsh-framework-benchmark?
I suggest we create individual GitHub issues/PRs to start the separate
discussions.
The current code has what, up to this point, I considered to be the best
balance between simplicity, execution speed and number of files.
One measured decision was to make the initialization of modules depend
only on the `':zim' modules` style, keeping it as fast as possible.
The `':zim:module' module` style is used to install, update and clean
the modules, all operations that happen after the user got his
as-blazing-fast-possible shell prompt.
Even though I didn't care much about making install or update fast,
`xargs` has a nice feature of allowing commands to be executed in
parallel with `-P`. I took advantage of that.
I've also worked on making the `zimfw` utility give the user some nice
(while still minimalistic) output. Also I'm suggesting this as the new
name for the `zmanage` tool, since `zimfw` does not shadow the `zim`
wiki tool.
I strongly recommend you install this from scratch in a separate
directory, instead of checking out `develop` in your current Zim
installation repo.
2019-01-07 18:25:34 -05:00
2019-12-01 16:00:47 -05:00
#### Startup options
Add a plugin mechanism \o/
This is a major change, where Zsh modules/plugins are not git submodules
in the Zim repo anymore, but customized and installed separately as
individual repositories. The discussion about this started more than 2
years ago in #88. Closes #299.
This will allow contributors' modules to live in their own repositories.
Closes #33, closes #138, closes #262, closes #277, closes #281.
Some discussion topics that I think are worth considering before merging
this:
- [ ] Reduce the Zim "core" to a single file?
- [ ] Simplify installation? With an installation script? (See #182)
- [ ] Put the configuration into `.zshrc` instead of a separate `.zimrc`?
(See #288)
- [ ] Rerun the Eriner/zsh-framework-benchmark?
I suggest we create individual GitHub issues/PRs to start the separate
discussions.
The current code has what, up to this point, I considered to be the best
balance between simplicity, execution speed and number of files.
One measured decision was to make the initialization of modules depend
only on the `':zim' modules` style, keeping it as fast as possible.
The `':zim:module' module` style is used to install, update and clean
the modules, all operations that happen after the user got his
as-blazing-fast-possible shell prompt.
Even though I didn't care much about making install or update fast,
`xargs` has a nice feature of allowing commands to be executed in
parallel with `-P`. I took advantage of that.
I've also worked on making the `zimfw` utility give the user some nice
(while still minimalistic) output. Also I'm suggesting this as the new
name for the `zmanage` tool, since `zimfw` does not shadow the `zim`
wiki tool.
I strongly recommend you install this from scratch in a separate
directory, instead of checking out `develop` in your current Zim
installation repo.
2019-01-07 18:25:34 -05:00
2019-12-01 16:00:47 -05:00
* `-f` | `--fpath` < path> : Add specified path to `fpath` . The path is relative to the module root directory. Default: `functions` , if the subdirectory exists
* `-a` | `--autoload` < function_ name> : Autoload specified function. Default: all valid names inside all the module specified `fpath` paths
* `-s` | `--source` < file_ path> : Source specified file. The file path is relative to the module root directory. Default: the file with largest size matching `{init.zsh|module_name.{zsh|plugin.zsh|zsh-theme|sh}}` , if any exists
* `-d` | `--disabled`: Don't use or clean the module
Add a plugin mechanism \o/
This is a major change, where Zsh modules/plugins are not git submodules
in the Zim repo anymore, but customized and installed separately as
individual repositories. The discussion about this started more than 2
years ago in #88. Closes #299.
This will allow contributors' modules to live in their own repositories.
Closes #33, closes #138, closes #262, closes #277, closes #281.
Some discussion topics that I think are worth considering before merging
this:
- [ ] Reduce the Zim "core" to a single file?
- [ ] Simplify installation? With an installation script? (See #182)
- [ ] Put the configuration into `.zshrc` instead of a separate `.zimrc`?
(See #288)
- [ ] Rerun the Eriner/zsh-framework-benchmark?
I suggest we create individual GitHub issues/PRs to start the separate
discussions.
The current code has what, up to this point, I considered to be the best
balance between simplicity, execution speed and number of files.
One measured decision was to make the initialization of modules depend
only on the `':zim' modules` style, keeping it as fast as possible.
The `':zim:module' module` style is used to install, update and clean
the modules, all operations that happen after the user got his
as-blazing-fast-possible shell prompt.
Even though I didn't care much about making install or update fast,
`xargs` has a nice feature of allowing commands to be executed in
parallel with `-P`. I took advantage of that.
I've also worked on making the `zimfw` utility give the user some nice
(while still minimalistic) output. Also I'm suggesting this as the new
name for the `zmanage` tool, since `zimfw` does not shadow the `zim`
wiki tool.
I strongly recommend you install this from scratch in a separate
directory, instead of checking out `develop` in your current Zim
installation repo.
2019-01-07 18:25:34 -05:00
2019-12-01 16:00:47 -05:00
### zimfw
2016-09-05 18:36:44 -04:00
2019-12-01 16:00:47 -05:00
To install new defined modules, run:
2016-09-05 18:36:44 -04:00
2019-12-01 16:00:47 -05:00
zimfw install
Add a plugin mechanism \o/
This is a major change, where Zsh modules/plugins are not git submodules
in the Zim repo anymore, but customized and installed separately as
individual repositories. The discussion about this started more than 2
years ago in #88. Closes #299.
This will allow contributors' modules to live in their own repositories.
Closes #33, closes #138, closes #262, closes #277, closes #281.
Some discussion topics that I think are worth considering before merging
this:
- [ ] Reduce the Zim "core" to a single file?
- [ ] Simplify installation? With an installation script? (See #182)
- [ ] Put the configuration into `.zshrc` instead of a separate `.zimrc`?
(See #288)
- [ ] Rerun the Eriner/zsh-framework-benchmark?
I suggest we create individual GitHub issues/PRs to start the separate
discussions.
The current code has what, up to this point, I considered to be the best
balance between simplicity, execution speed and number of files.
One measured decision was to make the initialization of modules depend
only on the `':zim' modules` style, keeping it as fast as possible.
The `':zim:module' module` style is used to install, update and clean
the modules, all operations that happen after the user got his
as-blazing-fast-possible shell prompt.
Even though I didn't care much about making install or update fast,
`xargs` has a nice feature of allowing commands to be executed in
parallel with `-P`. I took advantage of that.
I've also worked on making the `zimfw` utility give the user some nice
(while still minimalistic) output. Also I'm suggesting this as the new
name for the `zmanage` tool, since `zimfw` does not shadow the `zim`
wiki tool.
I strongly recommend you install this from scratch in a separate
directory, instead of checking out `develop` in your current Zim
installation repo.
2019-01-07 18:25:34 -05:00
To update your modules, run:
zimfw update
To upgrade Zim, run:
zimfw upgrade
For more information about the `zimfw` tool, run `zimfw` with no parameters.
Uninstalling
------------
The best way to remove Zim is to manually delete `~/.zim` , `~/.zimrc` , and
remove the initialization lines from your `~/.zshrc` and `~/.zlogin` .
2016-09-05 18:36:44 -04:00
2019-12-01 16:00:47 -05:00
[history-substring-search]: https://zimfw.github.io/images/zim_history-substring-search.gif
[syntax-highlighting]: https://zimfw.github.io/images/zim_syntax-highlighting.gif
2019-01-22 19:40:43 -05:00
[blazing speed]: https://github.com/zimfw/zimfw/wiki/Speed
[available modules]: https://github.com/zimfw/zimfw/wiki/Modules
[themes wiki page]: https://github.com/zimfw/zimfw/wiki/Themes