前言
Windows 10的PowerShell,相比于之前的命令行,视觉上仅是由“黑框”变成“蓝框”,我根据在网上的教程,亲自实践,对PowerShell进行了一番美化。
美化有两个版本,一种是直接美化(下图右),一种是结合Windows应用商店的Windows Terminal(下图左)进行美化。

准备
我们需要对PowerShell进行美化,做法是在PowerShell里面加一个PowerLine。 安装PowerLine要先安装oh-my-posh,首先打开一个PowerShell,输入
Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser
如果是想安装到所有用户,应用管理员权限打开PowerShell,输入
Install-Module posh-git
Install-Module oh-my-posh
安装的过程中会提示是否允许不可信来源,输入Y并回车表示同意即可。
出于安全考虑,PowerShell默认会禁用脚本运行,此时需要输入
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser(当前用户)或Set-ExecutionPolicy RemoteSigned(所有用户,需要管理员权限)修改PowerShell安全策略。
修改好后,执行下面的命令:
Import-Module posh-git
Import-Module oh-my-posh
Set-Theme PowerLine
如果你的电脑没有安装Git,则会在输入Import-Module posh-git时报错,把这一行去掉即可(下同)。
但是以上命令仅对当前PowerShell有用,若要每次启动都加载,则需要打开%USERPROFILE%\Documents\WindowsPowerShell,新建一个文本文档,重命名为Microsoft.PowerShell_profile.ps1(注意,扩展名为.ps1),输入以下内容并保存:
Import-Module posh-git
Import-Module oh-my-posh
Set-Theme PowerLine
完成这些,基础准备就配置好了,但是目前打开的时候还是会有乱码。这时候需要设置字体。
字体
对于命令行,优先考虑支持TrueType的等宽字体。
所以这里推荐一个开源的字体更纱等距黑体即Sarasa Term SC
这款字体在GitHub上即可下载,或者国内镜像。选择名字中带有ttf的压缩包,下载后不要全部解压(全部解压文件很大),直接打开压缩包,找到sarasa-term-sc-regular.ttf安装即可。
安装好字体后需要对字体进行注册,打开注册表编辑器,定位到计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink,新建一个多字符串值,名字为你使用的字体的名字,如Sarasa Term SC,值为
MICROSS.TTF,Microsoft Sans Serif,108,122
MICROSS.TTF,Microsoft Sans Serif
MINGLIU.TTC,PMingLiU
MSMINCHO.TTC,MS PMincho
BATANG.TTC,Batang
MSYH.TTC,Microsoft YaHei UI
MSJH.TTC,Microsoft JhengHei UI
YUGOTHM.TTC,Yu Gothic UI
MALGUN.TTF,Malgun Gothic
SEGUISYM.TTF,Segoe UI Symbol
如果你使用的就是刚刚推荐的更纱等距黑体,则可以新建文本文档,将以下内容复制进去,保存并修改扩展名为.reg,双击导入即可。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink]
"Sarasa Term SC"=hex(7):4d,00,49,00,43,00,52,00,4f,00,53,00,53,00,2e,00,54,00,\
54,00,46,00,2c,00,4d,00,69,00,63,00,72,00,6f,00,73,00,6f,00,66,00,74,00,20,\
00,53,00,61,00,6e,00,73,00,20,00,53,00,65,00,72,00,69,00,66,00,2c,00,31,00,\
30,00,38,00,2c,00,31,00,32,00,32,00,00,00,4d,00,49,00,43,00,52,00,4f,00,53,\
00,53,00,2e,00,54,00,54,00,46,00,2c,00,4d,00,69,00,63,00,72,00,6f,00,73,00,\
6f,00,66,00,74,00,20,00,53,00,61,00,6e,00,73,00,20,00,53,00,65,00,72,00,69,\
00,66,00,00,00,4d,00,49,00,4e,00,47,00,4c,00,49,00,55,00,2e,00,54,00,54,00,\
43,00,2c,00,50,00,4d,00,69,00,6e,00,67,00,4c,00,69,00,55,00,00,00,4d,00,53,\
00,4d,00,49,00,4e,00,43,00,48,00,4f,00,2e,00,54,00,54,00,43,00,2c,00,4d,00,\
53,00,20,00,50,00,4d,00,69,00,6e,00,63,00,68,00,6f,00,00,00,42,00,41,00,54,\
00,41,00,4e,00,47,00,2e,00,54,00,54,00,43,00,2c,00,42,00,61,00,74,00,61,00,\
6e,00,67,00,00,00,4d,00,53,00,59,00,48,00,2e,00,54,00,54,00,43,00,2c,00,4d,\
00,69,00,63,00,72,00,6f,00,73,00,6f,00,66,00,74,00,20,00,59,00,61,00,48,00,\
65,00,69,00,20,00,55,00,49,00,00,00,4d,00,53,00,4a,00,48,00,2e,00,54,00,54,\
00,43,00,2c,00,4d,00,69,00,63,00,72,00,6f,00,73,00,6f,00,66,00,74,00,20,00,\
4a,00,68,00,65,00,6e,00,67,00,48,00,65,00,69,00,20,00,55,00,49,00,00,00,59,\
00,55,00,47,00,4f,00,54,00,48,00,4d,00,2e,00,54,00,54,00,43,00,2c,00,59,00,\
75,00,20,00,47,00,6f,00,74,00,68,00,69,00,63,00,20,00,55,00,49,00,00,00,4d,\
00,41,00,4c,00,47,00,55,00,4e,00,2e,00,54,00,54,00,46,00,2c,00,4d,00,61,00,\
6c,00,67,00,75,00,6e,00,20,00,47,00,6f,00,74,00,68,00,69,00,63,00,00,00,53,\
00,45,00,47,00,55,00,49,00,53,00,59,00,4d,00,2e,00,54,00,54,00,46,00,2c,00,\
53,00,65,00,67,00,6f,00,65,00,20,00,55,00,49,00,20,00,53,00,79,00,6d,00,62,\
00,6f,00,6c,00,00,00,00,00
配置PowerShell
打开PowerShell,在菜单栏右键,分别配置属性和默认值,在字体一栏选择你刚刚配置的字体,并设置合适的字号;在颜色一栏分别对“屏幕文字”和“屏幕背景”进行配置,可以调节下面的不透明度以实现半透明的效果;在终端一栏,可以设置光标的形状。配置完成后点击确定,然后重启PowerShell即可。
如果是使用VSCode的用户,需要同时配置一下VSCode。
打开VSCode,打开设置,搜索Font Family,在其中加入你字体的名字,如'Sarasa Term SC',注意以英文逗号隔开。
使用Windows Terminal
注意:由于Windows Terminal版本更新,新版本的设置文件内容有改动,所以本教程已过时,我会尽早更新新版本教程
安装
在Windows应用商店里,微软提供了UWP版的终端,直接在应用商店搜索Windows Terminal安装即可。
配置
Windows Terminal的配置文件储存在%USERPROFILE%\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\profiles.json文件里,接下来就是对这个文件进行修改。
由于可配置项有很多,这里只放一个精简的配置,可以直接覆盖到json文件中。
{
"$schema": "https://aka.ms/terminal-profiles-schema",
"globals": {
"alwaysShowTabs": true,
"defaultProfile": "{aa5da293-b75a-4629-bd3a-49f9a71379e2}",
"initialCols": 120,
"initialRows": 30,
"requestedTheme": "system",
"showTabsInTitlebar": true,
"showTerminalTitleInTitlebar": true,
"wordDelimiters": " ./\\()\"'-:,.;<>~!@#$%^&*|+=[]{}~?\u2502"
},
"profiles": [
{
"acrylicOpacity": 1,
"closeOnExit": true,
"colorScheme": "Dark+",
"commandline": "powershell.exe",
"cursorColor": "#ffffff",
"cursorShape": "bar",
"fontFace": "Sarasa Term SC",
"fontSize": 12,
"guid": "{aa5da293-b75a-4629-bd3a-49f9a71379e2}",
"historySize": 9001,
"name": "PowerShell",
"padding": "0, 0, 0, 0",
"snapOnInput": true,
"startingDirectory": "%USERPROFILE%",
"useAcrylic": false,
"tabTitle": "PowerShell"
},
{
"guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
"hidden": false,
"name": "Azure Cloud Shell",
"source": "Windows.Terminal.Azure"
}
],
"schemes": [
{
"name": "Dark+",
"black": "#000000",
"red": "#cd3131",
"green": "#0dbc79",
"yellow": "#e5e510",
"blue": "#2472c8",
"purple": "#bc3fbc",
"cyan": "#11a8cd",
"white": "#e5e5e5",
"brightBlack": "#666666",
"brightRed": "#f14c4c",
"brightGreen": "#23d18b",
"brightYellow": "#f5f543",
"brightBlue": "#3b8eea",
"brightPurple": "#d670d6",
"brightCyan": "#29b8db",
"brightWhite": "#e5e5e5",
"background": "#0e0e0e",
"foreground": "#cccccc"
}
]
}
自定义配置
对于Windows Terminal,我们可以根据规则自定义配置文件。
打开上面提到的profiles.json,你可以看到:
"globals": {
"alwaysShowTabs": true,
"defaultProfile":,
"initialCols": 120,
"initialRows": 30,
"requestedTheme": "system",
"showTabsInTitlebar": true,
"showTerminalTitleInTitlebar": true,
"wordDelimiters": " ./\\()\"'-:,.;<>~!@#$%^&*|+=[]{}~?\u2502"
}//......
alwaysShowTabs是是否永远显示标签栏。
defaultProfile是默认启动配置,GUID对应下面的profiles里的配置。你可以自己按照格式添加profiles配置并加在里面,不同的配置需要不同的GUID,在PowerShell里输入[System.Guid]::NewGuid().ToString()即可获得一个随机的GUID。
initialCols和initialRows表面默认终端的长和宽。
往下翻会有profiles,如以下内容:
"profiles": [
{
"acrylicOpacity": 1,
"closeOnExit": true,
"colorScheme": "Dark+",
"commandline": "powershell.exe",
"cursorColor": "#ffffff",
"cursorShape": "bar",
"fontFace": "Sarasa Term SC",
"fontSize": 12,
"guid": "{aa5da293-b75a-4629-bd3a-49f9a71379e2}",
"historySize": 9001,
"name": "PowerShell",
"padding": "0, 0, 0, 0",
"snapOnInput": true,
"startingDirectory": "%USERPROFILE%",
"useAcrylic": false,
"tabTitle": "PowerShell"
}//......
]
acrylicOpacity是不透明度。
colorScheme是颜色主题,具体配置见下文。
commandline是要启动的Shell。
cursorColor是光标颜色。
cursorShape是光标样式,bar是竖条;empytBox是中空矩形;filledBox是实心矩形;vintage是老式下划线。
fontFace和fontSize分别是字体和字号。
historySize是缓冲区大小。
再往下翻就是schemes,这里面就是刚刚提到的颜色主题配置,对于颜色主题,可以直接在这里找到颜色预览,挑选好后记住名字,然后点击这里里面找到配置信息并加入到schemes里,然后修改配置的颜色主题即可。
结束
完成上面的配置,就基本完成了。动手能力强的可以进一步深度改造。本篇文章参考了Windows Terminal 美化实例。