23. 简易 Ubuntu 终端美化

前言

我在早些时候写过一个 Ubuntu 的美化教程,但那篇文章只停留在 GNOME 桌面环境上,对其他方面没有做修改。随着对 Linux 的理解加深,我开始越来越多地使用终端,比如在 WSL 中。因此现在更需要终端的优化。所以我打算单独再写一个备忘录来记录一下如何调整一下终端。

本博文的所有内容都在 WSL2 中实践。选择 WSL2 是因为我主要使用 Windows 10 完成日常娱乐和学习任务,不想放弃 Windows,同时我没有足够的电脑性能和时间精力在 Linux 中折腾 Wine 或在 Linux 中通过虚拟机运行 Windows 系统。而且我目前也没时间去学习使用 Arch。

需要说明的是,这只是我随手写的小教程,记录了这次全新安装 Ubuntu 后的配置经验和习惯。文中可能存在一些不完善之处,仅供参考,我也没有很认真地写。如果将来发现任何问题,我都会及时更新修正。

Zsh

1. 安装 Zsh

1
2
3
4
5
6
# 在 Ubuntu/Debian 系统上
sudo apt update
sudo apt install zsh -y

# 查看安装的 Zsh 版本
zsh --version

2. 将 Zsh 设为默认 Shell

1
2
3
4
5
# 更改默认 shell
chsh -s $(which zsh)

# 注销并重新登录,或重启终端
echo $SHELL

3. 安装 Oh-My-Zsh 框架

Oh-My-Zsh 是一个开源的、社区驱动的框架,用于管理 Zsh 配置。

1
2
3
4
5
# 使用 curl 安装
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

# 或使用 wget 安装
sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

安装插件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 确保 ~/.oh-my-zsh/custom/plugins 目录存在
mkdir -p ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins

# 安装 zsh-autosuggestions(命令自动补全建议)
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

# 安装 zsh-syntax-highlighting(命令语法高亮)
git clone https://github.com/zsh-users/zsh-syntax-highlighting ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

# 安装 zsh-completions(额外命令补全)
git clone https://github.com/zsh-users/zsh-completions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-completions

# 确保 ~/.zshrc 里有 plugins=() 这行,并且不重复添加插件
grep -q '^plugins=(' ~/.zshrc || echo 'plugins=()' >> ~/.zshrc
sed -i '/^plugins=(/ s/)/ zsh-autosuggestions zsh-syntax-highlighting zsh-completions)/' ~/.zshrc

# 重新加载 Zsh 配置
source ~/.zshrc

安装 & 启用 Powerlevel10k 主题

1
2
3
4
5
6
7
8
9
10
11
# 下载 Powerlevel10k 主题
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/themes/powerlevel10k

# 修改 .zshrc 里的主题
sed -i 's/^ZSH_THEME=.*/ZSH_THEME="powerlevel10k\/powerlevel10k"/' ~/.zshrc

# 重新加载 Zsh 配置
source ~/.zshrc

# 进入 Powerlevel10k 配置向导(按提示操作)
p10k configure

zsh 就配置到这样。


自用的包(可略过)

然后我自己给自己准备了一份这个。这是一个我平时用的上的包,用于在全新安装 Ubuntu 时候使用。如无需要,可以略过。

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
sudo apt install -y \
aria2 # 多线程下载工具(支持HTTP/BT) \
bat # 带语法高亮的cat替代工具 \
btop # 图形化系统监控(支持鼠标操作) \
build-essential # 编译工具链(gcc/make等) \
curl # 网络数据传输工具 \
eza # 现代化ls替代(带图标/Git状态) \
fd-find # 快速文件搜索工具(比find更快) \
fed # 终端看图软件 \
fonts-powerline # 终端增强字体(支持特殊符号) \
fzf # 模糊搜索工具(集成终端/zsh等) \
git # 版本控制系统 \
htop # 交互式进程查看器(F4过滤/F9杀进程) \
iftop # 实时网络带宽监控 \
iotop # 磁盘I/O使用监控 \
iperf3 # 网络带宽测试工具 \
ncdu # 磁盘空间分析工具(交互式) \
neofetch # 系统信息展示工具(带ASCII Logo) \
neovim # 现代Vim编辑器(支持LSP/插件) \
nmap # 网络探测和安全审计工具 \
ntpdate # 系统时间同步工具 \
ranger # 终端文件管理器(Vim式操作) \
ripgrep # 超快文本搜索工具(rg命令) \
tmux # 终端多路复用器(会话管理) \
tree # 目录树状显示工具 \
vnstat # 网络流量统计工具 \
wget # 命令行下载工具 \
xsel # 剪贴板操作工具(集成终端) \
zoxide # 智能目录跳转工具(z命令) \
zsh # 强大的Shell(支持丰富插件)

安装 AstroNvim

我懒得去自己配置一个 Nvim,而且自己配的话,可能会忘记自己配了什么插件,或者把设置的键位也忘记了。
所以我打算直接使用开箱即用的 AstroNvim。

按照官网的说法,安装 AstroNvim:

  1. 备份当前 Neovim 配置(如果存在)

    1
    mv ~/.config/nvim ~/.config/nvim.bak
  2. 清理 Neovim 文件夹(可选但推荐)

    1
    2
    3
    mv ~/.local/share/nvim ~/.local/share/nvim.bak
    mv ~/.local/state/nvim ~/.local/state/nvim.bak
    mv ~/.cache/nvim ~/.cache/nvim.bak
  3. 克隆仓库

    1
    2
    3
    git clone --depth 1 https://github.com/AstroNvim/template ~/.config/nvim
    rm -rf ~/.config/nvim/.git
    nvim

目前为止,AstroNvim 就安装完成了,其他的 LSP 和 language parser 就自己因人而异的安装吧。目前我这个 Vim 新手用不上。

安装完之后,我还塞了很多主题。倒也不是说一定要,只是想都看看,尝尝鲜。大家当然可以不用照着做。

1
2
# 新建自定义的 AstroNvim 主题配置文件,添加更多主题选项
nvim ~/.config/nvim/lua/user/plugins/themes.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
return {
-- 添加热门主题插件列表
{ "folke/tokyonight.nvim" }, -- 经典 TokyoNight
{ "catppuccin/nvim", name = "catppuccin" }, -- 柔和 Catppuccin
{ "ellisonleao/gruvbox.nvim" }, -- 复古 Gruvbox
{ "navarasu/onedark.nvim" }, -- OneDark(VS Code 风格)
{ "rebelot/kanagawa.nvim" }, -- 日式风格 Kanagawa
{ "rose-pine/neovim", name = "rose-pine" }, -- 现代 Rose-Pine
{ "sainnhe/everforest" }, -- 护眼 Everforest
{ "EdenEast/nightfox.nvim" }, -- 多变 Nightfox 系列
{ "Mofiqul/dracula.nvim" }, -- Dracula 暗黑风
{ "nyoom-engineering/oxocarbon.nvim" },-- IBM 风格 Oxocarbon
{ "loctvl842/monokai-pro.nvim" }, -- Monokai Pro
{ "olimorris/onedarkpro.nvim" }, -- OneDark Pro(更丰富的配置)
}

接下来可以用 <Leader>ft 来切换主题了

还有一点的是,需要安装 Nerd Font。WSL 中,我们不需要在 Ubuntu 里面安装 Nerd Font,在 Windows 本机安装就行了,我选了 JetBrainsMono Nerd Font.

Windows 安装 Nerd Font 步骤:

  1. 访问 Nerd Fonts - Iconic font aggregator, glyphs/icons collection, & fonts patcher 下载 JetBrainsMono Nerd Font

  2. 解压后选择所有字体文件,右键 "为所有用户安装"

  3. 在 Windows Terminal 中设置为默认字体

遇到的问题

有些时候,会出现以下问题:

1
2
Insufficient system resources exist to complete the requested service.  
Error code: Wsl/Service/CreateInstance/CreateVm/HCS/0x800705aa Press any key to continue...

这种问题,这是因为系统没法获取足够的资源来新建虚拟机,于是便报错资源不足。毕竟我的打算只用终端,不使用桌面环境,而 WSL 默认分配了 8GB 内存和 4GB swap,所以我在 WSL settings 中改成了 2GB 和 512MB swap,然后使用

1
wsl --shutdown

关闭 WSL,再次打开就行了,以后除非是内存真的很紧张,不然应该都不会弹出的了。

当然,也可以在用户目录创建或编辑 % USERPROFILE%.wslconfig 文件添加如下配置:

1
2
3
[wsl2]
memory=2GB
swap=512MB

这和在 WSL settings 中修改是同理的,选一个即可。

后记

明明写给自己看的,结果还是写了这么长。而且我隐隐约约中感觉还漏写了什么,还是日后再补上吧。