1
0
Fork 0
mirror of synced 2024-12-03 20:45:34 -05:00

Compare commits

...

4 commits

Author SHA1 Message Date
Dawn Magnet
8c3bec1bbe
Merge 0f2d2f06c1 into f51b548e9e 2024-11-27 19:24:07 -05:00
Eric Nielsen
f51b548e9e
Also list not installed modules with list action
when not in verbose mode. Still fail in this case in verbose mode
because zmodule needs to eagerly inspect the module files.
2024-11-27 19:04:09 -05:00
Eric Nielsen
e9279aaa53
Use just one flag when zmodule should be eager
and then assume that the module is already installed. Was using bitwise
flags before, which was unnecessarily complex.
2024-11-27 18:42:58 -05:00
DawnManget
0f2d2f06c1 add chinese mirrors 2024-06-27 17:21:50 +08:00
10 changed files with 225 additions and 28 deletions

View file

@ -7,7 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
_No unreleased changes._
### Added
- Also list not installed modules with `list` action, when not in verbose mode.
## [1.16.0] - 2024-11-25

View file

@ -14,6 +14,8 @@
</a>
</div>
([简体中文-镜像](README_CN.md))
What is Zim?
------------
Zim is a Zsh configuration framework that bundles a [plugin manager](#usage),

193
README_CN.md Normal file
View file

@ -0,0 +1,193 @@
<p align="center">
<a href="https://github.com/zimfw/zimfw/releases"><img src="https://img.shields.io/github/v/release/zimfw/zimfw"></a>
<a href="https://github.com/zimfw/zimfw/issues"><img src="https://img.shields.io/github/issues/zimfw/zimfw.svg"></a>
<a href="https://github.com/zimfw/zimfw/network/members"><img src="https://img.shields.io/github/forks/zimfw/zimfw.svg"></a>
<a href="https://github.com/zimfw/zimfw/stargazers"><img src="https://img.shields.io/github/stars/zimfw/zimfw.svg"></a>
<a href="https://github.com/zimfw/zimfw/releases"><img src="https://img.shields.io/github/downloads/zimfw/zimfw/total.svg"></a>
<a href="https://github.com/zimfw/zimfw/discussions"><img src="https://img.shields.io/badge/forum-online-green.svg"></a>
<a href="https://github.com/zimfw/zimfw/blob/master/LICENSE"><img alt="GitHub" src="https://img.shields.io/github/license/zimfw/zimfw"></a>
</p>
<div align="center">
<a href="https://github.com/zimfw/zimfw">
<img width="600" src="https://zimfw.github.io/images/zimfw-banner@2.jpg">
</a>
</div>
# Zim(中国镜像安装版本)
什么是Zim
-----------
Zim是一个Zsh配置框架集成了[插件管理器](#usage)、有用的[模块]和多种[主题],同时不牺牲[速度]。
查看Zim与其他框架和插件管理器的比较
<a href="https://github.com/zimfw/zimfw/wiki/Speed">
<img src="https://zimfw.github.io/images/results.svg">
</a>
目录
-----
* [安装](#installation)
* [自动安装](#automatic-installation)
* [手动安装](#manual-installation)
* [设置 `~/.zshrc`](#set-up-zshrc)
* [创建 `~/.zimrc`](#create-zimrc)
* [使用](#usage)
* [`zmodule`](#zmodule)
* [`zimfw`](#zimfw)
* [设置](#settings)
* [卸载](#uninstalling)
安装
------------
安装Zim很简单。你可以选择下面的自动或手动方法
### 自动安装
这将为你安装预定义的模块集合和主题。
* 使用 `curl`
```zsh
curl -fsSL https://gitee.com/dawn_magnet/zimfw-install/raw/master/install.zsh | zsh
```
* 使用 `wget`
```zsh
wget -nv -O - https://gitee.com/dawn_magnet/zimfw-install/raw/master/install.zsh | zsh
```
重启你的终端你就完成了。享受你的Zsh改进版花些时间调整你的[`~/.zshrc`](#set-up-zshrc)文件,并检查你可以添加到[`~/.zimrc`](#create-zimrc)的可用[模块]和[主题]。
### 手动安装
1. 如果你还没有设置Zsh为默认shell请设置
```zsh
chsh -s $(which zsh)
```
2. [设置你的 `~/.zshrc` 文件](#set-up-zshrc)
3. [创建你的 `~/.zimrc` 文件](#create-zimrc)
4. 重启你的终端你就完成了。享受你的Zsh改进版
#### 设置 `~/.zshrc`
按照以下顺序将以下行添加到你的 `~/.zshrc` 文件:
1. 使用我们的 `degit` 工具默认安装模块:
```zsh
zstyle ':zim:zmodule' use 'degit'
```
这是可选的,仅当你没有安装 `git` 时需要(是的,即使没有 `git`zimfw也能工作
2. 设置zimfw插件管理器配置文件的位置
```zsh
ZIM_CONFIG_FILE=~/.config/zsh/zimrc
```
这是可选的。`ZIM_CONFIG_FILE` 的值可以是任何你的用户至少有读取权限的路径。默认情况下,如果未定义 `ZDOTDIR` 环境变量,则文件必须在 `~/.zimrc`。否则,它必须在 `${ZDOTDIR}/.zimrc`
3. 设置zimfw插件管理器将保存必要文件的目录
```zsh
ZIM_HOME=~/.zim
```
`ZIM_HOME` 的值可以是任何你的用户有写入权限的目录。你甚至可以将其设置为像 `${XDG_CACHE_HOME}/zim``~/.cache/zim` 这样的缓存目录。
4. 如果缺少则自动下载zimfw插件管理器
```zsh
# 如果缺少则下载zimfw插件管理器。
if [[ ! -e ${ZIM_HOME}/zimfw.zsh ]]; then
curl -fsSL --create-dirs -o ${ZIM_HOME}/zimfw.zsh \
https://gitee.com/dawn_magnet/zimfw/raw/master/zimfw.zsh
fi
```
或者如果你使用 `wget` 而不是 `curl`
```zsh
# 如果缺少则下载zimfw插件管理器。
if [[ ! -e ${ZIM_HOME}/zimfw.zsh ]]; then
mkdir -p ${ZIM_HOME} && wget -nv -O ${ZIM_HOME}/zimfw.zsh \
https://gitee.com/dawn_magnet/zimfw/raw/master/zimfw.zsh
fi
```
这是可选的。或者,你可以在任何你的用户有写入权限的地方下载 `zimfw.zsh` 脚本:只需将 `${ZIM_HOME}/zimfw.zsh` 的出现替换为你喜欢的路径,例如 `/usr/local/bin/zimfw.zsh`。如果你选择不包括这一步,你应该手动下载 `zimfw.zsh` 脚本一次并将其保存在首选路径。如果你选择不包括这一步,你应该手动下载 `zimfw.zsh` 脚本一次并将其保存在首选路径。
5. 自动安装缺失的模块并更新静态初始化脚本(如果缺少或过时):
```zsh
# 安装缺失的模块并更新 ${ZIM_HOME}/init.zsh如果缺少或过时。
if [[ ! ${ZIM_HOME}/init.zsh -nt ${ZIM_CONFIG_FILE:-${ZDOTDIR:-${HOME}}/.zimrc} ]]; then
source ${ZIM_HOME}/zimfw.zsh init -q
fi
```
这一步是可选的,但强烈推荐。如果你选择不包括它,你必须记住每次更新你的[`~/.zimrc`](#create-zimrc)文件时手动运行 `zimfw install`。如果你选择将 `zimfw.zsh` 放在前一步中提到的不同路径,请将 `${ZIM_HOME}/zimfw.zsh` 替换为所选择的路径。
6. 调用静态脚本,它将初始化你的模块:
```zsh
# 初始化模块。
source ${ZIM_HOME}/init.zsh
```
#### 创建 `~/.zimrc`
此文件配置zimfw插件管理器。出于简单起见在文档中被称为 `~/.zimrc`,但文件的实际位置由以下规则定义:
1. 你可以使用 `ZIM_CONFIG_FILE` 环境变量定义文件的完整路径和名称。例如:
```zsh
ZIM_CONFIG_FILE=~/.config/zsh/zimrc
```
2. 或者,如果你定义了 `ZDOTDIR` 环境变量,那么文件必须在 `${ZDOTDIR}/.zimrc`
3. 否则,它必须在 `~/.zimrc`,这是它的默认位置。
至于文件的内容,你可以从以下开始:
```zsh
zmodule zsh-users/zsh-syntax-highlighting
zmodule zsh-users/zsh-autosuggestions
```
如果你还想要我们的一个[提示主题]
```zsh
zmodule git-info
zmodule duration-info
zmodule asciiship
zmodule zsh-users/zsh-syntax-highlighting
zmodule zsh-users/zsh-autosuggestions
```
如果你想使用我们的[完成]模块,而不是直接使用 `compinit`
```zsh
zmodule git-info
zmodule duration-info
zmodule asciiship
zmodule zsh-users/zsh-completions --fpath src
zmodule completion
zmodule zsh-users/zsh-syntax-highlighting
zmodule zsh-users/zsh-autosuggestions
```
[完成]模块会为你调用 `compinit`。当你使用这个模块时,你应该从你的 `~/.zshrc` 中移除任何 `compinit` 调用。模块将按照它们定义的顺序进行初始化,并且[完成]必须在添加完成定义的所有模块之后初始化,所以它必须在[zsh-users/zsh-completions]之后。
查看下面的 [`zmodule` 使用](#zmodule)以获取有关如何使用它的更多示例,以定义你想使用的模块。
使用
-----
zimfw插件管理器在 `${ZIM_HOME}/modules` 安装你的模块,并在 `${ZIM_HOME}/init.zsh` 构建一个静态脚本,它将初始化它们。你的模块在 `~/.zimrc` 文件中定义。
`~/.zimrc` 文件必须包含 `zmodule` 调用以定义要初始化的模块。模块将按照它们定义的顺序进行初始化。
`~/.zimrc` 文件在Zsh启动期间不会被调用它仅用于配置zimfw插件管理器。
查看上面[`~/.zimrc` 文件的示例](#create-zimrc)。
### zmodule
以下是一些使用示例:
* 来自 [@zimfw] 组织的模块:`zmodule archive`
* 来自另一个GitHub组织的模块`zmodule StackExchange/blackbox`
* 带自定义URL的模块`zmodule https://gitlab.com/Spriithy/basher.git`
* 已经安装的绝对路径的模块:
`zmodule /usr/local/share/zsh-autosuggestions`
* 带自定义fpath的模块`zmodule zsh-users/zsh-completions --fpath src`
* 带自定义初始化文件并禁用git子模块的模块
`zmodule spaceship-prompt/spaceship-prompt --source spaceship.zsh

View file

@ -206,10 +206,8 @@ Per-call initialization options:
esac
shift
done
if (( _zflags & 1 )); then
_znames+=(${zname})
fi
if (( _zflags & 2 )); then
_znames+=(${zname})
if (( _zeager )); then
if [[ ! -e ${zroot_dir} ]]; then
print -u2 -R "${_zerror}${funcfiletrace[1]}:${_zbold}${zname}: ${zroot_dir}${_znormalred} not found${_znormal}"
_zfailed=1

View file

@ -1,13 +1,13 @@
_zimfw_source_zimrc() {
<%= render_all("src/functions/*.erb") %>
{
local -r _zflags=${1}
local -ri _zeager=${1}
local -i _zfailed=0
if ! source ${_zconfig} || (( _zfailed )); then
print -u2 -R "${_zred}Failed to source ${_zbold}${_zconfig}${_znormal}"
return 1
fi
if (( _zflags & 1 && ${#_znames} == 0 )); then
if (( ${#_znames} == 0 )); then
print -u2 -R "${_zred}No modules defined in ${_zbold}${_zconfig}${_znormal}"
return 1
fi

View file

@ -2,6 +2,7 @@ _zimfw_run_list() {
local -r zname=${1}
local -r zdir=${_zdirs[${zname}]}
print -nR "${_zbold}${zname}:${_znormal} ${zdir}"
if [[ ! -e ${zdir} ]] print -n ' (not installed)'
if [[ -z ${_zurls[${zname}]} ]] print -n ' (external)'
if (( ${_zfrozens[${zname}]} )) print -n ' (frozen)'
if (( ${_zdisabled_root_dirs[(I)${zdir}]} )) print -n ' (disabled)'

View file

@ -1,7 +1,7 @@
_zimfw_run_tool_action() {
local -i zmaxprocs=0
if [[ ${1} == reinstall ]] zmaxprocs=1
_zimfw_source_zimrc 1 || return 1
_zimfw_source_zimrc 0 || return 1
zargs -n 2 -P ${zmaxprocs} -- "${_znames[@]}" -- _zimfw_run_tool ${1}
return 0
}

View file

@ -72,7 +72,7 @@ Options:
local _zrestartmsg=' Restart your terminal for changes to take effect.'
case ${1} in
build)
_zimfw_source_zimrc 2 && _zimfw_build || return 1
_zimfw_source_zimrc 1 && _zimfw_build || return 1
(( _zprintlevel-- ))
_zimfw_compile
;;
@ -84,8 +84,9 @@ Options:
help) print -R ${zusage} ;;
info) _zimfw_info ;;
list)
_zimfw_source_zimrc 3 && zargs -n 1 -- "${_znames[@]}" -- _zimfw_run_list && \
_zimfw_list_unuseds ' (unused)'
_zimfw_source_zimrc $(( _zprintlevel > 1 )) && \
zargs -n 1 -- "${_znames[@]}" -- _zimfw_run_list && \
_zimfw_list_unuseds ' (unused)'
;;
check)
_zrestartmsg=
@ -98,13 +99,13 @@ Options:
_zimfw_run_tool_action install || return 1
(( _zprintlevel-- ))
_zimfw_print 'Done with install.' # Only printed in verbose mode
_zimfw_source_zimrc 2 && _zimfw_build && _zimfw_compile
_zimfw_source_zimrc 1 && _zimfw_build && _zimfw_compile
;;
install|update|reinstall)
_zimfw_run_tool_action ${1} || return 1
_zimfw_print -R "Done with ${1}.${_zrestartmsg}"
(( _zprintlevel-- ))
_zimfw_source_zimrc 2 && _zimfw_build && _zimfw_compile
_zimfw_source_zimrc 1 && _zimfw_build && _zimfw_compile
;;
uninstall) _zimfw_source_zimrc 0 && _zimfw_list_unuseds && _zimfw_uninstall ;;
check-version) _zimfw_check_version 1 ;;

View file

@ -4,7 +4,7 @@ class Zim
:bold, :normal, :red, :normalred, :yellow, :normalyellow, :clear_line, :ellipsis, :okay, :warn, :error
def initialize
@version = "1.16.0"
@version = "1.17.0-SNAPSHOT"
@home = "${ZDOTDIR:-${HOME}}"
@min_zsh_version = "5.2"
# Matches {ssh,http,https,git}://{user@,}host/org/repo and {user@,}host:org/repo

View file

@ -325,10 +325,8 @@ Per-call initialization options:
esac
shift
done
if (( _zflags & 1 )); then
_znames+=(${zname})
fi
if (( _zflags & 2 )); then
_znames+=(${zname})
if (( _zeager )); then
if [[ ! -e ${zroot_dir} ]]; then
print -u2 -R "${_zerror}${funcfiletrace[1]}:${_zbold}${zname}: ${zroot_dir}${_znormalred} not found${_znormal}"
_zfailed=1
@ -362,13 +360,13 @@ Per-call initialization options:
}
{
local -r _zflags=${1}
local -ri _zeager=${1}
local -i _zfailed=0
if ! source ${_zconfig} || (( _zfailed )); then
print -u2 -R "${_zred}Failed to source ${_zbold}${_zconfig}${_znormal}"
return 1
fi
if (( _zflags & 1 && ${#_znames} == 0 )); then
if (( ${#_znames} == 0 )); then
print -u2 -R "${_zred}No modules defined in ${_zbold}${_zconfig}${_znormal}"
return 1
fi
@ -470,7 +468,7 @@ _zimfw_info() {
_zimfw_info_print_symlink ZIM_HOME ${ZIM_HOME}
_zimfw_info_print_symlink 'zimfw config' ${_zconfig}
_zimfw_info_print_symlink 'zimfw script' ${__ZIMFW_FILE}
print -R 'zimfw version: '${_zversion}' (built at 2024-11-25 13:50:33 UTC, previous commit is 2d5718e)'
print -R 'zimfw version: '${_zversion}' (built at 2024-11-27 23:56:10 UTC, previous commit is e9279aa)'
local zparam
for zparam in LANG ${(Mk)parameters:#LC_*} OSTYPE TERM TERM_PROGRAM TERM_PROGRAM_VERSION ZSH_VERSION; do
print -R ${(r.22....:.)zparam}${(P)zparam}
@ -534,6 +532,7 @@ _zimfw_run_list() {
local -r zname=${1}
local -r zdir=${_zdirs[${zname}]}
print -nR "${_zbold}${zname}:${_znormal} ${zdir}"
if [[ ! -e ${zdir} ]] print -n ' (not installed)'
if [[ -z ${_zurls[${zname}]} ]] print -n ' (external)'
if (( ${_zfrozens[${zname}]} )) print -n ' (frozen)'
if (( ${_zdisabled_root_dirs[(I)${zdir}]} )) print -n ' (disabled)'
@ -952,7 +951,7 @@ _zimfw_run_tool() {
_zimfw_run_tool_action() {
local -i zmaxprocs=0
if [[ ${1} == reinstall ]] zmaxprocs=1
_zimfw_source_zimrc 1 || return 1
_zimfw_source_zimrc 0 || return 1
zargs -n 2 -P ${zmaxprocs} -- "${_znames[@]}" -- _zimfw_run_tool ${1}
return 0
}
@ -965,7 +964,7 @@ zimfw() {
local -r _znormal= _zbold= _zred= _znormalred= _zgreen= _zyellow= _znormalyellow=
fi
local -r _zerror="${_zred}x " _zokay="${_zgreen}) ${_znormal}" _zwarn="${_zyellow}! "
local -r _zconfig=${ZIM_CONFIG_FILE:-${ZDOTDIR:-${HOME}}/.zimrc} _zversion='1.16.0'
local -r _zconfig=${ZIM_CONFIG_FILE:-${ZDOTDIR:-${HOME}}/.zimrc} _zversion='1.17.0-SNAPSHOT'
local -r zusage="Usage: ${_zbold}${0}${_znormal} <action> [${_zbold}-q${_znormal}|${_zbold}-v${_znormal}]
Actions:
@ -1031,7 +1030,7 @@ Options:
local _zrestartmsg=' Restart your terminal for changes to take effect.'
case ${1} in
build)
_zimfw_source_zimrc 2 && _zimfw_build || return 1
_zimfw_source_zimrc 1 && _zimfw_build || return 1
(( _zprintlevel-- ))
_zimfw_compile
;;
@ -1043,8 +1042,9 @@ Options:
help) print -R ${zusage} ;;
info) _zimfw_info ;;
list)
_zimfw_source_zimrc 3 && zargs -n 1 -- "${_znames[@]}" -- _zimfw_run_list && \
_zimfw_list_unuseds ' (unused)'
_zimfw_source_zimrc $(( _zprintlevel > 1 )) && \
zargs -n 1 -- "${_znames[@]}" -- _zimfw_run_list && \
_zimfw_list_unuseds ' (unused)'
;;
check)
_zrestartmsg=
@ -1057,13 +1057,13 @@ Options:
_zimfw_run_tool_action install || return 1
(( _zprintlevel-- ))
_zimfw_print 'Done with install.' # Only printed in verbose mode
_zimfw_source_zimrc 2 && _zimfw_build && _zimfw_compile
_zimfw_source_zimrc 1 && _zimfw_build && _zimfw_compile
;;
install|update|reinstall)
_zimfw_run_tool_action ${1} || return 1
_zimfw_print -R "Done with ${1}.${_zrestartmsg}"
(( _zprintlevel-- ))
_zimfw_source_zimrc 2 && _zimfw_build && _zimfw_compile
_zimfw_source_zimrc 1 && _zimfw_build && _zimfw_compile
;;
uninstall) _zimfw_source_zimrc 0 && _zimfw_list_unuseds && _zimfw_uninstall ;;
check-version) _zimfw_check_version 1 ;;