zsh+ohmyzsh 终端美化(2024/07/26)
zsh+ohmyzsh 终端美化(2024/07/26)
终端作为每天都要使用的工具,一个趁手的终端能够在一定程度上提高效率,下面以
zsh
和ohmyzsh
来记录笔者终端美化的过程。
效果图:
1. zsh安装
-
Debian Linux
# 更新索引 $ apt update # 安装zsh $ apt install zsh
-
Redhat Linux
$ yum install zsh
注:通过
yum
安装的zsh
版本可能较低,后续很多插件都需要高版本的zsh
才能支持,如果想安装最新版zsh
,可以通过下载源码编译安装,具体可参考zsh源码编译安装。
2. ohmyzsh安装
通过其官网介绍的安装方式安装会遇到网络的问题,因此除官网介绍的安装方法外此处介绍一种手动快速安装的方法,如果您能科学上网,那么可以直接采用官网的命令来进行安装。
-
官方命令
# 通过curl来安装 $ sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" # 通过wget来安装 $ sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
-
手动安装
-
在
Github
找到ohmyzsh
的仓库,下载或拷贝其安装脚本;复制安装脚本的内容,将其保存到
install.sh
脚本中: -
执行安装脚本;
此处通过
sh install.sh
命令便可以直接安装ohmyzsh
,但脚本内还是从Github
拉取的仓库,可能会遇到网络比较慢的情况,因此我们通过修改安装脚本中仓库的地址来达到的加速的目的;Github
加速的方法:- 将
Github
仓库同步到Gitee
以实现加速的目的; - 通过一些镜像网站来实现加速的目的,笔者比较常用的镜像网站是https://hub.fastgit.org;
通过熟悉的编辑器编辑
install.sh
脚本,找到REMOTE
仓库地址,将其替换为加速地址,此处笔者提供两个,分别对应上面提到的两种加速方法:- https://gitee.com/xiaoqqya/ohmyzsh.git;
- https://hub.fastgit.org/ohmyzsh/ohmyzsh.git;
修改前:
修改后:
通过
sh install.sh
命令执行安装脚本,安装过程中会询问是否将zsh
设置为当前用户的默认shell
,确认输入当前用户密码即可,至此安装完成: - 将
-
3. 更改主题
zsh
的配置文件在用户目录下的.zhsrc
文件,更改主题以及接下来的添加插件都是在该文件中进行配置。
-
查看可用主题
ohmyzsh
的主题放置在用户目录下的.oh-my-zsh/themes
文件夹下,我们可以通过查看文件夹下的文件来查看有哪些可用主题:$ ls ~/.oh-my-zsh/themes/
-
更改主题
打开
~/.zshrc
配置文件,找到ZSH_THEME
变量,将其修改为想要修改的主题名称,此处以ys
主题为例:保存后重开终端或者执行
exec $SHELL
命令即可生效。
ohmyzsh
自带的主题笔者都不是很喜欢,在其仓库wiki中有一些额外的主题可供选择,如果有你喜欢的,可以按照对应主题提供的安装方法进行安装,然后在.zshrc
中修改ZSH_THEME
变量为你想用的主题名称即可。
此处推荐笔者常用的spaceship
主题,安装方法如下:
# 拉取项目仓库,可以通过上面提到的方法进行加速,此处直接放镜像地址,如果因为时间问题镜像失效,请使用其github官方地址
$ git clone https://gitee.com/xiaoqqya/spaceship-prompt.git "$ZSH_CUSTOM/themes/spaceship-prompt" --depth=1
# 添加软链接
$ ln -s "$ZSH_CUSTOM/themes/spaceship-prompt/spaceship.zsh-theme" "$ZSH_CUSTOM/themes/spaceship.zsh-theme"
# 更改主题,按照上面提到的方法在.zshrc配置中修改ZSH_THEME变量为spaceship,然后重启终端生效
4. 安装插件
插件与主题一样,同样是在.zshrc
文件中进行配置。
-
查看可用插件
ohmyzsh
默认自带了很多插件放置在~/.oh-my-zsh/plugins
目录下面,具体每个插件的作用可以参考其仓库wiki:$ ls ~/.oh-my-zsh/plugins/
-
启用插件
ohmyzsh
默认只启用了git
插件,下面以笔者常用的sudo
插件来演示如何启用自带插件,打开~/.zshrc
配置文件,找到plugins
变量,将您想启用的插件加入进入即可,不通插件名称之间以空格隔开:保存后重开终端或者执行
exec $SHELL
命令即可生效。
除ohmyzsh
自带的插件外,您还可以安装一些额外的插件,在其仓库wiki中介绍了一些,可以自行去查看,此处推荐笔者经常使用的插件:
-
能在输入命令时根据历史记录提供自动建议的插件,效果如下:
安装方法:
# 拉取项目仓库,可以通过上面提到的方法进行加速,此处直接放镜像地址,如果因为时间问题镜像失效,请使用其github官方地址 $ git clone https://gitee.com/xiaoqqya/zsh-autosuggestions.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions # 启用插件,按照上面提到的方法在.zshrc配置的plugins中加入zsh-autosuggestions,然后重启终端生效
-
当你输入命令的时候,提供语法高亮的插件,效果如下:
安装方法:
# 拉取项目仓库,可以通过上面提到的方法进行加速,此处直接放镜像地址,如果因为时间问题镜像失效,请使用其github官方地址 $ git clone https://gitee.com/xiaoqqya/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting # 启用插件,按照上面提到的方法在.zshrc配置的plugins中加入zsh-syntax-highlighting,然后重启终端生效
-
提供
conda
虚拟环境名称补全的插件,效果如下:安装方法:
# 拉取项目仓库,可以通过上面提到的方法进行加速,此处直接放镜像地址,如果因为时间问题镜像失效,请使用其github官方地址 $ git clone https://gitee.com/xiaoqqya/conda-zsh-completion.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/conda-zsh-completion # 启用插件,按照上面提到的方法在.zshrc配置的plugins中加入conda-zsh-completion,然后重启终端生效
-
为
python
包管理器pip
提供补全,效果如下:安装方法:
# pip 为 ohmyzsh 自带插件,直接按照上面提到的方法在 .zshrc 配置的 plugins 中加入 pip 即可,然后重启终端生效
-
为防火墙管理工具
ufw
命令提供补全,效果如下:安装方法:
# ufw 为 ohmyzsh 自带插件,直接按照上面提到的方法在 .zshrc 配置的 plugins 中加入 ufw 即可,然后重启终端生效
-
通过双击Esc键快速为当前命令添加
sudo
前缀,安装方法如下:# sudo 为 ohmyzsh 自带插件,直接按照上面提到的方法在 .zshrc 配置的 plugins 中加入 sudo 即可,然后重启终端生效
-
为
docker
命令添加自动补全支持,效果如下:安装方法:
# docker 为 ohmyzsh 自带插件,直接按照上面提到的方法在 .zshrc 配置的 plugins 中加入 docker 即可,然后重启终端生效
配置:
zstyle ':completion:*:*:docker:*' option-stacking yes zstyle ':completion:*:*:docker-*:*' option-stacking yes
-
为
docker-compose
命令添加自动补全支持,效果如下:安装方法:
# docker-compose 为 ohmyzsh 自带插件,直接按照上面提到的方法在 .zshrc 配置的 plugins 中加入 docker-compose 即可,然后重启终端生效
-
一条
extract
命令解压多种压缩包格式,使用方法如下:$ extract <filename>
安装方法:
# extract 为 ohmyzsh 自带插件,直接按照上面提到的方法在 .zshrc 配置的 plugins 中加入 extract 即可,然后重启终端生效
-
此插件在
zsh
找不到命令时提供建议的安装包,效果如下:安装方法:
# command-not-found 为 ohmyzsh 自带插件,直接按照上面提到的方法在 .zshrc 配置的 plugins 中加入 command-not-found 即可,然后重启终端生效
之后遇到好用的插件再来补充!
5. 自动安装脚本
为了便于安装,笔者将安装 oh-my-zsh 以及常用主题和插件的过程写成了脚本,内容如下:
#!/usr/bin/env sh
if ! which git > /dev/null 2>&1; then
echo -e "\ngit is not found.\nexit with code 1.\n"
exit 1
elif ! which curl > /dev/null 2>&1; then
echo -e "\ncurl is not found.\nexit with code 1.\n"
exit 1
elif ! which zsh > /dev/null 2>&1; then
echo -e "\nzsh is not found.\nexit with code 1.\n"
exit 1
fi
curl -k -sSL https://mirror.ghproxy.com/https://github.com/ohmyzsh/ohmyzsh/blob/master/tools/install.sh | REMOTE="https://mirror.ghproxy.com/https://github.com/ohmyzsh/ohmyzsh.git" RUNZSH="no" sh -s
STARSHIP_PATH="$HOME/.local/bin"
mkdir -p $STARSHIP_PATH
curl -sSL https://mirror.ghproxy.com/https://github.com/starship/starship/blob/master/install/install.sh | sh -s -- -y -b $STARSHIP_PATH -B https://mirror.ghproxy.com/https://github.com/starship/starship/releases
$STARSHIP_PATH/starship preset plain-text-symbols -o $HOME/.config/starship.toml
git clone https://mirror.ghproxy.com/https://github.com/zsh-users/zsh-autosuggestions.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
echo -e "\n"
git clone https://mirror.ghproxy.com/https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
echo -e "\n"
git clone https://mirror.ghproxy.com/https://github.com/zimfw/environment.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/environment
mv ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/environment/init.zsh ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/environment/environment.plugin.zsh
echo -e "\n"
git clone https://mirror.ghproxy.com/https://github.com/conda-incubator/conda-zsh-completion.git ${ZSH:-~/.oh-my-zsh}/custom/plugins/conda-zsh-completion
sed -i "s/ZSH_THEME=\".*/ZSH_THEME=\"\"/g" $HOME/.zshrc
sed -i "s/plugins=(git)/plugins=(git sudo zsh-autosuggestions zsh-syntax-highlighting environment conda-zsh-completion pip ufw docker docker-compose extract command-not-found copypath copyfile)/g" $HOME/.zshrc
cat <<"EOF" >> $HOME/.zshrc
if [[ "$TERM" == "xterm" ]]; then
export TERM="xterm-256color"
fi
zstyle ':omz:update' mode disabled
zstyle ':completion:*:*:docker:*' option-stacking yes
zstyle ':completion:*:*:docker-*:*' option-stacking yes
setopt HIST_IGNORE_ALL_DUPS
PATH="$HOME/.local/bin:$PATH"
eval "$(starship init zsh)"
EOF
exec $(which zsh) -l
更多推荐
所有评论(0)