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(管理员)"),然后执行:
|
|
按提示完成后重启powershell。
手动安装
以管理员模式打开powershell(例如,按下win+X快捷键,然后点击"Windows Powershell(管理员)"),然后复制粘贴,回车执行:
|
|
按提示完成后重启powershell。
安装字体
oh-my-posh官方推荐使用Nerd-fonts中的Meslo字体:点此下载
下载后解压,然后打开windows设置-个性化-字体,将解压后要安装的的TTF文件拖到提示的位置,等待进度条走完即可。
应用字体
普通powershell窗口字体
普通情况下打开的powershell窗口(例如右键开始按钮、win+X、在资源管理器中Shift+鼠标右键:在此处打开powershell窗口等)无法应用自定义安装的字体。
这是由于当前powershell默认使用的代码页为GBK代码页(在选项-代码页可以看到)。
有两种方法可以解决:一种是利用chcp指令,一种是利用配置文件。
方法一:chcp 65001
一种方法是在powershell窗口执行如下命令,可以把代码页改为UTF-8:
|
|
此时再打开属性-字体,可以发现已经可以选择刚刚安装的Meslo字体:
注意:但是该方法改变的代码页只对当前窗口有效,关闭后重新打开就会失效。
方法二:配置文件
可以通过修改powershell配置文件来解决。在powershell中输入(当然此处notepad也可以替换为你喜欢的其他编辑器):
|
|
此时就会弹出编辑窗口。如果之前没有配置过可能会提示新建,点“是”即可。
弹出记事本窗口后复制如下内容到文件中:
|
|
保存关闭,此时再打开任何powershell时就会自动改变为UTF-8代码页。
当然你也可以写入前面的chcp 65001
指令,但是那样会造成控制台启动后闪动一次,影响体验。
Windows Terminal
Windows Terminal是微软官方的新一代终端。改变字体只需在设置-Powershell-其他设置-外观-文本-字体中改变即可。
vscode内置终端
打开vscode设置,搜索terminal.integrated.fontFamily
,并修改为刚刚安装的字体,如MesloLGM NF
,然后重启内置终端。
选择主题
可以在官方文档挑选主题:https://ohmyposh.dev/docs/themes
然后在powershell中输入:
|
|
如果之前没有配置过可能会提示新建。如果你在前面配置了改变代码页则可以追加。当然此处notepad也可以替换为你喜欢的其他编辑器。
将以下内容添加到文件末尾:
|
|
其中[theme]
替换为你刚刚选择的主题名称。例如我选择night-owl
主题,就是如下形式:
|
|
再次重启powershell,应该能够看到主题已经生效。
自定义主题
如果你想修改主题,打开资源管理器,在地址栏输入%POSH_THEMES_PATH%
并回车,就会跳转到主题存放的路径。
找到你想作为修改基础的主题,复制其json文件、重命名,然后你可以打开并修改主题。
有关主题的配置可以参考官方文档的Configuration和Segments。
注意:修改完成后不要忘了在$PROFILE
中把主题文件改成你要用的主题。
vscode终端去除启动版权显示
powershell启动时会输出如下版权信息:
|
|
在vscode内置终端中,终端高度本就有限,这些信息会挤占终端窗口,因此最好去掉。
对于powershell的这些版权信息,可用-Nologo
的启动参数关闭输出。
打开vscode设置,搜索``terminal.integrated.profiles.windows`,点击在settings.json中编辑,找到PowerShell对应的部分然后添加一行如下所示即可。
在其他地方去除显示可以参考这篇文章。