因为训练营录制课程需要,购买了一台Windows,自己平时用MacOS比较多,突然回到Windows的cmd,看着cmd那朴素的妆容,我一时难以接受,蹭着假期,折腾了一把,将它装扮了一下,先看最终效果。
是不是感觉还可以,其实坑挺多的,如果感兴趣,那就看下去吧。
教程中使用到的部分资源我已传到百度云:
链接:https://pan.baidu.com/s/13G8aYxwH4Lm0uc3S5zKVRQ
提取码: 懒编程回复windows
获取提取码
在Windows中,默认会存在cmd和PowerShell这两个不同的命令行终端,本篇文章美化的对象是PowerShell,对cmd不会过多谈及。
微软在Build 2019大会发布了Windows Terminal
,它可以将目前Windows的PowerShell、cmd以及Windows Linux子系统(WSL)三者实现统一管理,通过Microsoft Store
便可安装,如下。
对于Windows Terminal,很多人都会误以为它是一个新终端,但其实它只是一个载体,用于承载windows已有的终端,简而言之,PowerShell与Windows Terminal是2个独立的软件,Terminal负责承载PowerShell,显示PowerShell的输出等等,它更像一个终端管家,用于集中式管理Windows上的各种终端,但它不是真正的终端。
因为PowerShell与Terminal是相互独立的,所以我们要美化出首图中的效果,就需要分别优化PowerShell与Terminal两者。
目前(2021/4/5)Windows自带的PowerShell通常是5.x版本,前不久,Windows发布了PowerShell 7.x,号称是全新设计的PowerShell,采用了.Net Core,让其可以跨平台使用,支持Windows、MacOS、Linux,建议大家安装,本篇文章美化的对象也是PowerShell 7.x,
PowerShell项目地址:https://github.com/PowerShell/PowerShell
找到满足自己系统的版本,选择LTS版(长期支持版)安装,为了方便,安装时勾选一下Add 'Open here' context menus to Explorer
,这样你在任意目录中都可以右键打开PowerShell 7。
我们会分别美化PowerShell 7.x和Terminal,PowerShell支持插件机制,利用这个机制,可以进行快速的美化;Windows Terminal本身就有主题机制,所有美化起来会更加简单,直接修改配置文件就可以了。
Windows中自带的PowerShell,默认会称为Windows PowerShell,而我们的安装的PowerShell,默认会称为PowerShell 7,两者也是独立的软件,我们配置的对象是PowerShell 7,对它的配置不会影响到Windows PowerShell,在Windows Terminal中可以如下形式打开两者。
为了方便起见,后文中提的PowerShell统一指新安装的PowerShell 7,当然,如果你想美化Windows PowerShell,其流程是一样的。
PowerShell 主要美化:-
更改整体配色。
改变输出样式,提示符前显示用户名和计算机名。
增强 Git 命令功能和 Git 分支状态显示。
自动补齐功能,可根据历史命令和当前目录补齐。
ls 命令显示色彩。
以管理员权限打开PowerShell。
安装posh-git与oh-my-posh插件,命令如下:
> Install-Module posh-git
> Install-Module oh-my-posh
posh-git插件其作用是增强PowerShell对Git的支持,比如按Tab后自动提示Git相关的命令。
oh-my-posh插件是PowerShell下一款知名的主题管理插件,它下面有多种主题,安装完后吧,只需要简单选择就可以获得美观的PowerShell。
两个插件都在Github上,对于网络环境不好的朋友,Install-Module就会下载失败,此时你需要手动下载一下。
posh-git: https://github.com/dahlbyk/posh-git
oh-my-posh: https://github.com/JanDeDobbeleer/oh-my-posh
安装完之后,可以尝试使用下面命令。
# 这是开启默认配置的
> Set-Prompt
# 设置主题,Agnoster 是主题名
> Set-PoshPrompt Agnoster
很多教程中,使用Set-Theme来选择主题,但后来Set-Theme被重命名为Set-PoshPrompt了。
敲完上述命令后,PowerShell就使用了名为Agnoster的主题,美观了一些,但关闭PowerShell再打开,会发现,主题效果没有了,此时我们需要添加相应的配置文件,其具体路径在$PROFILE
这个环境变量上,使用vscode打开则可,注意要在PowerShell 7的环境下打开,如果在Windows PowerShell环境下打开,修改的是Windows PowerShell配置文件。
> code $PROFILE
添加如下内容。
Import-Module posh-git
Import-Module oh-my-posh
Set-PoshPrompt Agnoster
将上述内容添加到配置文件后,再次开启PowerShell 7,就有主题效果了,但其字体是乱码,下一步就是配置可以兼任的字体。
这里我使用了名为Fantasque Sans Mono
的字体,下载地址:https://github.com/belluzj/fantasque-sans/releases/tag/v1.8.0,我使用了其中的Normal类型。
解压文件,将TTF路径下的字体全部安装,安装时,右键->选择安装给所有用户。
再次打开PowerShell,选择默认值
选择刚刚安装的字体。
字体设置完好后,我们安装ColorTool自定义PowerShell文字的颜色。
ColorTool与oh-my-posh的差异在于,oh-my-posh更改的是显示内容的整体风格,而ColorTool更改的是文字颜色,如果你觉得oh-my-posh够看了,可以跳过ColorTool这一步。
ColorTool是微软官方出品的更改PowerShell字体颜色的工具,我们可以通过scoop对它进行安装。
啥叫scoop?
scoop是windows的包管理工具(非官方),其作用类似于Centos的yum或MacOS的homebrew,项目地址:https://github.com/lukesampson/scoop
打开PowerShell安装一下scoop,命令如下:
# 设置执行权限
> Set-ExecutionPolicy RemoteSigned -scope CurrentUser
# 从网络下载脚本并安装
> Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
如果你网络异常,访问不到get.scoop.sh,可以从我百度网盘中下载scoop-installs.ps1这个脚本(从官方上下载上传到百度网盘的),DownloadString方法传入下载时存放ps1脚本的路径则可。
scoop安装完后,便可以利用scoop安装colortool,命令如下:
# 安装微软官方颜色工具
> scoop install colortool
# 查看内置的配色方案,共有 8 种
> colortool --schemes
# 设置主题,后面是配色方案名称。
> colortool OneHalfDark.itermcolors
效果如下图:
随后我们通过DirColors插件增强一下ls命令在PowerShell中的效果,具体而言就是让ls返回的结果有颜色,该插件安装方式如下:
# 安装 DirColors
> Install-Module DirColors
然后打开PowerShell配置,在末尾添加上
Import-Module DirColors
重新打开PowerShell后,ls命令的结果便有颜色了。
最终,PowerShell的配置文件如下:
这样,PowerShell就美化完了。
PowerShell配置完后,接着就来配置一下Windows Terminal。
与PowerShell不同,Terminal通过配置文件的形式进行自定义,它具有2个重要的配置文件:default.json
和setting.json
,default.json
默认不能被修改,所以我们主要操作setting.json
。
打开Terminal的设置,会来到setting.json文件。
setting.json
主要分成 四部分:
Global
Windows Terminal APP 整体的配置,启动参数、样式等,对应下图的 Global Config
。
profiles
配置每个终端的样式。
schemes
终端配色方案。
actions
定义快捷键操作,一般默认即可。
先将目光看到profiles,该节点下是不同终端的配置,你会发现一个叫Windows PowerShell(PowerShell 5.x)和PowerShell(PowerShell 7)的节点,我们主要修改PowerShell节点。
第一步,为其设置字体,Terminal这里,我选择微软官方推荐的Cascadia Code字体,相关信息:https://docs.microsoft.com/zh-cn/windows/terminal/cascadia-code
你也可以通过我的百度网盘下载。下载完后,我安装了otf/static/CascadiaCodePL-Bold.otf
字体,然后将Terminal的配置修改一下。
{
"guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
"hidden": false,
"name": "PowerShell",
"source": "Windows.Terminal.PowershellCore",
// 配色方案
"colorScheme":"One Half Dark",
// 刚刚下载安装的Cascadia Code字体
"fontFace":"Cascadia Code PL"
}
随后再按官方文档,随意添加了一些配置,我最终的配置如下:
{
"guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
"hidden": false,
"name": "PowerShell",
"source": "Windows.Terminal.PowershellCore",
// 配色方案
"colorScheme":"One Half Dark",
// 刚刚下载安装的Cascadia Code字体
"fontFace":"Cascadia Code PL",
// 缩放方式
"backgroundImageStretchMode":"uniformToFill",
// 对齐方式
"backgroundImageAlignment":"center",
// 开启毛玻璃效果
"useAcrylic":true,
// 毛玻璃透明度
"acrylicOpacity":0.8
}
最后,将目光主要到schemes上,它同样是个数组,用于存放终端的配色,我使用的配色方案为:
"schemes": [
{
"name": "Afterglow",
"black": "#151515",
"red": "#ac4142",
"green": "#7e8e50",
"yellow": "#e5b567",
"blue": "#6c99bb",
"purple": "#9f4e85",
"cyan": "#7dd6cf",
"white": "#d0d0d0",
"brightBlack": "#505050",
"brightRed": "#ac4142",
"brightGreen": "#7e8e50",
"brightYellow": "#e5b567",
"brightBlue": "#6c99bb",
"brightPurple": "#9f4e85",
"brightCyan": "#7dd6cf",
"brightWhite": "#f5f5f5",
"background": "#212121",
"foreground": "#d0d0d0",
"selectionBackground": "#303030",
"cursorColor": "#d0d0d0"
}
],
可以自行添加多个配色方案,然后通过name去指定要使用哪个,具体指定方式为,修改profiles
下某个节点的colorScheme。
一开始我使用了默认的配色方案One Half Dark
,现在想使用Afterglow,那么将其改为Afterglow
则可,更多配色方案可以通过这个网站去探究:https://windowsterminalthemes.dev/。
这段时间我进入了互联网广告行业,需要学习很多新的内容,也需要研究如果用机器学习提升公司广告投放模型的效率,所以更新比较少,后面有机会跟大姐分享一些机器学习和互联网广告相关的经验。
这个领域,很有意思。