精致漂亮的界面和高效便捷的开发工具就像是台前和幕后,前端er的眼里容不下一个丑陋的盒子,也免不了嫌弃Windows系统审美上的落后……
同样是终端,为什么别人家的终端那么漂亮,我们CMD就是傻大黑粗?你家设计师审美独特做工考究,我家的就缺根筋吗?——还真是。
诚然,CMD是历史遗留的产物,拿去和Mac的终端比本就不该抱有什么指望。尽管微软官方推陈出新,PowerShell基本做到完全替代CMD,却仍未解决外观上的简陋不养眼、不支持Win彩色Emoji和Unicode字符的问题。
倘若把PowerShell看作是CMD的升级的话,似乎也只是浮光掠影,一尘不变,反倒徒增烦恼——我想用WIN+R开个PowerShell还得把‘PowerShell’完整打出来
 

指令启动cmd更快且不易出错

终于,微软官方发布了这个工具,解决了上述所有问题,让我不需要再羡慕Mac。

 

姗姗来迟的官方解决方案——Windows Terminal

亚克力毛玻璃界面
窗格/窗口内分屏

主要功能

  • 多选项卡
  • 窗格(窗口内分屏)
  • Unicode和UTF-8字符支持
  • GPU加速文本呈现引擎
  • 自定义主题、自定义文本、颜色、背景颜色/图片
  • 快捷键绑定

若图中的界面正是令你心驰神往的Windows终端,请完整阅读以下教程或选择性进行配置。

笔者注:下文使用了较多篇幅用于展示配置文件中代码,遂直观看来略显枯燥,但实际上完整配置完只需要短短几分钟(在网络条件良好的情况下)。

如何使用

  • 软件准备
  • 外观配置
  • 功能配置

软件准备

1.  PowerShell

  • Win10自带的多为PowerShell v1.0,由于低版本不支持部分所需命令,请手动更新至 最新版
  • $PSUersionTable        #可通过命令查看PowerShell版本 

2. Windows Terminal

  • 打开 应用商店 单击获取按钮,免费获取后跳转值本地应用商店
  • 或者直接打开Win10本地应用商店搜索Windows Terminal

3. Cascadia Code 字体 ( 推荐 )

  • 解压后分別进入/otf, /ttf > 使用 Ctrl+A选中全部字体 > 为所有用户安装
  • 全部安装好的字体包括 Cascadia Code, Cascadia Code PL, Cascadia Mono PL, Cascadia Mono PL, Mono即等宽字体,PL即连字
  • Cascadia的连体似乎比Fira Code多,个人感觉代码排版和命令行的字体需求有微妙的区别, 前者合适Fira Code,后者合适Cascadia.

4.  原理

  • 如果把Windows Terminal比作浏览器,则系统已安装的PowerShell,CMD等像是互不相干的网页的选项卡
  • Terminal没有图形设置界面,其配置文件是一个JSON格式的文件:setting.json
  • 其配置文件可以对Windows Terminal进行全局设置
  • 其配置文件可以对每个在Windows Terminal下运行的本地终端进行单独配置,不影响本地终端本身,像是一层遮罩、蒙版

setting.json预览

{
    //默认Profile环境,即启动Terminal时的环境
    "defaultProfile":
    "requestedTheme":"dark" //窗口主题
    
    "profiles": [   //Profiles列表
        {           //列表首个选项&新建选项卡选项
           ...      //自动生成UUID和基础配置
        }
    ],
    
    "schemes": [   //各终端自定义配色方案 
        {
           ...
        }
    ],
    
    "keybindings": [] //设置快捷键绑定
}

     

5.快捷启动

  • 与cmd快捷启动相同
  • WIN+R
  • 键入‘WT’
  • ENTER
  • ALT+ENTER以为管理员权限启动

界面配置

挑选列表中喜好的方向选择配置

  • 启动时默认窗口
  • 新增选项卡默认窗口
  • 隐藏不必要的Profile
  • 亚克力玻璃效果
  • 背景颜色、背景图片、选项卡图标、选项卡名称
  • Git状态颜色编码提示符
    • PowerLine连体字

开始设置

  1. 备份setting.json,文件路径参考:
    $Username\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\setting.json
  2. 打开setting.json
    建议使用NotePad++或VSCode等具有错误检查的编辑器,可以使用记事本但不推荐
  3. 以下代码格式与setting.json完全一致,未省略最外层 ‘{ }’

启动时默认窗口

{	//粘贴对应的UUID,不可缺少双引号、逗号
	"defaultProfile": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
	
	"profiles":
	[
		{	//UUID
			"guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
			...
		},
		...
	]
}

新增选项卡默认窗口

{
	"profiles":
	[	//处于最前面的{...}为新建选项卡默认选项
		//将整个{...}移至最前面即可,[...]中最后一个{...}后无逗号
		{
			"guid":"{574e775e-4f2a-5b96-ac1e-a2962a402336}",
			...
		},
		{
			"guid":"{6c94a779-ddf0-4a26-b80c-ccaf9d627a37}",
			...
		}
	]

隐藏不必要的Profile

隐藏下拉列表中不必要的选项
{
	"profiles":
	[
		{	//将UUID对应的cmd隐藏
			"guid":"{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
			"hidden":"true",	//true为隐藏,false为不隐藏
			...
		},
		...
	]
}

亚克力玻璃效果

{
	"profiles":
	[
		{	//为UUID对应的PowerShell 7设置, 其他终端同理
			"guid":"{574e775e-4f2a-5b96-ac1e-a2962a402336}",
			"acrylicOpacity":0.6, 	//透明度,设置0~1的浮点数
			"useAcrylic":true,		//是否开启亚克力效果
            ...
		},
		...
	]
}

背景颜色、背景、选项卡图标、选项卡名称

{
	"profiles":
	[
		{	//对UUID对应终端生效
			"guid":"{574e775e-4f2a-5b96-ac1e-a2962a402336}",
			...
             "name": "Aliyun_lhg",
             "icon" : "E:\\a_WorkPlace\\PhotoShop\\icon\\if_Ubuntu.ico",
			//选项卡名称、选项卡图标
			"backgroundImage":"C:\\Directory1\\Directory2...",
			"backgroundImageOpacity":0.3,
			"backgroundImageAlignment":"topleft",
			"backgroundImageStretchMode":none
			//背景图像		路径用双斜杠
			//背景图像浮点数 0~0.1浮点数
			//背景图像对齐   默认值"center" 
				//center  left top right bottom 
				//topLeft topRight bottom 
				//topLeft topRight bottomLeft bottomRight
      //背景图像拉伸模式
        //none  fill  uniform  uniformToFill
		},
		...
	]
}

Git状态颜色编码提示符

  1. 为PowerShell安装相关插件

  • Posh-Git
#将Git状态信息添加到提示,为Git命令、参数、远程分支名添加tab自动补全
Install-Module posh-git -Scope CurrentUser -Force SkipPublisherCheck
  • On-My-Posh
#为 PowerShell 提示符提供主题功能
Install-Module on-my-posh -Scope CurrentUser -Force SkipPublisherCheck
  • PSReadline
#允许在 PowerShell 中自定义命令行编辑环境
Install-Module -Name PSReadLine -Scope CurrentUser -Force -SkipPublisherCheck

 

2. 配置PowerShell提示符

$Username\Documents\PowerShell\profile.ps1

若无此文件则自行创建,用记事本打开,将以下三行输入进去

Import-Module posh-git
Import-Module oh-my-posh
Set-Theme Paradox

 

3. 配置Windows Terminal

打开setting.json

{
    "profiles":
    [
        {
            "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
            "fontFace": "Cascadia Code PL",
            ...
        },
        ...
    ]
}       

 

功能配置

  • 快捷键绑定
{
	"keybindings": [
        { "command": "命令名称", "keys": "快捷键" }
    ]
}

                快捷键
                使用ctrl+、 shift+、 alt+
 

命令名称功能默认值&备注
closeWindow单元格Alt + F4
newTab新选项卡Ctrl + Shift + 1
find搜索对话框Ctrl + Shift + F
openNewTabDropdown打开下拉菜单Ctrl+ Shift + Space
toggleFullscreen打开设置Ctrl + ,
closeTab关闭选项卡 
duplicateTab复制选项卡Ctrl+ Shift+ D
.........
  • 窗格/窗口内分屏

垂直拆分:在焦点窗格右侧新建窗格,默认值Alt+Shift+plus
水平拆分:在焦点窗格下方新建窗格,默认值Alt+Shift+-
配置方法,使用上文的快捷键绑定方法:

{
    "keybindings":[
        //将水平拆分绑定为ctrl+shift+-
        { "command": { "action": "splitPane", "split": "horizontal" }, "keys": "ctrl+shift+-" },
        //split属性值可取vertical horizontal auto
        //分別代表垂直拆分、水平拆分、自动创建最大表面积的窗格
        { "command": { "action": "splitPane", "split": "vertical" }, "keys": "alt+shift+plus" },
        { "command": { "action": "splitPane", "split": "auto" }, "keys": "alt+shift+|" }
    ]
}

 

在窗格间进行切换
​ 按住ALT+箭头在窗格之间移动焦点


​ 可使用moveFocus命令切换指定窗格

{
    "keybindings":[
        { "command": { "action": "moveFocus", "direction": "down" }, "keys": "alt+down" },
        { "command": { "action": "moveFocus", "direction": "left" }, "keys": "alt+left" },
        { "command": { "action": "moveFocus", "direction": "right" }, "keys": "alt+right" },
        { "command": { "action": "moveFocus", "direction": "up" }, "keys": "alt+up" }
    ]

 

调整窗格大小

{
    "keybindings":[
    { "command": { "action": "resizePane", "direction": "down" }, "keys": "alt+shift+down" },
		{ "command": { "action": "resizePane", "direction": "left" }, "keys": "alt+shift+left" },
		{ "command": { "action": "resizePane", "direction": "right" }, "keys": "alt+shift+right" },
		{ "command": { "action": "resizePane", "direction": "up" }, "keys": "alt+shift+up" }
    ]
}

 

  • SSH快速登陆
    经常使用 ssh user@machine 命令的用户可以利用WT内置的SSH客户端创建档案
{
    "profiles":
    [
        {	// Connect to Aliyun Server with SSH
            "guid": "{6c94a779-ddf0-4a26-b80c-ccaf9d627a37}",
        	"commandline": "powershell.exe ssh lhg@47.192.xxx.xx",        
		...
        }
    ]
}

 

启动终端后会直接提示输入密码:

 

指定ssh会话起始目录

{
    "profiles":
    [
        {	// Connect to Aliyun Server with SSH
          "guid": "{6c94a779-ddf0-4a26-b80c-ccaf9d627a37}",
        	"commandline": "ssh -t lhg@47.192.xxx.xx \"cd /data/bob && exec bash -l\""      
					...
        }
    ]
}

-t 标志强制执行伪终端分配。可用于在远程计算机上执行任意基于屏幕的程序。

小结

工欲善其事,必先利其器,有了丰神异彩的Windows Terminal,终于可以不用忍受那个无聊的黑框框了。如果在读完本文之后,你是否会有革故鼎新的冲动呢?希望这篇文章能帮助你你体验到 Windows Terminal的兼顾颜值和效率的优势,提升在 Windows 上的工作、开发效率。感谢阅读。

部分图片来源于网络