美化你的PowerShell

被浏览

前言

作为 Windows 用户,常羡慕 Linux 用户高端大气的终端。

其实,Windows 自带的 PowerShell 也十分的强大。

但是过于简陋的界面不知道劝退了多少用户,于是让我们来美化一下 PowerShell 吧。

以下教程环境均为 PowerShell 5.x。

准备 PowerShell 5.x

Windows10 用户请直接跳过这个步骤,因为 Windows10 内置了 PowerShell 5.x。

我们去官网下载 Windows Management Framework 5.1,选择对应的版本下载。

注意,请关注对应的系统前缀,别下载错了。

下载好以后如果是压缩包运行里面的.msu文件,不要使用.ps1来安装。

安装好以后重启即可。

安装 posh-git

折腾 PowerShell 的人大多有 Git 的需求,但是 PowerShell 默认不支持 Git,没有仓库显示和 tab 补全。这时候我们就需要额外的模块来提供这个功能。

执行以下命令安装 posh-git:

1
Install-Module posh-git -Scope CurrentUser

它会提示你先安装 NuGet,直接选择“是”。

安装过程中可能会有这样的警告:

1
2
3
4
不受信任的存储库
你正在从不受信任的存储库安装模块。如果你信任该存储库,请通过运行 Set-PSRepository
cmdlet 更改其 InstallationPolicy 值。是否确实要从“PSGallery”安装模块?
[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 暂停(S) [?] 帮助

直接选“是”,如果你觉得这个警告烦人,直接执行以下代码信任该仓库即可:

1
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted

执行以下命令引入 posh-git:

1
Import-Module posh-git

可能会有以下的错误:

1
2
因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/
?LinkID=135170 中的 about_Execution_Policies。

不要紧,更改一下执行权限:

1
Set-ExecutionPolicy -Scope CurrentUser Bypass

再引入 posh-git,然后就能体验到 git 的 tab 补全了。

安装 DirColors

注意,此模块笔者在 Windows7 环境下体验不佳,不推荐非 Windows10 用户使用。

Linux 下的 ls 命令支持对不同文件进行高亮,PowerShell 肯定不能少了这个功能。

我们执行以下命令安装并引入 DirColors:

1
2
Install-Module DirColors -Scope CurrentUser
Import-Module DirColors

你还能自定义高亮格式,使用以下代码来引入配置文件:

1
Update-DirColors 配置文件的路径

安装 oh-my-posh

用过 Linux 的人基本都用过神器 oh-my-zsh,而 PowerShell 也有类似的模块 oh-my-posh。oh-my-posh 提供了一个和 oh-my-zsh 类似的界面,颜值满分。

执行以下命令安装并引入 oh-my-posh,推荐使用代理:

1
2
Install-Module oh-my-posh -Scope CurrentUser
Import-Module oh-my-posh

oh-my-posh 的 git 功能依赖 posh-git,请务必先安装 posh-git!

在最新版本的 oh-my-posh 是一个独立的应用程序,上面的模组只是用来把这个独立的应用程序引入的。
可以通过以下方式安装:
1、winget install JanDeDobbeleer.OhMyPosh -s winget
2、在 Microsoft store 里直接搜索安装

主题可以通过 Get-PoshThemes 命令来获得主题目录,然后去 Github 上下载喜欢的主题放到目录里。

使用以下命令来切换 oh-my-posh 的主题:

1
2
3
Set-PoshPrompt -Theme robbyrussell
# 这个是 oh-my-zsh 的默认主题
# 更多主题参见 https://ohmyposh.dev/docs/themes

一个漂亮的界面就出现在你面前了。

使用 Cmder

笔者在 Windows7 下使用 oh-my-posh 出现了显示问题,怀疑是因为自带的界面过于陈旧,使用 Cmder 就解决了。

官网下载 Cmder,哪个版本都无所谓。

在解压目录下运行Cmder.exe /REGISTER ALL注册右键菜单,就能在任何目录下使用 Cmder 了。

设置默认启动为 PowerShell,Cmder 的设置就请读者自行搜索,笔者在此不再赘述。

安装 PSReadLine

有了漂亮的 shell,为什么不来语法高亮呢?

PSReadLine 正是为 PowerShell 提供命令行高亮的模块。

使用以下命令安装并引入 PSReadLine:

1
2
Install-Module PSReadLine -Scope CurrentUser
Import-Module PSReadLine

试着打几句命令,感受一下代码高亮吧。

2021.9.25 Updated 似乎高版本 PowerShell 自带 PSReadLine2.0。

安装字体

可能你在上一步尝试使用其他主题的时候就发现有一些奇怪的字符无法显示,这是因为系统缺失相应的字体。

执行以下代码来安装 Powerline 字体:

1
2
3
git clone https://github.com/powerline/fonts.git
cd .\fonts\
.\install.ps1

安装好后执行以下代码删除多余文件:

1
2
cd ..
Remove-Item -Force .\fonts\

打开你的 PowerShell 界面,在标题栏右键选中“默认值”,在“字体”选项中使用著名的“逮虾户”字体 (DejaVu Sans Mono for Powerline)。

当然你也可以根据自己的喜好来安装自己喜欢的字体,比如更纱黑体 (Sarasa Mono SC,后缀含义为等宽、中文)。更纱黑体内置了 Powerline 字体,字形很纤细,看上去也很舒服。

窗口透明度和配色

这个设置是针对默认命令行窗口的,和前文介绍的 Cmder 无关。

笔者在 Windows7 环境下体验不佳,不推荐非 Windows10 用户使用。

Linux 下的终端有着炫酷的配色,全局呼出终端时半透明的窗口也显得逼格满满。

其实,Windows 的终端也能那么炫酷。

打开 PowerShell,在标题栏右键选中“默认值”,在“颜色”选项中设置“不透明度”,透明窗口就设置成功了。

配色方案的话,我们下载微软官方的工具ColorTool来配置。

解压后在当前目录下执行.\colortool -b campbell,即可把终端配色改为campbell。但是如果 ColorTool 自带的配色方案不喜欢怎么办?不要紧,这个小工具支持 itermcolor 格式,我们可以在 iTerm2 Color Schemes 挑选喜欢的配色主题,下载以后放置在 ColorTool 的 schemes 文件夹下,执行.\colortool -b 主题名即可。

配置 PROFILE

我们的美化基本完成了,让我们理一理现在我们启动 PowerShell 后的操作:

1
2
3
4
5
6
Import-Module posh-git
Import-Module DirColors
Update-DirColors 配置文件的路径 # 若没有可以忽略该行
Import-Module oh-my-posh
Set-PoshPrompt -Theme 你自己喜欢的主题
Import-Module PSReadLine

每次都这么打一遍是不是很繁琐?还好 PowerShell 为我们提供了 PROFILE。

在 PowerShell 里键入以下命令:

1
$PROFILE

发现输出了一个文件的目录,直接用文本编辑器打开它,输入刚才引入模块的命令,保存并退出。

现在你每次打开 PowerShell 就会先引入 PROFILE 里的命令,节约了大量时间。

如果你自己有其他的需求,自行添加即可。

Screenfetch

Linux 装机以后必晒图之一就是 screenfetch 了,想不到在 Windows 下也有这种东西。

执行以下命令安装 screenfetch:

1
Install-Module windows-screenfetch -Scope CurrentUser

令人震惊的是这个模块居然不需要 Import。。

安装好以后直接输入 Screenfetch 就可以看到效果了,十分炫酷。

2020.10.4 Updated 突然发现这玩意有 Bug,花了点时间修完,有空去开个 PR。

不过像我这么鸽,不知道要到什么时候。

最终成果

这是我的辣鸡电脑,分辨率不高,将就看一下吧。