前言
Oh My Posh是一款终端个性化工具,支持 Windows、Linux(WSL)、macOS 系统上的 PowerShell、bash、zsh 等终端,可以配置不同主题达到个性化的效果。
今天上班忘记拿吃饭的家伙了 => 电脑,回家拿已来不及。还好公司有备用电脑,但是看惯了 Mac 的终端, Windows 系统的终端实在是太丑了,于是想到了终端个性化工具:oh-my-posh
,折腾一番有了本文。
最终效果图如下
安装 Windows Terminal
win11 自带了 Windows Terminal 不用自己再装,如果你的系统没有 Windows Terminal ,需要先去 Microsoft Store 中下载:
安装 oh-my-posh
oh-my-posh 应该是对标 oh-my-zsh 的工具,其安装步骤如下:
- 使用系统管理员打开 Windows Terminal
- 执行安装命令:
winget install JanDeDobbeleer.OhMyPosh -s winget
- 使用系统管理员重新打开 Windows Terminal,使得 oh-my-posh 命令生效
- 安装必要字体(否则某些 icron 会乱码),执行命令
oh-my-posh font install
,此时会出现字体的候选列表,官方推荐安装Meslo
:
配置 oh-my-posh
安装完成后,现在即使打开 Windows Terminal 是没有任何效果的,需要再做一下配置。
配置运行 Windows Terminal 时自动加载 oh-my-posh:
执行命令 echo $PROFILE
查看 powershell 的配置文件路径,第一次配置肯定时不存在的,需要手动创建这个文件
- 在目录
C:Users用户名DocumentsWindowsPowerShell
下 - 新建
Microsoft.PowerShell_profile.ps1
文件 内容如下
C:\Users\用户名\AppData\Local\Programs\oh-my-posh\bin\oh-my-posh.exe init pwsh --config $env:POSH_THEMES_PATHmontys.omp.json | Invoke-Expression
Import-Module posh-git # 引入 posh-git
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
- 注意 用户名 请替换为你的用户名
- 之后可以使用
notepad $PROFILE
快速打开配置文件
修改这个文件内容:
- 在其中添加一行:
oh-my-posh init pwsh --config $env:POSH_THEMES_PATHmontys.omp.json | Invoke-Expression
- 这行代码的意思是: 使用 montys.omp.json 配置文件初始化 oh-my-posh
- 其中的
montys.omp.json
就是 oh-my-posh 的主题样式,可以到官方的主题列表选择自己喜欢的主题替换上去
这个时候重新启动 Windows Terminal,就会自动加载这个配置文件,进入 oh-my-posh 终端
这里注意,有可能你重新打开 Windows Terminal 时,会报错: 无法加载文件 .....Microsoft.PowerShell_profile.ps1,因为在此系统上禁止运行脚本
。
这里的 Microsoft.PowerShell_profile.ps1
就是你刚刚修改的配置文件,其实它是以 ps1 形式存在的一个 powershell 脚本。
这个报错是因为你的 PowerShell 限制了执行策略,不允许随便执行第三方脚本。
解决方法也很简单,只需要以管理员权限打开 Powershell:
- 执行
Set-ExecutionPolicy RemoteSigned
修改策略 - 执行
Get-ExecutionPolicy
确认策略是否已修改
此时再重新打开 Windows Terminal 就可以成功进入 oh-my-posh 了
配置字体
此时 oh-my-posh 一般是乱码的,原因是未设置字体。
- 在 Windows Terminal 顶部最右边,依次点击
﹀
->>
设置->>
Windows Powershell->>
外观 - 在【字体】中选择刚刚安装的 Meslo:
MesloLGM Nerd Font
重新打开 Windows Terminal,至此 oh-my-posh 已配置完成。
更换主题
如果你需要更换其它主题,可以去网站浏览也可以使用命令查看(初始化之后才能使用下面的命令):
代码语言:javascript复制Get-PoshThemes
在网站上浏览:https://ohmyposh.dev/docs/themes
这些主题通常都已经默认下载了,位于:
代码语言:javascript复制C:Users用户名AppDataLocalProgramsoh-my-poshthemes
你只需要启用它们即可,编辑 PowerShell 的配置文件并修改 oh-my-posh 的 init 那一行即可:
代码语言:javascript复制 notepad $PROFILE
将jandedobbeleer
换成你喜欢的主题名称即可:
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/jandedobbeleer.omp.json" | Invoke-Expression
安装Git扩展
posh-git 是一款专为 Windows 系统的 PowerShell 设计的 Git 扩展模块。它的主要目标是在 PowerShell 中提供更为友好、直观的 Git 命令行界面,通过整合 Git 相关的信息到命令提示符中,并提供方便快捷的键绑定,使得日常 Git 操作更为高效、直观。
安装
代码语言:javascript复制Install-Module -Name posh-git -Scope CurrentUser
安装完成后,重启 PowerShell 并输入以下命令启用 posh-git:Import-Module posh-git
不生效的话可以在前面的配置文件 Microsoft.PowerShell_profile.ps1
中追加以下内容
Import-Module posh-git # 引入 posh-git
历史命令联想
oh-my-zsh
有一个很便利的功能就是输入部分命令后、按 ↑
或 ↓
就可以联想历史的完整命令,其实在 oh-my-posh
中也能实现。
首先在 PowerShell
执行以下命令安装插件:
Install-Module -Name PowerShellGet -Force
Install-Module PSReadLine -AllowPrerelease -Force
然后修改前面的配置文件 Microsoft.PowerShell_profile.ps1
,在末尾追加以下内容:
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
卸载
代码语言:javascript复制Uninstall-Module oh-my-posh -AllVersions
配置cmd终端使用oh-my-posh
首先,安装clink工具,双击exe安装包即可安装
PS: 请记住 clink
的安装目录,下一步会用到~
然后,进入 clink
安装目录,创建 oh-my-posh.lua
文件,添加如下内容:
load(io.popen('oh-my-posh init cmd'):read("*a"))()
或者用你自己设置的主题不用默认的
代码语言:javascript复制load(io.popen('oh-my-posh init cmd --config C:\Users\用户名替换\AppData\Local\Programs\oh-my-posh\themes\montys.omp.json'):read("*a"))()
配置VSCode终端使用oh-my-posh
在 VScode 里使用终端,可能会出现乱码或者图标不显示情况,也是设置一下字体就行。
直接输入你上面配置的 oh-my-posh
字体 如: MesloLGM Nerd Font
使用体验
- 优点
- oh-my-posh 总体还不错,能够方便的展示 git 相关的信息
- 缺点
- 性能拉跨,每次终端可能需要0.5s到2s之间的延迟卡顿,相比于 linux 上的 shell 要慢不少
有就行了,要啥自行车~