824 字
4 分钟
和我一起配置 zsh 吧
2025-06-30

安装#

你可以使用你的系统自带的包管理器安装 zsh,例如我是 Arch Linux,就可以输入这个来安装:

sudo pacman -S zsh

刚安装好的是一个空壳,别着急,继续往下看。

安装插件管理器 (zinit)#

你可以在你的 ~/.zshrc 文件中加入以下内容:

autoload -Uz compinit
autoload -Uz _zinit
(( ${+_comps} )) && _comps[zinit]=_zinit
compinit -D

if [[ ! -f $HOME/.local/share/zinit/zinit.git/zinit.zsh ]]; then
    print -P "%F{33} %F{220}Installing %F{33}ZDHARMA-CONTINUUM%F{220} Initiative Plugin Manager (%F{33}zdharma-continuum/zinit%F{220})…%f"
    command mkdir -p "$HOME/.local/share/zinit"
        command chmod g-rwX "$HOME/.local/share/zinit"
    command git clone https://github.com/zdharma-continuum/zinit "$HOME/.local/share/zinit/zinit.git" && \
        print -P "%F{33} %F{34}Installation successful.%f%b" || \
        print -P "%F{160} The clone has failed.%f%b"
fi

source "$HOME/.local/share/zinit/zinit.git/zinit.zsh"

然后重新读取一下配置文件:

source ~/.zshrc

安装插件#

由于一个一个添加有点麻烦,所以我这里提供了一段代码:

for zinit_temp ("${LIGHT[@]}") {
    zinit light "$zinit_temp"
}
unset zinit_temp

后面再加入插件只需要加到 LIGHT 中就可以了:

WARNING

下面的东西必须放在上面的代码的前面,不然无法加载。

local LIGHT=(
    xxx/xxx
    xxx/xxx
    xxx/xxx
    ...
)

推荐一些插件,是我自己正在用的:

local LIGHT=(
    zdharma-continuum/history-search-multi-word
    zsh-users/zsh-autosuggestions
    zdharma-continuum/fast-syntax-highlighting
    zsh-users/zsh-syntax-highlighting
    zsh-users/zsh-completions
    zsh-users/zsh-history-substring-search
    ael-code/zsh-colored-man-pages
)

OMZ 中加载库#

同上,加入:

for zinit_omz_temp ("${LIB_FROM_OMZ[@]}") {
    zinit snippet OMZ::lib/"$zinit_omz_temp".zsh
}
unset zinit_omz_temp
WARNING

同上,下面的东西必须放在上面的代码的前面,不然无法加载。这些内容我都已经写好了,如果想自行配置,可以删除这些内容,自行添加。如果到现在还不清楚要写在哪里,请参考下方的“核对文件”部分。

local LIB_FROM_OMZ=(
    async_prompt
    git
    grep
    clipboard
    completion
    history
    key-bindings
    theme-and-appearance
    prompt_info_functions
    directories
)

核对文件#

现在你的文件应该是这样的:

local LIGHT=(
    zdharma-continuum/history-search-multi-word
    zsh-users/zsh-autosuggestions
    zdharma-continuum/fast-syntax-highlighting
    zsh-users/zsh-syntax-highlighting
    zsh-users/zsh-completions
    zsh-users/zsh-history-substring-search
    ael-code/zsh-colored-man-pages
)

local LIB_FROM_OMZ=(
    async_prompt
    git
    grep
    clipboard
    completion
    history
    key-bindings
    theme-and-appearance
    prompt_info_functions
    directories
)

autoload -Uz compinit
autoload -Uz _zinit
(( ${+_comps} )) && _comps[zinit]=_zinit
compinit -D

if [[ ! -f $HOME/.local/share/zinit/zinit.git/zinit.zsh ]]; then
    print -P "%F{33} %F{220}Installing %F{33}ZDHARMA-CONTINUUM%F{220} Initiative Plugin Manager (%F{33}zdharma-continuum/zinit%F{220})…%f"
    command mkdir -p "$HOME/.local/share/zinit"
        command chmod g-rwX "$HOME/.local/share/zinit"
    command git clone https://github.com/zdharma-continuum/zinit "$HOME/.local/share/zinit/zinit.git" && \
        print -P "%F{33} %F{34}Installation successful.%f%b" || \
        print -P "%F{160} The clone has failed.%f%b"
fi

source "$HOME/.local/share/zinit/zinit.git/zinit.zsh"

for zinit_temp ("${LIGHT[@]}") {
    zinit light "$zinit_temp"
}
unset zinit_temp

for zinit_omz_temp ("${LIB_FROM_OMZ[@]}") {
    zinit snippet OMZ::lib/"$zinit_omz_temp".zsh
}
unset zinit_omz_temp

当你再次进入 zsh 时,就会安装这些插件,然后你就……发现缺少了点什么?为什么我们的终端还是这么简陋啊喂!

Prompt / 提示符#

是的,你觉得简陋的原因就是我们还没有配置 Prompt。

Archlinux%

这应该就是你现在的样子。等等,看了这么多教程的你,是不是以为又要装 powerlevel10k 了?这次来点不一样的。

安装 starship#

如果你是 Arch Linux 用户,你可以直接用 pacman 安装它:

sudo pacman -S starship

如果你不是,请用这个命令安装:

curl -sS https://starship.rs/install.sh | sh

然后再在 ~/.zshrc 里添加这个来加载它:

eval "$(starship init zsh)"

好了,你的终端变得好看了一点。如果你不满意这个提示符,可以去官网找到其他的主题。

参考文件#

local LIGHT=(
    zdharma-continuum/history-search-multi-word
    zsh-users/zsh-autosuggestions
    zdharma-continuum/fast-syntax-highlighting
    zsh-users/zsh-syntax-highlighting
    zsh-users/zsh-completions
    zsh-users/zsh-history-substring-search
    ael-code/zsh-colored-man-pages
)

local LIB_FROM_OMZ=(
    async_prompt
    git
    grep
    clipboard
    completion
    history
    key-bindings
    theme-and-appearance
    prompt_info_functions
    directories
)

autoload -Uz compinit
autoload -Uz _zinit
(( ${+_comps} )) && _comps[zinit]=_zinit
compinit -D

if [[ ! -f $HOME/.local/share/zinit/zinit.git/zinit.zsh ]]; then
    print -P "%F{33} %F{220}Installing %F{33}ZDHARMA-CONTINUUM%F{220} Initiative Plugin Manager (%F{33}zdharma-continuum/zinit%F{220})…%f"
    command mkdir -p "$HOME/.local/share/zinit"
        command chmod g-rwX "$HOME/.local/share/zinit"
    command git clone https://github.com/zdharma-continuum/zinit "$HOME/.local/share/zinit/zinit.git" && \
        print -P "%F{33} %F{34}Installation successful.%f%b" || \
        print -P "%F{160} The clone has failed.%f%b"
fi

source "$HOME/.local/share/zinit/zinit.git/zinit.zsh"

for zinit_temp ("${LIGHT[@]}") {
    zinit light "$zinit_temp"
}
unset zinit_temp

for zinit_omz_temp ("${LIB_FROM_OMZ[@]}") {
    zinit snippet OMZ::lib/"$zinit_omz_temp".zsh
}
unset zinit_omz_temp

eval "$(starship init zsh)"
和我一起配置 zsh 吧
https://lunars.site/posts/good-zshell/
作者
Silvaire
发布于
2025-06-30
许可协议
CC BY-NC-SA 4.0