windows Shell 窗口美化

一、工具准备和参考文档

1.工具准备

  • WindowsTerminal:本次配置的终端工具,当然也可将本文作为参考
  • WSL2:Windows Linux子系统

2.参考文档

二、WindowsTerminal的基础设置(必做步骤)

1.字体设置

首先去 Github 下载 nerd-fonts 字体。字体设置的目的是为了保证在安装了 oh-my-posh 后不产生特殊字符显示的问题。

下载releases的FiraCode.zip:FiraCode3.3.0.zip 其他版本可自行下载。下载完成后解压、安装字体。

WindowsTerminal 中设置字体:

2.设置WindowsTerminal背景美化(可选)

三、PowerShell命令行美化

提示:请提前以管理员身份运行 PowerShell

1. 安装 Powershell 7

相比于 Windows 默认提供的 Powershell,Powershell 7 拥有以下几个优势:

  1. 支持跨平台使用,增强了其灵活性和适用范围。
  2. 提供了更优越的性能表现。
  3. 处于持续更新状态,保证了功能的不断完善和安全性的提升。

简而言之,Powershell 7 是 Powershell 的升级版。

官网地址:

PowerShell 文档 - PowerShell

Github 地址:

https://github.com/PowerShell/PowerShell

下载地址:

  1. https://github.com/PowerShell/PowerShell/releases/
  2. installing-powershell-on-windows

2.安装 Terminal(终端)

微软商店(Microsoft Store) 当中安装即可。

安装地址(懒得搜点这里的链接):Windows Terminal - Microsoft Apps

img

3. 安装 Oh my posh

如上,从微软商店安装。
安装地址(懒得搜点这里的链接):oh-my-posh - Microsoft Apps

img

4 安装字体

由于 Oh My Posh 的众多主题广泛应用了各式图标,但并非所有字体都对这类图标提供支持,导致显示可能出现问题。

官方推荐使用Meslo LGM NF字体以获得最佳体验,可通过点击上述链接下载并安装该字体。此外,如果想尝试更多种的 NF 字体,可以进下面链接查看更多种的。

Nerd Fonts - Iconic font aggregator, glyphs/icons collection, & fonts patcher

我个人,比较喜欢使用 JetBrainsMono Nerd Font,因为日常写 Python 需要使用 PyCharm,所以这个字体看习惯了,也不想使用其他字体了~

img

5. 配置

1. 创建 Powershell 7 的配置文件

输入如下命令,下面的命令会先检查配置文件存不存在,如果不存在才创建:

1
2
3
if (-not (Test-Path $PROFILE)) {
New-Item -Path $PROFILE -Type File -Force
}

接下来,打开配置文件(以下示例展示的是使用记事本进行操作)。

1
notepad $PROFILE

2. 输入 Oh my posh 的配置

在打开的文件中输入如下命令:

1
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/half-life.omp.json" | Invoke-Expression

这意味着每次启动 PowerShell 时,都会自动执行上述命令。该命令中引用的 JSON 文件是 Oh My Posh 的主题配置文件。

Oh My Posh 内置了众多主题,大家可以根据个人偏好选择喜爱的一款。如果想浏览所有预设主题的样式,可通过下方链接进行查看:

Themes | Oh My Posh

完成以上步骤后,将获得一个初步美化过的 Terminal 界面:

image-20250908114550498

6 常见错误

  1. 错误1 ,在编辑好5.2 后重新打开终端出现一下错误
    image-20250908114904303

解决方法:

  1. 执行 set-executionpolicy remotesigned

  2. 如果无异常字符出现,则设置成功。如果有以下提示,则按照步骤3执行

    1
    set-executionpolicy : windows powershell 已成功更新你的执行策略,但在更具体的作业域中定义的策略覆盖了该设置。由于发生覆盖,你的外壳程序将保留其当前的有效执行策略 bypass。请键入“get-executionpolicy -list”以查看你的执行策略设置。有关详细信息,请参阅“get-help set-executionpolicy”。
  3. 查看当前执行策略

    首先,使用 get-executionpolicy -list 命令查看当前所有作用域的执行策略。

    1
    get-executionpolicy -list

    输出示例:

    1
    2
    3
    4
    5
    6
    7
    Scope ExecutionPolicy
    ----- ---------------
    MachinePolicy Undefined
    UserPolicy Undefined
    Process Undefined
    CurrentUser Restricted
    LocalMachine RemoteSigned

    设置特定作用域的执行策略

    1
    set-executionpolicy remotesigned -scope currentuser

    验证设置是否成功

    1
    get-executionpolicy -scope currentuser

    *输出应为 RemoteSigned,表示设置成功。*

    1
    2
    3
    4
    5
    6
    7
    8
    wangbin in C:\Users λ get-executionpolicy -list
    Scope ExecutionPolicy
    ----- ---------------
    MachinePolicy Undefined
    UserPolicy Undefined
    Process Undefined
    CurrentUser RemoteSigned
    LocalMachine RemoteSigned

扩展

1. 安装Git扩展

posh-git 是一款专为 Windows 系统的 PowerShell 设计的 Git 扩展模块。它的主要目标是在 PowerShell 中提供更为友好、直观的 Git 命令行界面,通过整合 Git 相关的信息到命令提示符中,并提供方便快捷的键绑定,使得日常 Git 操作更为高效、直观。

安装

1
Install-Module -Name posh-git -Scope CurrentUser

安装完成后,重启 PowerShell 并输入以下命令启用 posh-git:Import-Module posh-git

不生效的话可以在前面的配置文件 Microsoft.PowerShell_profile.ps1中追加以下内容

1
Import-Module posh-git # 引入 posh-git

2.历史命令联想

oh-my-zsh 有一个很便利的功能就是输入部分命令后、按 就可以联想历史的完整命令,其实在 oh-my-posh 中也能实现。

首先在 PowerShell 执行以下命令安装插件:

1
2
Install-Module -Name PowerShellGet -Force
Install-Module PSReadLine -AllowPrerelease -Force

然后修改前面的配置文件 Microsoft.PowerShell_profile.ps1,在末尾追加以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
Import-Module PSReadLine # 历史命令联想

# 设置预测文本来源为历史记录
Set-PSReadLineOption -PredictionSource History
# 设置 Tab 为菜单补全和 Intellisense
Set-PSReadLineKeyHandler -Key "Tab" -Function MenuComplete
# 每次回溯输入历史,光标定位于输入内容末尾
Set-PSReadLineOption -HistorySearchCursorMovesToEnd
# 设置向上键为后向搜索历史记录
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
# 设置向下键为前向搜索历史纪录
Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward

3. 卸载

1
Uninstall-Module oh-my-posh -AllVersions

CMD终端使用oh-my-posh

首先,安装clink工具,双击exe安装包即可安装

PS: 请记住 clink 的安装目录,下一步会用到~

然后,进入 clink 安装目录,创建 oh-my-posh.lua 文件,添加如下内容:

1
load(io.popen('oh-my-posh init cmd'):read("*a"))()

或者用你自己设置的主题不用默认的

1
2
# "$env:POSH_THEMES_PATH/half-life.omp.json"
load(io.popen('oh-my-posh init cmd --config C:\\Users\\用户名替换\\AppData\\Local\\Programs\\oh-my-posh\\themes\\half-life.omp.json'):read("*a"))()

WSL命令行美化

本次以 wsl-ubuntu22.04 版本进行演示

1.安装 homebrew 包管理器

如果不想使用 homebrew ,可以使用oh-my-posh官网提供的 手动安装方式 ,这里我就演示 homebrew 的安装

下载并安装

1
2
3
4
5
6
# 安装 Homebrew 所需环境
sudo apt-get install build-essential procps curl file git
# Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 重启WSL,输入 brew 查看命令是否能正常运行
brew

2.安装 on my posh

安装

1
brew install jandedobbeleer/oh-my-posh/oh-my-posh

安装完成后可以执行 oh-my-posh get shell 查看当前终端类型,如果出现 Segmentation fault 提示,表示安装 on my posh 出现问题,请检查步骤二,重启WSL或者尝试手动安装。

3.选择主题

注意哈这里你得灵活一点,找到 oh-my-posh 的安装目录,不要照抄

查看 on-my-posh 的安装目录

1
2
3
4
5
6
7
# 通过该命令可以跳转到 oh-my-posh 安装目录
cd $(brew --prefix oh-my-posh)
# 输入 pwd 查看当前目录的路径
pwd
# 输入 ll 查看当前目录下的内容
ll
# 应该可以看到 themes 目录

拷贝 themes 文件夹

1
2
3
# 先将 主题文件夹 拷贝至 家目录 /home/{username} 
# 注意哈,拷贝的目标文件夹后面会用到的,这里我放在家目录的themes文件夹下
cp -r /home/linuxbrew/.linuxbrew/opt/oh-my-posh/themes ~/themes

添加主题,这里可以先看下第五步的说明,将如下代码添加到 ~/.bashrc ~/.profile ~/.bash_profile 三个文件的其中之一的结尾,哪个有效果就是哪个,一个个试

1
2
# 注意 ~/ 后面要写你拷贝后 {themes} 的目录,我这里就是~/themes,jandedobbeleer可以换成你喜欢的主题名称例如 wholespace
eval "$(oh-my-posh init bash --config ~/themes/wholespace.omp.json)"

使用体验

  • 优点
    • oh-my-posh 总体还不错,能够方便的展示 git 相关的信息
  • 缺点
    • 性能拉跨,每次终端可能需要0.5s到2s之间的延迟卡顿,相比于 linux 上的 shell 要慢不少

有就行了,要啥自行车~