Windows下Powershell配置oh-my-posh

Windows下Powershell配置oh-my-posh

效果图

安装oh-my-posh

有使用winget安装和手动安装两种。winget在Win11已经系统附带,因此使用Win11的用户可以选择使用winget安装,比较方便。

使用winget安装

推荐使用winget安装,如果使用win11则已自带,win10较新的版本也已附带,否则可以通过微软应用商店安装winget

注意:winget 命令行工具仅在 Windows 10 1709(版本 16299)或更高版本上受支持。

——来自微软官方文档

使用winget安装并更新oh-my-posh,过程中需要从github下载文件,因此可能需要科学上网。

管理员模式打开powershell(例如,按下win+X快捷键,然后点击"Windows Powershell(管理员)"),然后执行:

1
2
winget install oh-my-posh
winget upgrade oh-my-posh

按提示完成后重启powershell。

手动安装

管理员模式打开powershell(例如,按下win+X快捷键,然后点击"Windows Powershell(管理员)"),然后复制粘贴,回车执行:

1
Set-ExecutionPolicy Bypass -Scope Process -Force; Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://ohmyposh.dev/install.ps1'))

按提示完成后重启powershell。

安装字体

oh-my-posh官方推荐使用Nerd-fonts中的Meslo字体:点此下载

下载后解压,然后打开windows设置-个性化-字体,将解压后要安装的的TTF文件拖到提示的位置,等待进度条走完即可。

应用字体

普通powershell窗口字体

普通情况下打开的powershell窗口(例如右键开始按钮、win+X、在资源管理器中Shift+鼠标右键:在此处打开powershell窗口等)无法应用自定义安装的字体。

这是由于当前powershell默认使用的代码页为GBK代码页(在选项-代码页可以看到)。

有两种方法可以解决:一种是利用chcp指令,一种是利用配置文件。

方法一:chcp 65001

一种方法是在powershell窗口执行如下命令,可以把代码页改为UTF-8:

1
chcp 65001

此时再打开属性-字体,可以发现已经可以选择刚刚安装的Meslo字体:

注意:但是该方法改变的代码页只对当前窗口有效,关闭后重新打开就会失效。

方法二:配置文件

可以通过修改powershell配置文件来解决。在powershell中输入(当然此处notepad也可以替换为你喜欢的其他编辑器):

1
notepad $PROFILE

此时就会弹出编辑窗口。如果之前没有配置过可能会提示新建,点“是”即可。

弹出记事本窗口后复制如下内容到文件中:

1
[system.console]::outputencoding=[system.text.encoding]::getencoding(65001)

保存关闭,此时再打开任何powershell时就会自动改变为UTF-8代码页。

当然你也可以写入前面的chcp 65001指令,但是那样会造成控制台启动后闪动一次,影响体验。

Windows Terminal

Windows Terminal是微软官方的新一代终端。改变字体只需在设置-Powershell-其他设置-外观-文本-字体中改变即可。

vscode内置终端

打开vscode设置,搜索terminal.integrated.fontFamily,并修改为刚刚安装的字体,如MesloLGM NF,然后重启内置终端。

选择主题

可以在官方文档挑选主题:https://ohmyposh.dev/docs/themes

然后在powershell中输入:

1
notepad $PROFILE

如果之前没有配置过可能会提示新建。如果你在前面配置了改变代码页则可以追加。当然此处notepad也可以替换为你喜欢的其他编辑器。

将以下内容添加到文件末尾:

1
oh-my-posh init pwsh --config $env:POSH_THEMES_PATH\[theme].omp.json | Invoke-Expression

其中[theme]替换为你刚刚选择的主题名称。例如我选择night-owl主题,就是如下形式:

1
oh-my-posh init pwsh --config $env:POSH_THEMES_PATH\night-owl.omp.json | Invoke-Expression

再次重启powershell,应该能够看到主题已经生效。

自定义主题

如果你想修改主题,打开资源管理器,在地址栏输入%POSH_THEMES_PATH%并回车,就会跳转到主题存放的路径。

找到你想作为修改基础的主题,复制其json文件、重命名,然后你可以打开并修改主题。

有关主题的配置可以参考官方文档的Configuration和Segments。

注意:修改完成后不要忘了在$PROFILE中把主题文件改成你要用的主题。

vscode终端去除启动版权显示

powershell启动时会输出如下版权信息:

1
2
3
4
Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。

尝试新的跨平台 PowerShell https://aka.ms/pscore6

在vscode内置终端中,终端高度本就有限,这些信息会挤占终端窗口,因此最好去掉。

对于powershell的这些版权信息,可用-Nologo的启动参数关闭输出。

打开vscode设置,搜索``terminal.integrated.profiles.windows`,点击在settings.json中编辑,找到PowerShell对应的部分然后添加一行如下所示即可。

在其他地方去除显示可以参考这篇文章

0%