【软件相关】基于oh-my-posh美化PowerShell7

0 前言

  今天心血来潮,突然想美化一下自己电脑上的powershell,虽然之前也一直有所耳闻,但感觉有点复杂,因此也一直未实践,后来发现这个问题似乎比我想象中要简单一点,因此设置完就顺便记录一篇博客。

1 首先说说原理

  不管是Windows Power Shell还是最新的Power Shell7,美化的逻辑都是一样的,那就是这个程序在点开前会运行一段代码,这段代码的作用就是配置窗口的显示,因此想要美化界面,就需要去修改这个配置文件。
  那配置文件在哪呢?默认应该是找不到的。可以在终端输入
code $profile(要求安装VS Code并添加到环境变量)或者notepad $profile(用自带的记事本打开),就会自动打开一个后缀为.ps1的文件:

在这里插入图片描述

因此,不管前面做什么准备,都是为了最后修改这个文件。

2 再来说说方法

  明白了原理,接下来就是修改这个profile文件的方法,一般来说(我所知道的)主要是两种:①查阅Power Shell修改配置文件的命令,然后再形成程序,写到profile文件当中;②下载第三方的软件,通过第三方软件导入大佬们做好的样式,俗称“白嫖”。
  第一种方式的优点显而易见,那就是不用下载额外的软件,只需要修改代码即可,但是比较麻烦,而且要不断尝试;第二种就是简单,但是要付出硬盘空间的代价(也不是特别大,精简点30M能解决)。

  由于我比较懒,不愿意去一行一行敲代码并不断尝试,因此我这里使用第二种“白嫖”的方式。

后面会简单介绍第一种方式,愿意探索的小伙伴可以试试

3 oh-my-posh

  上面提到的第三方软件就是大名鼎鼎的oh-my-posh了,关于这方面的教程呢,网上有非常多,但个人感觉有很多都过时了,包括安装方法和设置等,建议最好是找近一年的教程(2022+)。

oh-my-posh doc

  关于oh-my-posh doc的使用,我的建议是直接看上面的文档,内容会细致一点,当然不愿意看英文想速成的也可以继续看下去。

3.1 软件储备

  • PowerShell7:这个毫无疑问,是今天的主角,没装这个的估计也不会翻到这篇blog。
  • Windows Terminal:现代终端,不装这个很多样式显示不出来。不仅是这个,它还可以集成多个终端到一起,如cmd,Windows Power Shell,Power Shell7,Git Bash等。当然,在本教程中,它的主要作用还是显示设置的样式。这个可以直接在微软商店下载

3.2 下载安装oh-my-posh

  有了上述的软件之后,接下来就可以开始搞oh-my-posh了,首先是下载安装,本着尽量少下载软件的原则,这里不用安装任何软件,直接在终端输入官网提供的下载命令:

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

如果安装失败不妨试试科学上网

等待安装完毕后,不妨检查一下环境变量:

在这里插入图片描述

在这里插入图片描述

可以发现软件在安装过程中自动添加了一个POSH_THEMES_PATH环境变量,在Path中也添加了bin目录的路径,这个很重要,因为如果后面出现命令无法识别的报错,那大概率是环境变量还没有刷新,需要重启终端甚至重启电脑。

3.3 安装字体

  为了使得样式能够正常显示,还需要在电脑上安装一些字体。主要是Nerd Font字体,简称NF字体。这个oh-my-posh官网也有提供下载链接
在这里插入图片描述

下载得到的压缩包解压后会发现有很多字体,但实际并不需要这么多(想省事可以直接全部安装),可以打开Everything对字体文件夹进行检索:

在这里插入图片描述

只需要安装这几个字体即可,安装完会得到一个字体名称为MesloLGM NF的字体,后面需要使用到这个字体。

3.4 配置profile文件

  安装好软件和对应的字体之后,最后就是配置powershell7的样式了,和前面提到的原理部分一样,只需要修改对应的profile文件即可。
  先用VS Code打开profile文件code $profile,此时会打开一个空白文件,实际是新建了一个空白文件,安装好oh-my-posh的话,只需要一行代码即可。

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

其中,$env:POSH_THEMES_PATH部分就是前面提到的环境变量,如果不想用这个,也可以直接换成json文件的绝对路径。

  这行代码的主要作用就是引用前面提到的oh-my-posh安装时自带的很多现成的样式文件,如果觉得这个不好看还可以换成别的——只需要替换json文件名即可。样式的效果预览可以参考oh-my-posh的官网给出的图片

4 手搓profile代码

  这部分主要是提供一个手搓profile代码的参考。这部分的资料主要也是来自官网,有兴趣的可以仔细看看。

5 其他

5.1 powershell7样式显示不正常

  设置完powershell样式之后,会发现似乎显示效果并没有预览得那么好看,这是正常的,这也是为什么前面提到必须要安装Windows Terminal,因此建议不要再单独打开powershell7,直接打开Windows Terminal即可。

5.2 能不能美化Windows powershell?

  以上的修改都是针对powershell7,不过前面也提到,在Windows powershell中也可以修改profile文件,那能不能也设置成同样的样式呢?
  很遗憾的是,并不能,以下是我的尝试结果:

在这里插入图片描述

显然,修改完profile之后,会报错说系统禁止加载这个文件,这个问题也可以解决,只需要修改执行策略即可,具体做法建议参考官网

5.3 VS Code美化

  由于VS Code中可以设置默认终端为PowerShell7,因此只要设置好能够在Windows Terminal正常显示,理论上VS Code显示也没有问题。不过需要先设置一下字体,就是上面提到的那个字体——MesloLGM NF

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/ZHOU_YONG915/article/details/129733931