zsh基本配置

1. 下载安装zsh

sudo apt install zsh

设置终端默认启动zsh

1
2
3
4
5
chsh -s /bin/zsh
chsh -s `which zsh`

#如果要切换回去bash:
chsh -s /bin/bash

2. 安装oh-my-zsh

git clone https://github.com/robbyrussell/oh-my-zsh.git

cd oh-my-zsh

cd tools

./install.sh

3. 配置主题

oh-my-zsh 集成了大量的主题, 位于Themes · ohmyzsh/ohmyzsh Wiki (github.com)

配置主题, 可以通过修改~/.zshrc中的环境变量ZSH_THEME实现更换主题

ZSH_THEME=”bira”

如果觉得主题太多,可以选择使用随机模式, 不过这就比较刺激了。

SH_THEME=”random”

4. on-my-zsh自动补全插件

将相应的插件git克隆zsh-autosuggestions仓库到你的本地.oh-my-zsh/custom/plugins目录

1
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions

然后修改本地的~/.zshrc文件中的plugins选项,加入zsh-autosuggestions,如图所示:

1
vim ~/.zshrc

image-20240601185003427

然后在运行以下命令,重新加载当前用户的 ~/.zshrc 文件即可

1
source ~/.zshrc

5. on-my-zsh高亮插件

将相应的插件git克隆zsh-syntax-highlighting仓库到你的本地.oh-my-zsh/custom/plugins目录

1
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

然后修改本地的~/.zshrc文件中的plugins选项,加入zsh-syntax-highlighting,如图所示:

1
vim ~/.zshrc

image-20240601185043104

然后在运行以下命令,重新加载当前用户的 ~/.zshrc 文件即可

1
source ~/.zshrc

6.zsh导致的问题

文件名解析错误

zsh: no matches found: list[fullordering]

在使用 Zsh(Z shell)时,如果你看到错误消息 zsh: no matches found: list[fullordering],这通常是由于 Zsh 的文件名模式匹配(globbing)功能导致的。当你在命令行中使用方括号([])时,Zsh 会尝试将其解释为文件名模式匹配,而不是你可能预期的普通字符串或数组访问。

可以通过在~/.zshrc文件中添加以下内容解决

set noglob #禁用文件名模式匹配

除了上述的解决方法还有

通过转义中括号的方法,还没有尝试可行性

执行命令时,将list[fullordering],写成list\[fullordering\]

一键搭建脚本

该脚本包含了对tmux的搭建部署以及Powerlevel10k主题的搭建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/bin/bash

# 定义颜色输出
GREEN='\033[0;32m'
BLUE='\033[0;34m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color

echo -e "${BLUE}=== 开始环境搭建: Tmux + Zsh + Powerlevel10k ===${NC}"

# 1. 检查并安装必要软件
echo -e "${GREEN}[1/7] 更新软件源并安装 zsh, tmux, git...${NC}"
if [ -x "$(command -v apt)" ]; then
sudo apt update
sudo apt install -y zsh tmux git curl vim
else
echo "错误: 未检测到 apt 包管理器,本脚本仅支持 Debian/Ubuntu 系系统,或请手动安装 zsh, tmux, git。"
exit 1
fi

# 2. 安装 Oh My Zsh
echo -e "${GREEN}[2/7] 安装 Oh My Zsh...${NC}"
if [ ! -d "$HOME/.oh-my-zsh" ]; then
git clone https://github.com/robbyrussell/oh-my-zsh.git "$HOME/.oh-my-zsh"
cp "$HOME/.oh-my-zsh/templates/zshrc.zsh-template" "$HOME/.zshrc"
echo "Oh My Zsh 安装完成。"
else
echo "Oh My Zsh 已存在,跳过安装。"
fi

# 3. 安装 Powerlevel10k 主题
echo -e "${GREEN}[3/7] 安装 Powerlevel10k 主题...${NC}"
ZSH_CUSTOM="$HOME/.oh-my-zsh/custom"
if [ ! -d "$ZSH_CUSTOM/themes/powerlevel10k" ]; then
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git "$ZSH_CUSTOM/themes/powerlevel10k"
else
echo "Powerlevel10k 已存在,跳过下载。"
fi

# 4. 安装 Zsh 插件
echo -e "${GREEN}[4/7] 安装 Zsh 插件 (autosuggestions & syntax-highlighting)...${NC}"
# 安装 zsh-autosuggestions
if [ ! -d "$ZSH_CUSTOM/plugins/zsh-autosuggestions" ]; then
git clone https://github.com/zsh-users/zsh-autosuggestions "$ZSH_CUSTOM/plugins/zsh-autosuggestions"
fi
# 安装 zsh-syntax-highlighting
if [ ! -d "$ZSH_CUSTOM/plugins/zsh-syntax-highlighting" ]; then
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git "$ZSH_CUSTOM/plugins/zsh-syntax-highlighting"
fi

# 5. 配置 .zshrc
echo -e "${GREEN}[5/7] 配置 .zshrc (应用 p10k 主题, 启用插件, noglob)...${NC}"
ZSHRC="$HOME/.zshrc"

# 修改主题为 Powerlevel10k
# 使用 sed 匹配以 ZSH_THEME 开头的行并替换
sed -i 's/^ZSH_THEME=.*/ZSH_THEME="powerlevel10k\/powerlevel10k"/' "$ZSHRC"

# 修改插件设置
if ! grep -q "zsh-autosuggestions" "$ZSHRC"; then
sed -i 's/plugins=(git)/plugins=(git zsh-autosuggestions zsh-syntax-highlighting)/' "$ZSHRC"
fi

# 解决文件名解析错误 (set noglob)
if ! grep -q "set noglob" "$ZSHRC"; then
echo "" >> "$ZSHRC"
echo "# 禁用文件名模式匹配,解决 zsh: no matches found 问题" >> "$ZSHRC"
echo "set noglob" >> "$ZSHRC"
fi

# 6. 配置 .tmux.conf
echo -e "${GREEN}[6/7] 配置 .tmux.conf (Ctrl+a 前缀, Vim 风格按键)...${NC}"
TMUX_CONF="$HOME/.tmux.conf"
ZSH_PATH=$(command -v zsh)

cat > "$TMUX_CONF" <<EOF
# --- tmux基本配置 (Generated by setup script) ---

# 1. 修改前缀命令为 Ctrl+a
set -g prefix C-a
unbind C-b
bind C-a send-prefix
set -g mouse on

# 2. 修改新增面板指令
unbind '"'
bind - splitw -v -c '#{pane_current_path}' # 垂直方向新增面板 (-)
unbind %
bind | splitw -h -c '#{pane_current_path}' # 水平方向新增面板 (|)

# 3. 修改面板切换指令 (hjkl)
bind -r k select-pane -U # k 为上
bind -r j select-pane -D # j 为下
bind -r h select-pane -L # h 为左
bind -r l select-pane -R # l 为右

# 4. 修改面板大小调整指令 (Ctrl + hjkl)
bind -r ^k resizep -U 10 # Ctrl+k 向上调整
bind -r ^j resizep -D 10 # Ctrl+j 向下调整
bind -r ^h resizep -L 10 # Ctrl+h 向左调整
bind -r ^l resizep -R 10 # Ctrl+l 向右调整

# 5. 设置 tmux 默认终端为 zsh
set -g default-shell ${ZSH_PATH}
EOF

# 7. 设置默认 Shell
echo -e "${GREEN}[7/7] 设置默认 Shell 为 zsh...${NC}"
if [ -z "$ZSH_PATH" ]; then
echo "❌ 未检测到 zsh 可执行文件,请确认安装成功并重试!"
exit 1
fi

echo "检测到 zsh 路径: $ZSH_PATH"
echo "将使用 chsh 将默认 Shell 设置为 zsh(需输入密码)"
chsh -s "$ZSH_PATH" "$USER"

if [ $? -eq 0 ]; then
echo "🎉 默认 Shell 已成功切换为 zsh!"
else
echo "⚠️ chsh 执行失败,请手动执行以下命令:"
echo " chsh -s \"$ZSH_PATH\" \"$USER\""
fi


echo -e "${BLUE}=== 环境搭建完成! ===${NC}"
echo -e "${YELLOW}重要提示:${NC}"
echo "1. 请重新登录终端或运行 'zsh' 生效。"
echo "2. 首次进入 zsh 时,Powerlevel10k 会启动配置向导,请按照提示选择你喜欢的样式。"
echo "3. 为了获得最佳体验(显示图标),请确保你的终端软件(如 iTerm2, Windows Terminal, XShell)使用 'Nerd Font' 字体(推荐 MesloLGS NF)。"

参考链接:Tmux / zsh / oh-my-zsh教程 - 风车车的博客 | Windmill Blog (yuyucong.github.io)


zsh基本配置
http://candyb0x.github.io/2024/05/18/zsh基本配置/
作者
Candy
发布于
2024年5月18日
更新于
2025年12月6日
许可协议