如何美化Windows的命令终端

前言

因为训练营录制课程需要,购买了一台Windows,自己平时用MacOS比较多,突然回到Windows的cmd,看着cmd那朴素的妆容,我一时难以接受,蹭着假期,折腾了一把,将它装扮了一下,先看最终效果。

如何美化Windows的命令终端_第1张图片

是不是感觉还可以,其实坑挺多的,如果感兴趣,那就看下去吧。

教程中使用到的部分资源我已传到百度云:

链接: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的命令终端_第2张图片

对于Windows Terminal,很多人都会误以为它是一个新终端,但其实它只是一个载体,用于承载windows已有的终端,简而言之,PowerShell与Windows Terminal是2个独立的软件,Terminal负责承载PowerShell,显示PowerShell的输出等等,它更像一个终端管家,用于集中式管理Windows上的各种终端,但它不是真正的终端。

因为PowerShell与Terminal是相互独立的,所以我们要美化出首图中的效果,就需要分别优化PowerShell与Terminal两者。

PowerShell 7.x

目前(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。

如何美化Windows的命令终端_第3张图片

美化原理

我们会分别美化PowerShell 7.x和Terminal,PowerShell支持插件机制,利用这个机制,可以进行快速的美化;Windows Terminal本身就有主题机制,所有美化起来会更加简单,直接修改配置文件就可以了。

Windows中自带的PowerShell,默认会称为Windows PowerShell,而我们的安装的PowerShell,默认会称为PowerShell 7,两者也是独立的软件,我们配置的对象是PowerShell 7,对它的配置不会影响到Windows PowerShell,在Windows Terminal中可以如下形式打开两者。

如何美化Windows的命令终端_第4张图片

为了方便起见,后文中提的PowerShell统一指新安装的PowerShell 7,当然,如果你想美化Windows PowerShell,其流程是一样的。

配置PowerShell

PowerShell 主要美化:-

  • 更改整体配色。

  • 改变输出样式,提示符前显示用户名和计算机名。

  • 增强 Git 命令功能和 Git 分支状态显示。

  • 自动补齐功能,可根据历史命令和当前目录补齐。

  • ls 命令显示色彩。

以管理员权限打开PowerShell。

如何美化Windows的命令终端_第5张图片

安装posh-git与oh-my-posh插件,命令如下:

> Install-Module posh-git
> Install-Module oh-my-posh
如何美化Windows的命令终端_第6张图片

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类型。

如何美化Windows的命令终端_第7张图片

解压文件,将TTF路径下的字体全部安装,安装时,右键->选择安装给所有用户。

再次打开PowerShell,选择默认值

如何美化Windows的命令终端_第8张图片


选择刚刚安装的字体。

如何美化Windows的命令终端_第9张图片


字体设置完好后,我们安装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

效果如下图:

如何美化Windows的命令终端_第10张图片


随后我们通过DirColors插件增强一下ls命令在PowerShell中的效果,具体而言就是让ls返回的结果有颜色,该插件安装方式如下:

# 安装 DirColors
> Install-Module DirColors

然后打开PowerShell配置,在末尾添加上

Import-Module DirColors

重新打开PowerShell后,ls命令的结果便有颜色了。

最终,PowerShell的配置文件如下:

如何美化Windows的命令终端_第11张图片


这样,PowerShell就美化完了。

如何美化Windows的命令终端_第12张图片


配置Windows Terminal

PowerShell配置完后,接着就来配置一下Windows Terminal。

与PowerShell不同,Terminal通过配置文件的形式进行自定义,它具有2个重要的配置文件:default.jsonsetting.jsondefault.json默认不能被修改,所以我们主要操作setting.json

打开Terminal的设置,会来到setting.json文件。

如何美化Windows的命令终端_第13张图片


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/。

结尾

这段时间我进入了互联网广告行业,需要学习很多新的内容,也需要研究如果用机器学习提升公司广告投放模型的效率,所以更新比较少,后面有机会跟大姐分享一些机器学习和互联网广告相关的经验。

这个领域,很有意思。

你可能感兴趣的:(python,java,linux,人工智能,编程语言)