PowerShell美化之折腾日记

Posted by 404player on November 7, 2020

作为Windows用户,我无法否认微软的美学境界上不了档次。

相较于Linux高端大气上档次的终端,尽管Windows自带的原生PowerShell非常强大,我还是无法在那惨不忍睹的页面中操作我的命令行。

一名计算机玩家,要有自己动手解决问题的能力。为了让自己更舒服地使用原生PowerShell,我花了一小时左右的时间对它进行了简单的美化,并把过程记录了下来。


一. 确认需求

要进行一个项目之前,我们首先要确认一下需求。美化Powershell也不例外。

我们首先对需要美化的几个点与解决方法进行列举:

  • demand: Powershell颜色与透明度问题
    • solution: 在PowerShell属性中进行设置
  • demand: 需要在Powershell中使用git,支持仓库显示和tab补全
    • solution: 安装posh-git
  • demand: 要像在Linux下一样,支持对不同文件类型的高亮
    • solution: 安装DirColors
  • demand: 需要像Linux神器oh-my-zsh类似的界面
    • solution: 安装oh-my-posh
  • demand: 选择一种适合命令行操作的字体
    • solution: 安装更纱黑体
  • demand: 支持语法高亮,支持命令行智能提示
    • solution: 安装PSReadLine
  • demand: 达到Linux装机晒图的效果
    • solution: 安装Screenfetch

以上,我们对PowerShell美化的要求已经列举完毕了,可以开搞了,冲!!!

在此之前,我们先来欣赏一下“原装”的Powershell丑陋的容颜

Boiebt.png


二. 更改执行策略

为了防止恶意脚本的执行,Powershell默认的执行策略是Restricted,这种执行策略可以执行单个的命令,但是不能执行脚本。也就是运行脚本的时候Powershell会报错。

你可以通过Get-ExecutionPolicy来查看你的执行策略。

折腾的方式千千万万,尽管我到最后也没有运行脚本,但刚开始我还是有必要将执行策略改动一下,提高一下我操作的权限。

Set-ExecutionPolicy RemoteSigned

RemoteSigned策略的意思是:当执行从网络上下载的脚本时,需要脚本具有数字签名,否则不会运行这个脚本。如果是在本地创建的脚本则可以直接执行,不要求脚本具有数字签名。


三. 更改颜色和透明度

更改颜色和透明度是最迫切最迫切的需求,原装的Powershell屎蓝屎蓝的页面实在是太丑了!!!

这个需求很简单,只需要在顶边栏右键->属性,就可以弹出这么一个框框

个人喜好是将字号改成16,将终端背景调成黑色,透明度设为85%,最后在布局那里将窗口大小改成高度为32,宽度为120


四. 安装posh-git

作为一个git使用者,当然无法忍受终端不支持git的阴间配置。

安装posh-git的方法很简单,执行下面命令

Install-Module posh-git -Scope CurrentUser

当提示你安装NuGet的时候,直接选择yes

安装过程中还会出现这样的警告

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

同样选择Y,静待安装完成。

大功告成以后,还需要导入posh-git

Import-Module posh-git

自此,你的Powershell就可以支持git命令行的操作了。


五. 安装DirColors

当你在Linux中执行ls命令的时候,会列出所在目录下所有的显式文件,不同文件格式(目录/文件)会进行不同颜色的高亮显示。我们的需求就是在Windows上也做到这一点。

安装DirColors的方法不难

Install-Module DirColors -Scope CurrentUser
Import-Module DirColors

典型的安装加导入,当然这次的导入只能维持单次窗口的配置,也就是说,以后再次打开Powershell还能有这个效果,必须将其导入profile文件中,这个后面一起导入, 不要着急。

先来看一眼效果


六. 安装oh-my-posh

oh-my-poshgithub项目地址是这个:https://github.com/JanDeDobbeleer/oh-my-posh,你可以在项目下的README文档里进行你自己的样式选择。

获取方法还是同样的安装导入,oh-my-posh还多了一个样式选择

Install-Module oh-my-posh -Scope CurrentUser
Import-Module oh-my-posh
Set-Theme Agnoster

Agnoster只是我选择的样式,大家尽可以自由选择。

同样,这种导入只适用于当前窗口,所以后面还要写入profile文件。


六. 安装更纱黑体

字体的美化在终端显得极其重要,没有人会喜欢在炫酷的命令行操作中还喜欢看到宋体楷书这种字体吧。

更纱黑体的项目地址:https://github.com/be5invis/Sarasa-Gothic/releases

我下载的是release中的ttc,下载完成后全部安装,就可以在Powershell的属性中看到并选择了。

效果看上图。


七. 安装PSReadLine

要打造一个Windows版本的Linux终端,怎么可能不支持语法高亮呢?

看到这里的小伙伴已经很熟悉业务了,安装导入一步走!!!

Install-Module PSReadLine -Scope CurrentUser
Import-Module PSReadLine

但是要进行智能提示,单单这一步还不够。在进行配置之前,先让你们羡慕嫉妒恨一下我的智能提示。

看到后面那一串灰灰的字体没?那就是智能提示!酷不酷,爽不爽?配置走起!

如果你老以前就安装了PSReadLine,你先得升级一下

Install-Module PSReadLine -Force -SkipPublisherCheck -AllowPrerelease

智能提示的原理就是从你输入命令的历史记录中找到匹配的隐式显示,所以还需要安装一个PowerShellGet

Install-Module -Name PowerShellGet -Force

接下来就需要把PSReadLinePredictionSourceSource设置为History

Set-PSReadLineOption -PredictionSource History 

现在就大功告成了。前文说过,这些设置只在单次的Powershell窗口上起作用,要一劳永逸地配置,还需要配置profile文件。


八. 修改配置文件

PowerShell为我们提供了profile,每次打开Powershell,都会先执行profile文件中的命令。

为了找到profile文件,可以在Powershell中输入$profile,会显示profile文件的绝对路径。

$profile

C:\Users\admin\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

你可以根据路径找到它,如果没有这个文件,就在C:\Users\admin\Documents\WindowsPowerShell中新建一个Microsoft.PowerShell_profile.ps1,并将下面命令写入

Import-Module DirColors
Import-Module oh-my-posh
# oh-my-posh会导入posh-git,所以不需要再次导入
Set-Theme 你自己喜欢的主题
Import-Module PSReadLine
Set-PSReadLineOption -PredictionSource History

完成这一步,我们的美化之路就走到最后一步了。


九. 安装Screenfetch

对于Linux使用者来说,装机以后必定要炫一波配置,Screenfetch就是必备神器之一了。

配置screenfetch很简单,甚至不需要导入,只需要安装即可

Install-Module windows-screenfetch -Scope CurrentUser

看看效果,好家伙,十分炫酷


十. 总结

折腾,是每个计算机爱好者的美德,拥有一台自己用得顺手的电脑是一种资本,希望越来越多的同类人加入折腾的世界~