已安装 windows terminal 但界面单调,需依次完成五步美化:一、安装 terminal 与 powershell 7;二、部署 nerd fonts 字体;三、安装 oh-my-posh 并初始化主题;四、配置背景图与透明度;五、优化启动性能。

如果您已安装 Windows Terminal,但界面仍为默认单调样式,缺少图标、主题与个性化配色,则说明尚未完成核心美化配置。以下是实现完整 Terminal 美化的具体操作步骤:
一、安装 Windows Terminal 与 PowerShell 7
Windows Terminal 并非系统内置,需单独安装以替代传统控制台;PowerShell 7 提供现代脚本能力与模块兼容性,是 oh-my-posh 正常运行的基础环境。
1、打开 Microsoft Store,搜索 Windows Terminal,点击“获取”完成安装。
2、在 Microsoft Store 中同步搜索并安装 PowerShell(确保版本为 7.4 或更高)。
3、安装完成后,按 Win + R 输入 wt 启动终端,确认配置文件列表中已显示 PowerShell 条目。
二、部署 Nerd Fonts 字体支持图标渲染
Nerd Fonts 是美化前提,原生终端字体无法正确显示 oh-my-posh 所需的 Git 分支符号、电池状态、目录箭头等 Unicode 图标,安装后可彻底解决乱码与方块问题。
1、访问 https://www.nerdfonts.com/font-downloads 下载 CaskaydiaCove Nerd Font 压缩包。
2、解压后全选所有 .ttf 文件,右键选择“为所有用户安装”。
3、启动 Windows Terminal,按 Ctrl + , 打开设置,点击左下角“打开 JSON 文件”,在 defaults 区块内添加或修改:
"font": { "face": "CaskaydiaCove NF" }。
三、安装并初始化 oh-my-posh 主题引擎
oh-my-posh 是终端提示符美化的中枢组件,通过 JSON 主题配置动态注入 Git 状态、执行时间、路径深度、云标识等信息,需与 PowerShell 配置文件深度绑定。
1、以管理员身份运行 PowerShell,执行:
winget install JanDeDobbeleer.OhMyPosh。
2、验证安装成功:
oh-my-posh --version,返回有效版本号即表示就绪。
3、运行 notepad $PROFILE 打开 PowerShell 配置文件;若提示不存在,先执行 New-Item -Type File -Force $PROFILE 创建。
4、在 $PROFILE 文件末尾追加以下任一初始化命令(以 atomic 主题为例):
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATHtomic.omp.json" | Invoke-Expression。
四、配置背景图与透明度增强视觉层次
通过设置本地图片作为背景并调节不透明度,可在保持文本高可读性的前提下显著提升终端观感,该配置作用于所有 Shell 标签页,无需重复设置。
1、准备一张路径不含中文与空格的本地图片,例如:D: erminal-bg.jpg。
2、在 settings.json 的 defaults 对象内插入两行:
"backgroundImage": "D:\terminal-bg.jpg",
"backgroundImageOpacity": 0.35。
3、保存 JSON 文件后关闭并重新启动 Windows Terminal,背景图即时生效。
五、启用快捷操作与性能优化方案
默认配置可能导致 PowerShell 启动延迟,尤其在加载 Terminal-Icons 或频繁调用 oh-my-posh 初始化时;以下两种独立方案可分别应对不同瓶颈。
1、针对 oh-my-posh 加载慢:在 $PROFILE 中替换原初始化行为为静态缓存脚本:
$poshCache = "$env:TEMPposh_init.ps1"; if (!(Test-Path $poshCache)) { oh-my-posh init pwsh --config "$env:POSH_THEMES_PATHtomic.omp.json" --print-full-init | Out-File $poshCache -Encoding UTF8 }; . $poshCache。
2、针对 Terminal-Icons 卡顿:采用按需加载方式,仅在执行 ls 时触发图标模块:
function ls-icons { if (!(Get-Module -Name Terminal-Icons)) { Import-Module Terminal-Icons }; Get-ChildItem $args }; Set-Alias ls ls-icons -Option ReadOnly -Force。











