Oh My Posh 为 PowerShell 和 WSL 配置终端样式

Oh My Posh官方文档
Microsoft文档

PowerShell配置

首先就是下载带图标的Nerd字体,下载地址:Nerd Fonts官方网址
下载并安装好图标字体,在Windows terminal终端上把Power Shell和WSL的字体都配置为这个图标字体

根据官方文档,下载oh-my-posh,在PowerShell中输入以下命令

1
winget install JanDeDobbeleer.OhMyPosh -s winget

这样会下载下面的两个文件
oh-my-posh.exe - Windows 可执行文件
themes - 最新的 Oh My Posh 主题
下载的默认路径为:C:\Users\用户名\AppData\Local\Programs\oh-my-posh

这里需要配置oh-my-posh和themes的可执行文件,以便后续不会出错
在环境变量的path值中添加路径:C:\Users\用户名\AppData\Local\Programs\oh-my-posh\bin\oh-my-posh.exe
(这一步可不做) 在环境变量中增加一个字段POSH_THEMES_PATH,值为:C:\Users\86135\AppData\Local\Programs\oh-my-posh\themes

在PowerShell终端中输入:

1
notepad $PROFILE

如果这一步报错,文件不存在则需要先创建配置文件
执行New-Item -Path $PROFILE -Type File -Force

在打开的记事本中,填入oh-my-posh init pwsh | Invoke-Expression
接着输入. $PROFILE重新加载配置

如果这一步,报错,红字显示找不到oh-my-posh的命令
那么说明前面的环境变量没有配置好

接着重新启动终端,就发现已经应用了默认主题
如果需要更改主题,则只需要到官方文档主题中,挑选好主题,记下主题名字

同样在PowerShell终端中输入:notepad $PROFILE打开配置文件
修改之前输入的oh-my-posh init pwsh | Invoke-Expression
改为:

1
oh-my-posh init pwsh --config '`C:\Users\用户名\AppData\Local\Programs\oh-my-posh\themes\1_shell.omp.json' | Invoke-Expression

这里的主题路径应该根据自己的情况更改,1_shell.omp.json是主题文件
如果在上面的步骤中,你已经配置了主题文件夹的环境变量,则可以:

1
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/1_shell.omp.json" | Invoke-Expression

重新启动终端,就可以应用。

WSL配置

WSL的配置和PowerShell的十分相似,但是需要注意的是,WSL下可能有好多种类的Shell,配置的时候,需要先查看自己的WSL是什么类型的shell
查看方法,输入以下命令:

1
echo $SHELL

如果是bash就在官方文档Linux教程中找对应的方法,我这里以zsh为例。

同样的,在配置之前,需要先给WSL的终端文字更改为Nerd带图标的字体,否则图标不能生效

下载oh-my-posh,输入以下命令:

1
curl -s https://ohmyposh.dev/install.sh | bash -s -- -d /bin

这里可能会报错
-d 后面指定的是下载的位置,最好是下载到根目录下的/bin文件,因为这样就不需要配置环境变量,可以在任意位置执行oh-my-posh的命令,避免了之后很多的报错
因此,如果你在普通用户下可能需要加上sudo
或者你可以先下载到其他位置,之后把可执行文件复制到/bin目录下,这一步同样需要root权限

接着,输入以下命令

1
oh-my-posh get shell

如果返回了你当前的shell,说明下载成功,如果返回‘找不到命令’,可能没有下载到正确的位置

输入命令,打开shell的配置文件,这里演示的是zsh,所以打开~/.zshrc
如果你是bash,那么打开的就是~/.bashrc,配置命令也要改为bash

1
sudo vim ~/.zshrc

添加以下配置到文件中

1
eval "$(oh-my-posh init zsh)"

退出文件,终端输入exec zsh,更新配置,也可以输入source ~/.zshrc,两者是一样的

(这一步不一定)重新启动终端,可以发现oh-my-posh已经应用成功

更改主题,和PowerShell是类似的
同样打开配置文件~/.zshrc,将原先输入的配置改为:

1
eval "$(oh-my-posh init zsh --config ~/.cache/oh-my-posh/themes/1_shell.omp.json)"

其中,--config后面填入,你的主题路径和主题名字,我的主题路径可能有所不同,需要更改为自己的
退出文件,终端输入exec zsh,主题就会立马应用。