Oh My Posh是一款终端个性化工具,支持 Windows、Linux(WSL)、macOS 系统上的 PowerShell、bash、zsh 等终端,可以配置不同主题达到个性化的效果。
今天上班忘记拿吃饭的家伙了 => 电脑,回家拿已来不及。还好公司有备用电脑,但是看惯了 Mac 的终端, Windows 系统的终端实在是太丑了,于是想到了终端个性化工具:oh-my-posh
,折腾一番有了本文。
最终效果图如下
win11 自带了 Windows Terminal 不用自己再装,如果你的系统没有 Windows Terminal ,需要先去 Microsoft Store 中下载:
oh-my-posh 应该是对标 oh-my-zsh 的工具,其安装步骤如下:
winget install JanDeDobbeleer.OhMyPosh -s winget
oh-my-posh font install
,此时会出现字体的候选列表,官方推荐安装 Meslo
:安装完成后,现在即使打开 Windows Terminal 是没有任何效果的,需要再做一下配置。
配置运行 Windows Terminal 时自动加载 oh-my-posh:
执行命令 echo $PROFILE
查看 powershell 的配置文件路径,第一次配置肯定时不存在的,需要手动创建这个文件
C:\Users\用户名\Documents\WindowsPowerShell
下Microsoft.PowerShell_profile.ps1
文件 内容如下C:\\Users\\用户名\\AppData\\Local\\Programs\\oh-my-posh\\bin\\oh-my-posh.exe init pwsh --config $env:POSH_THEMES_PATH\montys.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_PATH\montys.omp.json | Invoke-Expression
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 Powershell ->>
外观MesloLGM Nerd Font
重新打开 Windows Terminal,至此 oh-my-posh 已配置完成。
如果你需要更换其它主题,可以去网站浏览也可以使用命令查看(初始化之后才能使用下面的命令):
Get-PoshThemes
在网站上浏览:https://ohmyposh.dev/docs/themes
这些主题通常都已经默认下载了,位于:
C:\Users\用户名\AppData\Local\Programs\oh-my-posh\themes
你只需要启用它们即可,编辑 PowerShell 的配置文件并修改 oh-my-posh 的 init 那一行即可:
notepad $PROFILE
将jandedobbeleer
换成你喜欢的主题名称即可:
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/jandedobbeleer.omp.json" | Invoke-Expression
posh-git 是一款专为 Windows 系统的 PowerShell 设计的 Git 扩展模块。它的主要目标是在 PowerShell 中提供更为友好、直观的 Git 命令行界面,通过整合 Git 相关的信息到命令提示符中,并提供方便快捷的键绑定,使得日常 Git 操作更为高效、直观。
安装
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
Uninstall-Module oh-my-posh -AllVersions
首先,安装clink工具,双击exe安装包即可安装
PS: 请记住 clink
的安装目录,下一步会用到~
然后,进入 clink
安装目录,创建 oh-my-posh.lua
文件,添加如下内容:
load(io.popen('oh-my-posh init cmd'):read("*a"))()
或者用你自己设置的主题不用默认的
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
字体 如: MesloLGM Nerd Font
有就行了,要啥自行车~