1. 本文涉及的内容
本篇博客主要涉及了在 windows 下利用 oh-my-posh 来美化,以及利用简单地自定义主题的方法。
另外声明,本人没学过 powershell,基本上遇到什么问题都是百度搜的,我在末尾附上了我参考过的一些资料,希望有用。
2. 安装 oh-my-posh
安装
略,见参考博客。
字体问题
如果你在 powershell 下执行这个命令。
1 | Write-Host "$([char] 0xE0A0; [char] 0xE0A1; [char] 0xE0A2; [char] 0xE0A3; [char] 0xE0B0; [char] 0xE0B1; [char] 0xE0B2; [char] 0xE0B3; [char] 0xE0B8; [char] 0xE0B9; [char] 0xE0BA; [char] 0xE0BB; [char] 0xE0BC; [char] 0xE0BD; [char] 0xE0BE; [char] 0xE0BF;)" |
如果出来的内容中,有一些空方框,说明你当前使用的字体是无法完全支持 powershell 的字符的。
建议安装其他 powerling 的字体。一个比较推荐的是更纱黑体。
3. 简单的自定义主题
在我的 C:\Users\zyp\Documents\WindowsPowerShell\Modules\oh-my-posh\2.0.311\Themes
目录下(具体目录视情况而定),你可以看到一堆 psm1 文件,这就是主题了。
通过重写:
1 | function Write-Theme { |
可以进行主题的自定义。
一些简单的解释
对于编写过程中,我在这里做一些简单的说明。
- 如何自定义
之前说了,我们可以在 theme 目录下新建一个 psm1 文件,然后在里面实现 Write-Theme
函数。那么这个函数要怎么实现呢?
在这个函数里,我们需要实现对于 prompt 的打印。
什么叫 prompt? 简单来讲:
Write-Theme
在干什么
Write-Theme
这个函数会在每次显示命令行之前被调用,实现 prompt 的打印。举个例子,我们新建一个 Temp.psm1
,然后实现一个最简单的主题:
1 | function Write-Theme { |
然后在 powershell 下运行:Set-Theme Temp
$sl
如果你仔细阅读会发现在主题文件里,有大量的 $sl
。这是对于全局变量 $global:ThemeSettings
的一个局部化引用。
在 default.ps1
里定义了该全局变量,用于保存一些全局的基础设定, 如果要自定义修改,必须先局部化引用,否则会更改全局的设定。
我的主题
1 | #requires -Version 2 -Modules posh-git |
效果图:
4. 参考资料
https://www.cnblogs.com/magicking/p/9776200.html
https://www.jianshu.com/p/533955b84cd6
https://sspai.com/post/52907
https://github.com/spencerwooo/dotfiles
https://github.com/JanDeDobbeleer/oh-my-posh