Windows 下升级到 PowerShell 7 并配置智能补全美化

本文最后更新于 2026年1月26日 晚上

前言

Windows 系统自带的 PowerShell 5.1 已经显得有些过时了。在日常使用中,你可能会遇到中文乱码、命令补全不够智能、终端界面单调等问题。PowerShell 7 作为微软推出的新一代跨平台终端,不仅完全兼容旧版本的大部分功能,还带来了更好的性能表现和诸多现代化特性。

本文将从零开始,带你打造一个既美观又实用的 PowerShell 7 环境。完成配置后,你将拥有一个支持智能补全、命令预测、Git 状态显示,并且不会出现乱码的现代化终端。

安装 PowerShell 7

首先需要安装 PowerShell 7。最简单的方式是使用 Windows 自带的包管理器 Winget。打开现有的任意终端(按 Win + X 然后选择”终端”),输入以下命令:

1
winget install Microsoft.PowerShell

安装过程会在几分钟内完成。安装完成后,可以在开始菜单中搜索”PowerShell 7”来启动,或者在任意终端中输入 pwsh 命令。为了确认安装成功,运行 $PSVersionTable 命令,你应该能看到版本号显示为 7.x 以上。

为了让 PowerShell 7 成为日常使用的默认终端,建议在 Windows Terminal 的设置中进行配置。按 Ctrl + , 打开设置界面,在”启动”选项卡中找到”默认配置文件”,然后从下拉列表中选择”PowerShell”(注意不是”Windows PowerShell”)。这样以后每次打开终端时,就会自动使用 PowerShell 7 了。

设置默认终端

美化终端界面

默认的 PowerShell 提示符只显示一个简单的路径和大于号,看起来比较单调。Oh My Posh 是一个强大的提示符主题引擎,可以让终端变得更加美观,还能显示 Git 分支、命令执行时间等实用信息。使用winget安装

1
winget install JanDeDobbeleer.OhMyPosh

或直接在微软商店下载即可

屏幕截图 2026-01-25 171042.png

安装完成后需要重启终端让环境变量生效。

字体配置

不过在应用主题之前,还有一个重要的准备工作——安装支持图标显示的字体。Oh My Posh 的主题中大量使用了特殊图标来美化界面,比如 Git 分支符号、文件夹图标等。如果使用普通字体,这些图标会显示为方框或乱码。

这里推荐使用 MesloLGS NF 字体,这是 Powerlevel10k 项目专门定制的字体,对各种图标和符号的支持非常完善。Oh My Posh 可以帮你自动安装这个字体:

1
oh-my-posh font install meslo

如果你想手动下载安装,可以访问 Powerlevel10k 的字体仓库下载以下四个文件:

下载后双击每个文件点击”安装”即可。当然,如果你对其他 Nerd Font 字体感兴趣,也可以从 Nerd Fonts 官网 下载 CaskaydiaCove NF、FiraCode NF 或 JetBrainsMono NF 等字体。

字体安装好之后,需要在 Windows Terminal 中进行配置。按 Ctrl + , 打开设置,在左侧菜单选择”配置文件”下的”PowerShell”,然后点击”外观”选项卡,在字体下拉框中选择刚才安装的 MesloLGS NF。保存设置后,终端就可以正确显示各种图标了。

VS Code 中的字体配置

如果你经常在 VS Code 的集成终端中使用 PowerShell,也需要配置字体。按 Ctrl + Shift + P 打开命令面板,输入”Preferences: Open User Settings (JSON)”打开配置文件,然后添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
{
"terminal.integrated.defaultProfile.windows": "PowerShell",
"terminal.integrated.fontFamily": "MesloLGS NF",
"terminal.integrated.fontSize": 14,
"terminal.integrated.fontWeight": "normal",
"terminal.integrated.env.windows": {
"PSExecutionPolicyPreference": "RemoteSigned"
},
"files.encoding": "utf8",
"files.autoGuessEncoding": false
}

这些配置不仅设置了终端字体,还确保了 PowerShell 7 作为默认终端,并且将文件编码统一设置为 UTF-8,避免中文乱码问题。保存后重新打开 VS Code 的终端,配置就会生效。

选择和应用主题

Oh My Posh 内置了数十个精美主题,可以通过 Get-PoshThemes 命令预览所有主题。每个主题会直接在终端中实时渲染,你可以根据自己的喜好选择。比较流行的主题有 paradox、agnoster、atomic、powerlevel10k_rainbow 等。

配置 PowerShell 配置文件

PowerShell 通过配置文件(Profile)来自动加载个性化设置。你可以通过 $PROFILE 变量查看配置文件的位置,通常是 C:\Users\你的用户名\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

如果这个文件还不存在,可以用以下命令创建:

1
New-Item -Path $PROFILE -Type File -Force

然后用编辑器打开它(推荐使用 VS Code):

1
code $PROFILE

接下来需要在配置文件中添加启动配置,让每次打开终端时都能自动加载 Oh My Posh 主题和智能补全功能。

智能补全与命令预测

PowerShell 7 的一个强大特性就是智能补全和命令预测功能,类似于 Fish Shell 的体验。要实现这个功能,需要安装和配置 PSReadLine 模块和 CompletionPredictor 模块。

首先升级 PSReadLine 到最新版本:

1
Install-Module PSReadLine -Force -SkipPublisherCheck

然后安装 CompletionPredictor 增强型补全预测器:

1
Install-Module CompletionPredictor -Scope CurrentUser -Force

这两个模块安装完成后,可以在配置文件中进行设置。下面是一个完整的配置示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# oh-my-posh
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/amro.omp.json" | Invoke-Expression

# PSReadLine - 类似fish的智能补全
Import-Module PSReadLine
Set-PSReadLineOption -PredictionSource HistoryAndPlugin
Set-PSReadLineOption -PredictionViewStyle ListView
Set-PSReadLineOption -EditMode Windows
Set-PSReadLineKeyHandler -Key Tab -Function MenuComplete
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward

# CompletionPredictor
Import-Module CompletionPredictor

这个配置做了以下几件事:首先初始化 Oh My Posh 主题(这里使用的是 amro-cus 主题,你可以替换成任何你喜欢的主题文件名);然后配置 PSReadLine 模块,开启基于历史记录和插件的智能预测,使用列表视图显示补全建议,并且设置了一些便捷的快捷键;最后导入 CompletionPredictor 模块来增强补全功能。

配置完成后,保存文件并运行 . $PROFILE 重新加载配置,或者直接重启终端。你会立即感受到变化:当你输入命令时,终端会自动显示基于历史记录的灰色建议文字;按 Tab 键会弹出一个列表菜单显示所有可能的补全选项;按上下箭头可以根据当前输入搜索历史命令。

常见问题

脚本执行策略问题

如果在加载配置文件时遇到”无法加载文件,因为在此系统上禁止运行脚本”的错误,这是因为 Windows 默认的安全策略阻止了脚本执行。解决方法是修改执行策略:

1
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

这个命令会允许运行本地脚本,同时保持对下载脚本的安全检查。

图标显示异常

如果配置完成后仍然看到方框或乱码,首先确认是否正确安装了 Nerd Font 字体,然后检查终端的字体设置是否选择了正确的字体。对于 Windows Terminal,需要在配置文件的外观选项中设置字体;对于 VS Code,需要在 settings.json 中设置 terminal.integrated.fontFamily。另外,字体更改后需要重启终端或编辑器才能生效。

中文乱码

如果遇到中文显示乱码的问题,通常是编码设置不正确导致的。在 PowerShell 配置文件的开头添加以下代码:

1
2
3
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8
$PSDefaultParameterValues['*:Encoding'] = 'utf8'

同时确保 VS Code 的配置文件中设置了 "files.encoding": "utf8"

进阶工具推荐

如果你想进一步提升命令行体验,可以安装一些现代化的替代工具。比如 eza 可以替代传统的 ls 命令,提供彩色输出和 Git 状态集成;bat 是更好的 cat 命令替代品,支持语法高亮;fd 是现代化的 find 命令,速度更快使用更简单;ripgrep 是极速的代码搜索工具;fzf 提供了强大的命令行模糊查找功能。

这些工具都可以通过 Winget 安装:

1
2
3
4
5
winget install eza-community.eza
winget install sharkdp.bat
winget install sharkdp.fd
winget install BurntSushi.ripgrep.MSVC
winget install fzf

安装后可以在配置文件中设置别名,让这些新工具无缝替代原有命令:

1
2
3
Set-Alias -Name ls -Value eza
Set-Alias -Name cat -Value bat
Set-Alias -Name find -Value fd

参考资源


Windows 下升级到 PowerShell 7 并配置智能补全美化
https://yasing.top/posts/6eac4a2.html
作者
Yasing
发布于
2026年1月25日
更新于
2026年1月26日
许可协议