Windows Terminal 美化 / PowerShell 美化: oh-my-posh 主题安装和使用
关键词: nerd-font; oh-my-posh; posh; powerline-font; powershell; scoop; winget最终效果预览说明事项本文与网络上多数介绍 oh-my-posh 的文章的不同之处:其他博客提到的安装命令已过时, 会被引导到 “官方迁移页面” (如下图). 本文是根据 oh-my-posh 官网给出的最新安装方式来安装. (截至 2022 年 5
关键词: nerd-font; oh-my-posh; posh; powerline-font; powershell; scoop; winget
最终效果预览
说明事项
本文与网络上多数介绍 oh-my-posh 的文章的不同之处:
- 其他博客提到的安装命令已过时, 会被引导到 “官方迁移页面” (如下图). 本文是根据 oh-my-posh 官网给出的最新安装方式来安装. (截至 2022 年 5 月)
- 对所有命令都添加了注释, 帮助大家来理解.
- 增加了主题, 字体的安装和说明事项.
- 尽可能多地提供配图.
安装
安装 oh-my-posh
-
以管理员身份运行 powershell
-
输入以下命令
# 安装 winget install oh-my-posh # 此外, 如果要检查升级, 则使用下面命令 winget upgrade oh-my-posh
上述命令将安装以下内容:
- oh-my-posh.exe
- themes: 最新的 oh-my-posh 主题集. 在线查看: https://ohmyposh.dev/docs/themes
- 在你的用户环境变量中会新增一个 “POSH_THEMES_PATH”:
- 重启 powershell 即可生效
安装更多插件 (可选)
见本文 扩展 部分.
选择主题
预览主题
方式 1: 官方在线预览: https://ohmyposh.dev/docs/themes
方式 2: 在 powershell 中输入 Get-PoshThemes
命令.
方式 3: 本地已安装的 oh-my-posh 主题, 可以在这个路径找到:
C:\Users\<UserName>\AppData\Local\Programs\oh-my-posh\themes
(ps: 这个路径就是环境变量 - “POSH_THEMES_PATH” 的值.)
可以看到主题多达将近 100 个.
怎么应用主题
假设要应用 “M365Pricess” 主题:
在主题文件夹 (C:\Users\<UserName>\AppData\Local\Programs\oh-my-posh\themes
) 下可以找到它的完整文件名:
如果只在当前 powershell 进程中应用, 则输入下面的命令回车立即生效:
oh-my-posh init pwsh --config $env:POSH_THEMES_PATH\M365Princess.omp.json | Invoke-Expression
# 此外, 要想切换到其他主题, 只需更改文件名即可:
oh-my-posh init pwsh --config $env:POSH_THEMES_PATH\bubbles.omp.json | Invoke-Expression
如果要在全局生效, 那么我们需要在 $PROFILE
文件中写入该值:
$PROFILE
文件的路径为C:\Users\<UserName>\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
(如果文件不存在, 则自己创建一个)- 用记事本打开
- 往里面添加一行刚才的命令
- 重启 powershell, 即可看到效果
此外, 上面的 4 个步骤, 也可以通过命令行来全部完成. 这也是很多网上的博客中给出的命令:
# 检查 $PROFILE 文件是否存在, 如果不存在则新建空文件
if (!(Test-Path -Path $PROFILE )) { New-Item -Type File -Path $PROFILE -Force }
# 用记事本打开
notepad $PROFILE
扩展
安装推荐字体
由于 oh-my-posh 主题包含了一些特殊字符, 有些字体会产生乱码.
使用下面推荐的字体不会出现乱码 (按推荐度排序):
- nerd font: https://www.nerdfonts.com/
- 等距更纱黑体
- powerline: https://github.com/powerline/fonts
注:
-
不知道为什么, 我自己测试了等距更纱黑体和 fira mono for powerline 字体仍然会出现乱码. 使用 nerd 字体没有此问题.
-
nerd 有多种字族供选择. 在这个网站可以预览所有字体: https://www.programmingfonts.org/#font3270
ps: 笔者个人比较喜欢 fira-mono 和 jetbrains-mono.
此外, 考虑到笔者经常使用 python rich 库, fira-mono 的边框字符的效果不是很好, jetbrains-mono 则非常完美.
安装更多插件
TODO
其他说明
我安装了旧的 oh-my-posh, 在 powershell 启动时会出现相关报错
报错截图:
解决方法:
根据截图中的 迁移建议 来操作, 即可卸载旧的 oh-my-posh 模块.
本文对官方的迁移建议进行了适当翻译. 如下步骤:
-
以管理员身份运行 powershell
-
移除相关的环境变量及其缓存
Remove-Item $env:POSH_PATH -Force -Recurse
这是一个可选的操作. 如果你的环境变量中没有
POSH_PATH
, 上述命令没有效果, 但也不会有副作用. -
卸载旧版 powershell 模块
这里解释一下, oh-my-posh 的作者以前是维护两个源, 一个是最新的 winget 获取方法 (也就是正文介绍的安装方法), 另一个是 powershell module (也就是很多旧博客提供的
Install-Module
命令, 很显然, 现在 (2022年) 已经彻底不支持了, 只会导致报错.)所以我们要做的是卸载掉引起报错的 powershell module:
Uninstall-Module oh-my-posh -AllVersions
-
从
$PROFILE
文件中也移除它的导入# 用记事本打开 `$PROFILE` 文件 notepad $PROFILE
找到 “Import-Module oh-my-posh” 这一行, 把它删掉后保存.
升级 PowerShell 到 7.x
参考: https://aka.ms/PSWindows
从 这里 下载最新的 msi 安装包.
msi 文件可以双击来安装.
参考
按推荐的阅读优先级排列.
- https://ohmyposh.dev/docs/installation/windows
- https://ohmyposh.dev/docs/installation/customize
- https://sspai.com/post/52907
- https://vector.today/posts/a1abbbfe/
- https://sspai.com/post/63233
- https://ohmyposh.dev/docs/migrating
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)