微软在几天前的build大会上展示了 `Windows Terminal`的威力,由于官宣要在6月中旬才上`Microsoft store`,还有一个多月要等呢。好在代码已公布在 github, 于是决定自己 build 后体验一番。遇到不少坑,大概整理一下流程,分享给大家。如果大家如果发现问题,欢迎指正。


**官方短视频如下:**
https://v.qq.com/x/page/p0869ovd7aw.html


build大会中的完整版视频(含英文字幕):
https://v.qq.com/x/page/e0870hucdzs.html

将Window 10 升级到1903版本

试过用Windows 10 更新助手(Windows 10 update assistant)来升级Windows 10, 发现只能升级到1809版本。而编译 github 上的 Microsoft terminal 代码必须使用Window 10的1903版本.

因为不升级,解决其他所有的问题,最后会报这个错(代号DEP 3321):

好在前不久听说了工具网站 MSDN, 我告诉你上可以下载到该版本的镜像。

关于版本选择,到底选Consumer版还是Business版呢?经大佬Edi Wang指点,得悉如下信息:

  • 如果你的 Windows 是 家庭版或专业版,请选择 Consumer
  • 如果你的 Windows 是 企业版,请选择 Business

至于ed2k://资源的下载,你使用百度云盘的离线下载也好,使用迅雷也行。

敲黑板: 安装好Windows 10 1903版后,如果不打算编译代码可直接跳到标题直接安装预编译版本继续阅读~

安装好git, 从github上clone代码

首先需要安装好 git for Windowshttps://gitforwindows.org/),然后使用 git 去 clone 一份代码。

Microsoft Terminal 的 github仓库是:

https://github.com/microsoft/Terminal

对应的 clone地址是:

https://github.com/microsoft/Terminal.git

打开命令行,使用cd命令,切换到自己平时存vs项目的路径(比如我切换到D:\Coding)。

接着只需要在Git Bash中输入如下命令即可:

git clone https://github.com/microsoft/Terminal.git

等 clone 完成,就可以进行下一步了。

确保 Clone 仓库完成后,还可以使用以下命令Clone子模块:

git submodule update --init --recursive

安装 VS 2019 和 .NET core 3.0 SDK

先安装 vs 2019 professional 或 enterprise版本,github上的文档提到了要编译 window terminal 必须勾选上:

  • Desktop Development with C++
  • Universal Windows Platform Development
  • Windows SDK version 10.0.18362.0

再安装好.net core 3.0 SDK,比较简单,就不再详述。

在vs的设置里,勾选.NET core下的"Use preview SDK"(使用.NET Core SDK预览版),重启 VS。

在 vs 2019 中打开Windows terminal项目(对应文件夹Terminal)下的OpenConsole.sln, 如果不勾选"使用.NET Core SDK预览版"直接编译,很可能会报下面的 Error:

重定解决方案目标

在上一步中,用vs2019打开OpenConsole.sln时,系统会提示你将项目重新定位到 v142。 对于“Windows SDK版本”,请选择“10.0.18362.0”。 将“Platform Toolset”设置为“Upgrade to v142”。

然后往下拖,按下图设置:

设置完后,单击最下面的OK。

当然,如果误点了"取消",也能通过右键单击整个Solution -> Retarget solution来设置:

设置好编译平台和启动的项目

在你尝试再次build之前,请确保你已经选择好与你的计算机匹配的编译平台(Solution Platform)。

不知道你一开始打开Solution OpenConsole.sln时编译平台和启动项目是什么样的,我的是这样的:

要正确地 build,这里需要根据自己电脑的实际情况来设置。比如我的x64的,就配置如下:

否则会出现很多错误。

编译成功后出现一个新的Powershell

解决完编译时的各种状况之后,Ctrl + F5 运行项目。

唉,和之前的Powershell有何不一样呢?按Ctrl + T之后会多了个菜单,同一个窗口中可以有多个Tab,而其他功能暂时没进来,等正式版。

尝试新的跨平台 PowerShell https://aka.ms/pscore6

任务栏中相应的图标为:

Ctrl + T之后, 右上角会出现一个以+开头的菜单

但你在菜单中切换到cmd的时候,视频中的酷炫效果就有一点出来的迹象了:

接下来,介绍一下如何在上面这个新的cmd中使用Linux命令,以我最熟悉的Ubuntu为例来介绍吧。

安装Ubuntu

在Microsoft store里搜索到Ubuntu,然后购买,安装。这实际上就是WSL (Windows Subsystem for Linux)。

当然,你想体验其他版本的 Linux,也是可以的,比如Arch Linux

在编译出来的命令行中使用Linux命令

安装完WSL版的 Linux 后,还需要开启WSL的权限:

以"管理员权限"另开一个PowerShell窗口,

然后输入如下命令:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

等这里的命令完成,就可以在build出来的 Terminal 中执行 Linux 命令了。

先在cmd中输入 ubuntu, 需要花一点点时间启动 Ubuntu, 设置好用户名和密码。

然后就可以愉快地玩Ubuntu了,下面我随便输入了几个命令 ps, touch, ls等,如下图所示。

## 直接安装预编译版本

如果自己不想配置和build,可以下载build好的体验一把:

https://pan.baidu.com/s/1Xrh-0KbsBmh-zJYsdtYqnA 口令: y233

当然,这个预编译版本的来源是:

https://twitter.com/thebookisclosed/status/1125480984068153344.

另外,Scott Hanselman写了一篇相关文章:

A new Console for Windows - It's the open source Windows Terminal - Scott Hanselman

https://www.hanselman.com/blog/ANewConsoleForWindowsItsTheOpenSourceWindowsTerminal.aspx,有园友已经将其部分内容翻译成了中文,见 提前体验让人"回归Windows怀抱"的Windows Terminal - 三升水

安装预编译版本的方法

解压下载到的文件 WindowsTerminal_SelfSigned_x86_x64_arm64.7,解压之。

选择后缀名为.cer的证书文件,右击选择"安装证书"。

图中蓝色的两处人选其一即可。

接下来,点另一个后缀名为.msixbundle的文件,就可以安装了:

如果要卸载,也很简单。只需在开始菜单中输入应用和功能,找到相应的软件,点卸载即可。

## 使用自定义主题

安装完 Ubuntu 之后,就可以体验有3类Tab风格的Terminal了,具体安装方法见前文。

ctrl + T,打开另一个 Tab, 此时会看到设置按钮,点击之,会弹出一个 profile.json的文件。

然后用我上传的主题文件 profile-my.json 的内容替换其中的内容,保存,一会就看到新的主题样式了。比如,新的PowerShell的样式如下:



当然了,你还可以根据自己的需要在这个配置的基础上自由发挥,不过提醒一点设置字体时要小心,如果该字体终端中找不到,切换类型时整个 Terminal 会崩掉。

为不同类型的 Tab 加上图标

可以在这个位置添加图标:

%LOCALAPPDATA%\packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\RoamingState

我在该文件夹中放入了一些32x32的PNG,然后在profile.json中可以用ms-appdata://开头的路径来引用图片资源。

图标可从这里获得:

icons

然后将下面新的profile-withIcons.json文件的内容替换之前的设置.

profile-withIcons.json

弄完后文件夹中的内容是这样的:

最后的使用效果是:

其他版本的主题文件:

profiles_Scott.json

profiles_baiyue.one.json

profile.json中更多配置参数的含义,各位需要自己去Solution Terminal中搜索相应的字段(C++代码)看看了~

## 使用 Emoji 表情

切换到WSL后,就可以体验 Emoji表情啦,一开始我用拼音输入法键入了几个,发现该方法下暂时不方便输入 Emoji 表情。

好在在Windows 10上还有另外两种方式可以输入Emoji 表情:

  • Windows 10自带的 Emoji 表情输入,有快捷键
  • 使用第三方 Emoji 表情工具,复制了贴进去

对于第一种方式,我也是刚会不久,Windows 10 中使用 【Win + .】 或 【Win + ;】可调出表情输入面板,然后继续使用 Win + . 可以选中表情。当然这里的. 和 ; 都是英文状态下的半角符号。

对于对二种方式,这里推荐一个字符网站http://cn.piliapp.com/symbol/(可能需要Kēxué地上网),找到自己想要的表情,点页面上方的复制,然后贴到 Terminal 中就好了。比如我随便输入了几个,效果如下:

要临时放大字体怎么办,按 Ctrl + 鼠标滚轮 即可。



后面这张图基本上覆盖了官方宣传视频中的所有 Emoji 表情 。

**备份地址:**

https://github.com/yanglr/WindowsDevTools/tree/master/awosomeTerminal

**其他玩法:**

Build and install Windows Terminal from Azure DevOps ? Keep IT tidy

https://blog.stomsvik.com/posts/2019/terminal-azure-devops/

如有什么疑问或建议,欢迎及时留言交流~

**参考:**

Terminal/README.md at master · microsoft/Terminal

https://github.com/microsoft/Terminal/blob/master/README.md

Windows 10 上WSL (Windows上的Linux 子系统)的安装指南 | Microsoft Docs

https://docs.microsoft.com/zh-cn/windows/wsl/install-win10

Donovan Brown | Building the new Windows Terminal with Visual Studio 2019

http://www.donovanbrown.com/post/Building-the-new-Windows-Terminal-with-Visual-Studio-2019

Windows Terminal profile.json

https://gist.github.com/fcharlie/7530d36175bc5249f1ae92be536238cd


作者简介:Bravo Yeung,计算机硕士,知乎干货答主(获81K 赞同, 38K 感谢, 235K 收藏)。曾在国内 Top3互联网视频直播公司工作过,后加入一家外企做软件开发至今。

如需转载,请加微信 iMath7 申请开白!

欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,学习能力的提升上有新的认识,欢迎转发分享给更多人。

欢迎各位读者加入 .NET技术交流群,在公众号后台回复“加群”或者“学习”即可。

文末彩蛋

微信后台回复“asp”,给你:一份全网最强的ASP.NET学习路线图。



回复“cs”,给你:一整套 C# 和 WPF 学习资源!



回复“core”,给你:2019年dotConf大会上发布的.NET core 3.0学习视频!

黑科技抢先尝 - Windows全新终端初体验(附无需编译就能安装的Preview版本及代码Build全过程)的更多相关文章

  1. 黑科技抢先尝(续) - Windows terminal中WSL Linux 终端的极简美化指南

    目录 修改默认源,为apt-get安装提速 安装python 和 python pip 安装 zsh 安装powerline-font中的特定字体 安装powerline-shell 修改~目录下的配 ...

  2. 黑科技抢先尝(续2) - Windows terminal中Powershell Tab的极简美化指南

    目录 安装python 安装git 安装powerline字体 主题定制 安装oh-my-posh 查看策略组的执行权限 使用choco 安装终端模拟器 - ConEmu 优化 PowerShell ...

  3. 屌丝就爱尝鲜头——java8初体验

    Java8已经推出,让我们看看他的魅力.让我们看看他改变较大的部分. 一.java8概述 Java8是由Oracle(甲骨文)公司与2014年3月27日正式推出的.Java8同时推出有3套语言系统,分 ...

  4. Kinect for Windows SDK开发初体验(一)环境配置

    1.开发环境需求 (1).硬件需求 a.需要拥有双核,2.66GHz以上的CPU. b.显卡支持Microsoft DirectX 9.0c; c.2GB的内存 d.Kinect for Window ...

  5. Windows Azure 免费初体验 - 创建部署网站

    前几天在看到有个学Windows Azure课程,送Windows Azure的活动,课程地址:http://www.microsoftvirtualacademy.com/ 在活得体验资格后,就迫不 ...

  6. Docker在Windows上的初体验

    作为Docker的初学者,我有几个疑问,找到了答案,并实践了一下,希望对和我一样的初学者有帮助: 1.Docker是什么? 大家对虚拟机应该比较熟悉,虚拟机和docker都是为了实现隔离. 虚拟机隔离 ...

  7. Git学习笔记(windows git之初体验)

    阿里国内镜像地址: https://npm.taobao.org/mirrors/git-for-windows/ 最近在学习廖雪峰老师关于git的教程,链接可以在我的首页找到.首先使用国内镜像下载并 ...

  8. CentOS 初体验十四:阿里云安装Gitlab

    网址:https://about.gitlab.com/install/#centos-7 https://blog.csdn.net/zhaoyanjun6/article/details/7914 ...

  9. 转 CentOS 初体验十四:阿里云安装Gitlab

        原文 https://blog.csdn.net/zhaoyanjun6/article/details/79144175 非Unix操作系统(Windows) GitLab是专为Unix操作 ...

随机推荐

  1. cocos2dx-3.1 接入多盟广告sdk+Android (2)

    上篇,把基本工作做完了,接下来,在C++下加入代码. 1.打开win32下的project,加入一个类.DomobAd.代码例如以下, <pre name="code" cl ...

  2. ReboletricSample工程搭建

    受到  Just Say No to More End-to-End Tests 文章链接:http://googletesting.blogspot.tw/2015/04/just-say-no-t ...

  3. poj1125--Floyd

    题解: 有N个股票经济人能够互相传递消息.他们之间存在一些单向的通信路径.如今有一个消息要由某个人開始传递给其它全部人.问应该由哪一个人来传递,才干在最短时间内让全部人都接收到消息. 显然,用Floy ...

  4. LeetCode(82)题解: Remove Duplicates from Sorted List II

    https://leetcode.com/problems/remove-duplicates-from-sorted-list-ii/ 题目: Given a sorted linked list, ...

  5. go echo studygolang ___go_build_myT_go__1_.exe

    https://github.com/studygolang/studygolang [stat]; 用户在线数据存到哪里:redis -> 表示存入 redis,这样支持多机部署; onlin ...

  6. CMake命令笔记

    project 为整个工程设置名称.版本和启用语言 project(<PROJECT-NAME> [LANGUAGES] [<language-name>...])projec ...

  7. 5 Maven生命周期和插件

        命令行的输入往往就对应了声明周期,Maven的生命周期是抽象的,其实际行为都是由插件来完成.生命周期和插件两者协同工作,密不可分. 一.何为声明周期     Maven的生命周期就是为了对多有 ...

  8. 代码空间项目 -- InstantiationException的异常

    java.lang.InstantiationException实例化异常.当试图通过newInstance()方法创建某个类的实例,而该类是一个抽象类或接口时,抛出该异常. 这次项目中查询type时 ...

  9. ThinkPHP验证码不现实的处理方法

    ThinkPHP测试的时候遇到验证码不显示的问题,主要解决思路如下: 1.php.ini是否开启gd库: 2.页面编码是否一致: 3.检查页面头部信息BOM,这是最主要的,把下面代码复制到根目录下,然 ...

  10. Ubuntu下声卡驱动解决方法alsa

    一.首先介绍一下什么是ALSA : Advanced Linux Sound Architecture 的简称为 ALSA ,译成中文的意思是先进的Linux声音架构(这是google翻译的):一谈到 ...