环境
- 系统:Windows 10 Pro ×64
- 子系统:Ubuntu 20.04 LTS
- 终端:Windows Terminal
- 字体:Cascadia Code PL
装备工作
这篇文章是基于 Windows 10 + wsl2 + Ubuntu 下进行的,确保你已经使用 wsl2 Ubuntu 子系统,并使用 Windows Terminal 终端打开 Ubuntu,具体参考:
安装
zsh
$ sudo apt install zsh
安装完 zsh 后,查看版本确保成功
$ zsh --version
zsh 5.8 (x86_64-ubuntu-linux-gnu)
设置 zsh 为默认 shell
$ chsh -s /bin/zsh
oh-my-zsh
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
安装后确保 oh-my-zsh 是最新的
$ omz update
Updating Oh My Zsh
From https://github.com/ohmyzsh/ohmyzsh
* branch master -> FETCH_HEAD
Current branch master is up to date.
__ __
____ / /_ ____ ___ __ __ ____ _____/ /_
/ __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \
/ /_/ / / / / / / / / / / /_/ / / /_(__ ) / / /
\____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/
/____/
Hooray! Oh My Zsh has been updated and/or is at the current version.
To keep up on the latest news and updates, follow us on Twitter: https://twitter.com/ohmyzsh
Want to get involved in the community? Join our Discord: https://discord.gg/ohmyzsh
Get your Oh My Zsh swag at: https://shop.planetargon.com/collections/oh-my-zsh
Cascadia Code PL 字体
这里的字体不是安装在 Ubuntu 里,而是安装在 Windows 系统让 Windows Terminal 使用的
下载地址: Cascadia 代码 GitHub 版本页,解压后全选字体文件,右键 – 安装 即可
配置
此时打开新的 Ubuntu 窗口即可看到已经是 zsh shell 了,接下来需要配置以让其更美观
修改 oh-my-zsh 主题
$ vi .zshrc
修改主题为:agnoster
# ZSH_THEME="robbyrussell"
ZSH_THEME="agnoster"
修改 Windows Terminal 字体
打开 Windows Terminal 设置,找到 fontFace 并配置为 Powerline 字体,具体使用哪个字体可以在 Windows 设置里查看并挑选自己喜欢的即可
"useAcrylic": true, // 开启半透明
"acrylicOpacity": 0.5, // 透明度
"fontFace": "Cascadia Code PL", // 字体
"fontSize": 10, // 字体大小
"cursorShape" : "underscore", // 光标类型
"cursorColor" : "#000000", // 光标颜色
"historySize": 9001, // 滚动历史大小
"selectionBackground": "#EE3A8C", // 选择文本底色
"colorScheme": "Frost" // 主题配色
底部的 schemes 添加配色
{
"name" : "Frost",
"background" : "#FFFFFF",
"black" : "#3C5712",
"blue" : "#17b2ff",
"brightBlack" : "#749B36",
"brightBlue" : "#27B2F6",
"brightCyan" : "#13A8C0",
"brightGreen" : "#89AF50",
"brightPurple" : "#F2A20A",
"brightRed" : "#F49B36",
"brightWhite" : "#741274",
"brightYellow" : "#991070",
"cyan" : "#3C96A6",
"foreground" : "#000000",
"green" : "#6AAE08",
"purple" : "#991070",
"red" : "#8D0C0C",
// "white" : "#6E386E",
"white" : "#FFFFFF",
"yellow" : "#991070"
}
优化 zsh 显示
$ cd ~
$ vi .zshrc
让 zsh 默认进入 home 目录,添加:
cd ~
复制 .bashrc 目录命令到 .zshrc:
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
让 zsh 只显示用户名和目录路径,并且随机颜色
# 0: 透明, 1: 红色, 2: 青色, 3: 黄色, 4: 蓝色, 5: 紫色, 6: 浅蓝色, 7: 白色, 8: 灰色, 9: 浅红色
color_list=(1 2 3 5 9)
function pscolor() {
num=${#color_list[*]}
#bgc=$((RANDOM%9+1))
bgc=${color_list[$((RANDOM%num+1))]}
fontc=white
echo $bgc $fontc
}
prompt_context() {
if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then
prompt_segment $(pscolor) "%(!.%{%F{yellow}%}.)$USER"
fi
}
prompt_dir() {
prompt_segment blue $CURRENT_FG '%c'
}
prompt_segment() {
local bg fg
[[ -n $1 ]] && bg="%K{$1}" || bg="%k"
if [[ $1 == 3 || $1 == 7 || $1 == yellow ]]; then
[[ -n $2 ]] && fg="%F{black}" || fg="%f"
else
[[ -n $2 ]] && fg="%F{white}" || fg="%f"
fi
if [[ $CURRENT_BG != 'NONE' && $1 != $CURRENT_BG ]]; then
echo -n " %{$bg%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR %{$fg%}% "
else
echo -n "%{$bg%} %{$fg%}% "
fi
CURRENT_BG=$1
[[ -n $3 ]] && echo -n $3
}
生成 .dircolors 从而自定义目录颜色显示,修改颜色很简单,修改后会立刻预览
$ dircolors -p > .dircolors
然后编辑 .dircolors 即可自定义颜色,很简单这里就不做展示了