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">
|
2020-01-02 13:05:53 -05:00
|
|
|
<img width="650" src="https://zimfw.github.io/images/zim_banner.png">
|
2015-12-17 07:44:19 -05:00
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
|
2020-01-13 12:24:43 -05:00
|
|
|
Zsh IMproved FrameWork
|
|
|
|
======================
|
|
|
|
|
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:
|
|
|
|
|
2020-01-02 13:05:53 -05:00
|
|
|
curl -fsSL https://raw.githubusercontent.com/zimfw/install/master/install.zsh | zsh
|
2019-01-22 19:40:43 -05:00
|
|
|
|
|
|
|
* With wget:
|
|
|
|
|
2020-01-02 13:05:53 -05:00
|
|
|
wget -nv -O - https://raw.githubusercontent.com/zimfw/install/master/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
|
2020-01-15 12:35:30 -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.
See #33, #138, #262, #281, #324.
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.
2019-01-07 18:25:34 -05:00
|
|
|
|
2019-12-04 07:22:17 -05:00
|
|
|
### Manual installation
|
|
|
|
|
2019-12-07 21:17:40 -05:00
|
|
|
1. Start a Zsh shell
|
2019-12-04 07:22:17 -05:00
|
|
|
|
2019-12-07 21:17:40 -05:00
|
|
|
zsh
|
2019-12-04 07:22:17 -05:00
|
|
|
|
2019-12-07 21:17:40 -05:00
|
|
|
2. Set Zsh as the default shell:
|
2019-12-04 07:22:17 -05:00
|
|
|
|
2019-12-07 21:17:40 -05:00
|
|
|
chsh -s =zsh
|
2019-12-04 07:22:17 -05:00
|
|
|
|
2020-01-11 17:17:09 -05:00
|
|
|
3. Copy https://github.com/zimfw/zimfw/releases/latest/download/zimfw.zsh to
|
2019-12-07 21:17:40 -05:00
|
|
|
`~/.zim/zimfw.zsh`.
|
2019-12-04 07:22:17 -05:00
|
|
|
|
2019-12-07 21:17:40 -05:00
|
|
|
4. Add the lines in the following templates to the respective dot files:
|
2020-01-02 13:05:53 -05:00
|
|
|
* [~/.zshenv](https://github.com/zimfw/install/blob/master/src/templates/zshenv)
|
|
|
|
* [~/.zshrc](https://github.com/zimfw/install/blob/master/src/templates/zshrc)
|
|
|
|
* [~/.zlogin](https://github.com/zimfw/install/blob/master/src/templates/zlogin)
|
|
|
|
* [~/.zimrc](https://github.com/zimfw/install/blob/master/src/templates/zimrc)
|
2019-12-04 07:22:17 -05:00
|
|
|
|
2020-01-02 12:23:32 -05:00
|
|
|
5. Install the modules defined in `~/.zimrc` and build the initialization scripts:
|
2019-12-04 07:22:17 -05:00
|
|
|
|
2019-12-07 21:17:40 -05:00
|
|
|
source ~/.zim/zimfw.zsh install
|
2019-12-04 07:22:17 -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
|
|
|
|
2020-05-02 19:47:38 -04:00
|
|
|
<pre>
|
|
|
|
Usage: <strong>zmodule</strong> <url> [<strong>-n</strong>|<strong>--name</strong> <module_name>] [options]
|
2016-09-05 18:36:44 -04:00
|
|
|
|
2020-05-02 19:47:38 -04:00
|
|
|
Add <strong>zmodule</strong> calls to your <strong>~/.zimrc</strong> file to define the modules to be initialized. The modules are
|
|
|
|
initialized in the same order they are defined.
|
2016-09-05 18:36:44 -04:00
|
|
|
|
2020-05-02 19:47:38 -04:00
|
|
|
<url> Required repository URL or path. The following formats are
|
|
|
|
equivalent: <strong>name</strong>, <strong>zimfw/name</strong>, <strong>https://github.com/zimfw/name.git</strong>.
|
|
|
|
<strong>-n</strong>|<strong>--name</strong> <module_name> Set a custom module name. Default: the last component in the <url>.
|
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.
See #33, #138, #262, #281, #324.
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.
2019-01-07 18:25:34 -05:00
|
|
|
|
2020-01-15 12:35:30 -05:00
|
|
|
Repository options:
|
2020-05-02 19:47:38 -04:00
|
|
|
<strong>-b</strong>|<strong>--branch</strong> <branch_name> Use specified branch when installing and updating the module.
|
|
|
|
Overrides the tag option. Default: <strong>master</strong>.
|
|
|
|
<strong>-t</strong>|<strong>--tag</strong> <tag_name> Use specified tag when installing and updating the module.
|
|
|
|
Overrides the branch option.
|
|
|
|
<strong>-z</strong>|<strong>--frozen</strong> 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.
See #33, #138, #262, #281, #324.
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.
2019-01-07 18:25:34 -05:00
|
|
|
|
2020-01-15 12:35:30 -05:00
|
|
|
Initialization options:
|
2020-05-02 19:47:38 -04:00
|
|
|
<strong>-f</strong>|<strong>--fpath</strong> <path> Add specified path to fpath. The path is relative to the module
|
|
|
|
root directory. Default: <strong>functions</strong>, if the subdirectory exists.
|
|
|
|
<strong>-a</strong>|<strong>--autoload</strong> <function_name> Autoload specified function. Default: all valid names inside the
|
|
|
|
module's specified fpath paths.
|
|
|
|
<strong>-s</strong>|<strong>--source</strong> <file_path> Source specified file. The file path is relative to the module root
|
|
|
|
directory. Default: the file with largest size matching
|
|
|
|
<strong>{init.zsh,module_name.{zsh,plugin.zsh,zsh-theme,sh}}</strong>, if any exist.
|
|
|
|
<strong>-d</strong>|<strong>--disabled</strong> Don't initialize or uninstall the module.
|
|
|
|
</pre>
|
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.
See #33, #138, #262, #281, #324.
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.
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
|
|
|
|
2020-01-15 12:35:30 -05:00
|
|
|
Added new modules to `~/.zimrc`? Run `zimfw install`.
|
2016-09-05 18:36:44 -04:00
|
|
|
|
2020-01-15 12:35:30 -05:00
|
|
|
Removed modules from `~/.zimrc`? Run `zimfw uninstall`.
|
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.
See #33, #138, #262, #281, #324.
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.
2019-01-07 18:25:34 -05:00
|
|
|
|
2020-01-15 12:35:30 -05:00
|
|
|
Want to update your modules to their latest revisions? Run `zimfw update`.
|
2019-12-07 21:17:40 -05:00
|
|
|
|
2020-01-15 12:35:30 -05:00
|
|
|
Want to upgrade `zimfw` to its latest version? Run `zimfw upgrade`.
|
2019-12-07 21:17:40 -05:00
|
|
|
|
2020-01-15 12:35:30 -05:00
|
|
|
For more information about the `zimfw` tool, run `zimfw help`.
|
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.
See #33, #138, #262, #281, #324.
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.
2019-01-07 18:25:34 -05:00
|
|
|
|
2020-01-15 12:35:30 -05:00
|
|
|
Settings
|
|
|
|
--------
|
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.
See #33, #138, #262, #281, #324.
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.
2019-01-07 18:25:34 -05:00
|
|
|
|
2020-01-15 12:35:30 -05:00
|
|
|
By default, every 30 days `zimfw` will check if it has a new version available.
|
|
|
|
This can be disabled with:
|
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.
See #33, #138, #262, #281, #324.
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.
2019-01-07 18:25:34 -05:00
|
|
|
|
2020-01-15 12:35:30 -05:00
|
|
|
zstyle ':zim' disable-version-check yes
|
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.
See #33, #138, #262, #281, #324.
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.
2019-01-07 18:25:34 -05:00
|
|
|
|
|
|
|
Uninstalling
|
|
|
|
------------
|
|
|
|
|
|
|
|
The best way to remove Zim is to manually delete `~/.zim`, `~/.zimrc`, and
|
2019-12-14 22:41:19 -05:00
|
|
|
remove the initialization lines from your `~/.zshenv`, `~/.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
|