PowerShell 7 + Oh My Posh 终端美化指南

PowerShell 7 + Oh My Posh 终端美化指南

1. 前言

Windows 自带的 PowerShell 5.1 功能有限,界面也比较朴素。通过安装 PowerShell 7Oh My Posh,我们可以获得一个更强大、更美观的终端环境。

2. CMD、PowerShell 5.1、PowerShell 7 的区别

在开始安装之前,先了解 Windows 上三种命令行工具的区别:

1. 综合对比

项目CMDPowerShell 5.1PowerShell 7
定位旧时代遗留Windows 专属跨平台增强版
可执行文件cmd.exepowershell.exepwsh.exe
基础框架DOS.NET Framework 4.x.NET 8+ (跨平台)
是否内置Windows 自带Windows 自带需手动安装
对象管道
脚本语言有限完整完整+
跨平台
三元运算符
并行处理
性能一般一般更好(快 30-50%)
Linux 命令兼容❌(仅部分别名)
推荐场景简单命令、兼容旧脚本系统管理、Windows 专用脚本开发、跨平台脚本、性能要求高

2. 三者关系说明

PowerShell 7 不是 Windows PowerShell 5.1 的升级,而是独立安装的新版本。安装后,powershell.exe 仍然保留,不会覆盖现有环境。三者 完全共存,互不冲突:

  • pwsh 启动 PowerShell 7
  • powershell 启动旧版 5.1(向后兼容)
  • cmd 启动命令提示符

简单说:PowerShell 7 是 PowerShell 5.1 的 增强版 + 跨平台版,功能更强大,性能更好,可以完全替代 CMD 和 PowerShell 5.1 的所有功能。

3. PowerShell 7 与 Linux 命令的关系

PowerShell 7 的 “Linux 兼容” 只是别名映射

1
2
3
4
5
6
7
8
9
10
11
12
13
# 这些 Linux/Unix 命令在 PowerShell 7 中可以使用(通过别名)
ls/dir # 列出目录内容 → Get-ChildItem
cd # 切换目录 → Set-Location
cp/copy # 复制文件 → Copy-Item
mv/move # 移动文件 → Move-Item
rm/del/rd # 删除文件/目录 → Remove-Item
cat/type # 查看文件内容 → Get-Content
pwd # 显示当前目录 → Get-Location
sc # 写入文件内容 → Set-Content
ac # 追加文件内容 → Add-Content
ps # 查看进程 → Get-Process
kill # 终止进程 → Stop-Process
start # 启动进程/程序 → Start-Process

但很多 Linux 命令无法使用

Linux 命令PowerShell 7 等效命令
grepSelect-String
findGet-ChildItem
awk对象管道
sed-replace
chmodicacls
psGet-Process
topGet-Process
ifconfigGet-NetIPAddress

如果想用 Linux 命令操作 Windows,其实更推荐 WSL,当然二者结合更好!

3. 为什么选择 Scoop?

安装 PowerShell 7 常见的方式有 3 种,但我更推荐使用 Scoop

方式安装路径权限要求环境隔离管理便利性卸载残留
Scoop~/scoop/apps/ 用户目录无需管理员完全独立,不写系统 PATH/注册表scoop update * 一键更新无残留
WingetC:\Program Files\需管理员标准系统安装一般可能有
微软商店C:\Program Files\WindowsApps\无需沙盒化但路径深、难访问被动更新,不可控较少

1. Scoop 的介绍

Scoop 是 Windows 上的 命令行软件管家,类似于 Linux 的 apt 或 macOS 的 Homebrew。核心特点:

  • 不弹窗广告:安装过程全自动,一行命令搞定。
  • 不污染系统:软件默认装在独立目录(C:\Users\用户名\scoop),不写注册表,卸载直接删文件夹。
  • 自动配环境变量:装完工具(如 gccgitpython)直接能在终端用,不需要手动配置 PATH。

核心优势:一切都是用户态 —— 不碰 Program Files、不写系统注册表、所有软件集中在一个目录,换机器或重装系统时把 ~/scoop 拷走即可。

2. Scoop vs Winget

Windows 现在也有官方包管理器 Winget,两者对比如下:

项目ScoopWinget
开发者喜欢程度
软件隔离更好一般
环境变量管理很方便一般
GUI 软件支持支持更多
微软官方
适合程序员非常适合适合

很多开发者会同时安装 Scoop 和 Winget,因为有些软件只有其中一个仓库有。

4. 安装步骤

1. 安装 Scoop

powershell 中执行:

1
2
3
# 设置当前用户的脚本执行策略为 RemoteSigned,允许运行本地脚本和已签名的远程脚本;并从 Scoop 官网下载安装脚本并执行
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
irm get.scoop.sh | iex

安装路径在 C:\Users\你的用户名\scoop,全程不写注册表、不碰系统目录。Scoop 安装时会自动拉取以下依赖,不能删除

应用作用
7zip压缩/解压工具,Scoop 用它解压各种安装包
darkScoop 内部依赖,用于处理文本文件编码转换
innounpInno Setup 安装包解包工具,Scoop 用它解压某些 exe 安装包
oh-my-posh终端主题引擎,美化提示符
pwshPowerShell 7 本体

7zip、dark、innounp 是 Scoop 的运行时依赖,删除会导致 scoop install / scoop update 全部失败!

2. 安装 PowerShell 7

1
2
# pwsh 是 PowerShell 7 在 Scoop 中的包名
scoop install pwsh

3. 安装 Oh My Posh

1
2
# Oh My Posh 是一个终端主题引擎,用于美化提示符
scoop install oh-my-posh

4. 安装 Nerd Fonts 字体

Oh My Posh 需要使用 Nerd Fonts 字体才能正确显示图标,以管理员身份安装字体(重要!):

1
2
# 以管理员身份运行 PowerShell,安装 Meslo 字体到系统级
oh-my-posh font install meslo

⚠️ 必须以管理员身份安装字体! 如果以普通用户身份安装,字体只会安装到用户字体目录,在某些特定场景中会导致崩溃退出,如:终端标签栏点击 (下拉按钮)直接选择 PowerShell 7 就会导致崩溃闪退!

官方说明:When running as root/administrator, the fonts will be installed system-wide. When running as a regular user, the fonts will be installed in the user’s font directory. By default, Oh My Posh installs the .ttf version of the font in case multiple versions are available.

配置 Windows Terminal 字体:

  1. 打开 Windows Terminal 设置(任意终端标签栏右侧 (下拉按钮)的设置)
  2. 选择 PowerShell 配置文件(注意:这里的 PowerShell 7 就叫 PowerShell ,而 Windows PowerShell 5.1 则是 Windows PowerShell)
  3. 进入 外观 设置
  4. 将字体改为 MesloLGM Nerd Font
  5. 保存

配置 VS Code 终端字体:

如果在 VS Code 中使用终端,需要在 settings.json 中添加:

1
"terminal.integrated.fontFamily": "MesloLGM Nerd Font Mono"

注意:这里是为 VS Code 终端(PowerShell 7)配置的字体,可以更改为自己已安装且喜欢的字体。

5. 配置 PowerShell 7

创建配置文件:

1
2
3
# 确保 PowerShell 7 的配置文件存在
# $PROFILE 指向 C:\Users\用户名\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
New-Item -Path $PROFILE -Force

用记事本打开配置文件:

1
notepad $PROFILE

在配置文件中添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 初始化 Oh My Posh,加载主题
oh-my-posh init pwsh --config "C:\Users\你的用户名\scoop\apps\oh-my-posh\当前版本号\themes\1_shell.omp.json" | Invoke-Expression

# 启用预测功能(历史 + 插件)
Set-PSReadLineOption -PredictionSource HistoryAndPlugin

# 行内灰色预测(默认),也可选择列表式
Set-PSReadLineOption -PredictionViewStyle InlineView
# Set-PSReadLineOption -PredictionViewStyle ListView # 列表式(更清晰)

# 其他好用的设置
Set-PSReadLineOption -EditMode Windows # Windows 风格按键
Set-PSReadLineKeyHandler -Key Tab -Function MenuComplete # Tab 显示菜单
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward

如果你不清楚,可以先参考我的配置:

1
2
3
oh-my-posh init pwsh --config "C:\Users\minbit\scoop\apps\oh-my-posh\29.12.0\themes\1_shell.omp.json" | Invoke-Expression
Set-PSReadLineOption -PredictionSource HistoryAndPlugin
Set-PSReadLineOption -PredictionViewStyle InlineView

我使用的是 1_shell 主题 + MesloLGM Nerd Font Mono 字体,当然你也可以选择其他主题和字体,Oh My Posh 提供有 100+ 款主题!详见 Oh My Posh 内置主题

6. PowerShell 7 的强大补全功能

PowerShell 7 拥有非常强大的终端补全功能,远超传统 CMD 和 PowerShell 5.1,基本操作:

  • 输入命令前几个字母 → 后面出现 灰色预测文本
  • → 右箭头:接受完整预测

更多智能补全请自行 Google~补全原理说明:

  • 不是 AI:当前的预测功能是基于 历史记录 + 插件 驱动的。
  • 历史记录:根据曾经执行过的命令进行预测。
  • 插件扩展:可以安装 CompletionPredictor 插件获得更智能的补全。
  • 未来展望:微软可能会集成 AI 功能(如 Copilot),实现更智能的命令预测。

安装 CompletionPredictor 插件(更智能):

1
2
3
4
5
# 安装 CompletionPredictor 插件
Install-Module -Name CompletionPredictor -Scope CurrentUser

# 在配置文件中添加(可选)
Import-Module CompletionPredictor

安装后,补全会更加智能,能够根据上下文提供更准确的建议。

保存后执行以下命令使配置生效:

1
. $PROFILE

. 是点源操作符,在当前会话中重新加载配置文件,等价于重启终端。

7. 验证安装

在命令行输入 pwsh 回车,如果能进入 PowerShell 7,说明安装成功。

5. 添加右键菜单

如果想在文件资源管理器中右键文件夹直接用 PowerShell 7 打开,可以运行以下注册表文件:

  • 文件夹右键:C:\Users\你的用户名\scoop\apps\pwsh\current\install-explorer-context.reg
  • 文件右键:C:\Users\你的用户名\scoop\apps\pwsh\current\install-file-context.reg

直接双击运行即可。

6. 注意事项

1. 更新 PowerShell 7

更新 PowerShell 7 时,需要在 旧版 Windows PowerShell (powershell.exe) 中执行:

1
scoop update pwsh

在 PowerShell 7 中更新自己可能会冲突。

2. 如何进入和退出 PowerShell 7

  • 进入:在任意终端输入 pwsh 回车。
  • 退出:输入 exit 回车。

7. 进阶:Scoop 软件仓库(Bucket)

Scoop 把软件列表叫做 Bucket。默认只启用 main 仓库,可以添加更多:

1. 添加 extras 仓库

1
scoop bucket add extras

安装更多软件:

1
2
3
scoop install everything    # 文件搜索工具
scoop install vscode # Visual Studio Code
scoop install typora # Markdown 编辑器

2. 添加 versions 仓库

1
scoop bucket add versions

安装特定版本:

1
scoop install python311     # 安装 Python 3.11

参考资料