WindowsTerminal是微软在Build2019开发者大会推出一款新命令行终端工具,WindowsTerminal被设计为访问PowerShell、Cmd和WindowsLinux子系统(WSL)等环境。
功能介绍
Windows终端
Windows终端是一个新的、现代的、功能丰富的、针对命令行用户的高效终端应用程序。它包含了许多Windows命令行社区最常要求的特性,包括对选项卡、富文本、全球化、可配置性、主题和样式等的支持。
该终端还需要满足我们的目标和措施,以确保它保持快速和高效,不消耗大量的内存或电力。
Windows控制台主机
Windows控制台主机,conhost。exe是Windows最初的命令行用户体验。它还托管了Windows的命令行基础设施和Windows控制台API服务器、输入引擎、呈现引擎、用户首选项等。这个存储库中的控制台主机代码是构建Windows中的conhost.exe的实际源代码。
自从2014年获得Windows命令行以来,该团队向控制台添加了几个新特性,包括背景透明度、基于行的选择、对ANSI/虚拟终端序列的支持、24位颜色、一个伪控制台(“ConPTY”)等等。
然而,由于Windows控制台的主要目标是保持向后兼容性,我们无法添加社区(和团队)在过去几年一直想要的许多功能,包括标签、unicode文本和表情符号。
这些限制导致我们创建新的Windows终端。
在命令行团队的博客中,您可以阅读更多关于命令行,特别是Windows命令行发展的文章。
共享组件
同时整顿Windows控制台,我们现代化它的代码库,干净地分离逻辑实体模块和类,介绍了一些关键的扩展点,取代了几个老,本土集合和容器更安全、更高效的STL容器,使代码更简单、更安全的使用微软的Windows实现图书馆——很快就会回来的。
这次彻底的修改导致了几个控制台的关键组件可以在Windows上的任何终端实现中重用。这些组件包括一个新的基于directwritt的文本布局和呈现引擎、一个能够同时存储UTF-16和UTF-8的文本缓冲区、一个VT解析器/发射器等等。
创建新的Windows终端
当我们开始规划新的Windows终端应用程序时,我们研究和评估了几种方法和技术堆栈。我们最终决定,最好的办法是继续投资c++代码库,这样我们就可以在现有的控制台和新终端中重用前面提到的几个现代化组件。此外,我们意识到这将允许我们构建终端的大部分核心本身作为可重用的UI控件,其他人可以将其合并到自己的应用程序中。
这项工作的结果包含在这个repo中,并作为Windows终端应用程序交付,您可以从MicrosoftStore下载,或者直接从这个repo的发行版下载。
基本简介
WindowsTerminal还支持表情符号和基于GPU的文本呈现。WindowsTerminal新工具计划在6月中旬推出,这是微软在Windows10上改进开发者环境的最新努力。
微软此前还将Linux命令行添加到Windows10,同时将原生OpenSSH添加到Windows10系统,甚至在Windows应用商店中发布了Ubuntu、SUSELinux和Fedora。
支持x86、x64和arm64,最低要求Windows10Build18382版本。
需要注意的是,该项目使用git子模块处理一些依赖项,想要确保子模块更新,请在构建器使用如下命令检查:
gitsubmoduleupdate--init--recursive
其中,OpenConsole.sln可在VisualStudio中构建,或者使用MSBuild通过命令行来构建:
nugetrestoreOpenConsole.sln
msbuildOpenConsole.sln
更新日志
拆分窗格!默认情况下,现在包含了用于分割的键绑定。(#3585)
Alt+Shift+-,Alt+Shift+=将水平和垂直分裂。
Alt+←↑→↓在窗格之间移动。
Alt+Shift+←↑→↓将调整窗格大小。
现在,分割只启动您的默认配置文件。
聚焦窗格周围现在有一个强调色边框(#3060)
跟踪#1000中窗格的其他计划!
我们的窗口边框有了重大的改变。边境现在很好。厚度消失了。(#3394)
已知问题:如果窗口设置为黑色主题,并且你关闭了“在标题栏上使用我的强调色”设置,你的窗口边框将是白色的。真的很白。尽管如此,我们认为这是一个重要的进步。
当您最大化终端时,它们将不再挂在其他监视器上。
它们将不再意外地膨胀到“每边一英寸”的巨大尺寸。
调整大小的句柄现在基本上与您期望的完全一致。
非常感谢@greg904不知疲倦地为我们带来这个!
所有的输入法编辑器(水墨、表情符号、中文、日文和韩文,以及其他各种输入法)现在都会出现,出现在正确的地方,提供输入反馈,并实际工作。(#1919)
你现在可以用suppressApplicationTitle关闭动态标题;这样做时,选项卡将保留其原始配置文件的名称或tabTitle(#2814)
RTF数据现在被复制到剪贴板(#3535)
我们终于赶上了1997年的技术水平,所以更多的应用程序(通常是旧的应用程序)将收到彩色的粘贴内容。
您现在可以使用selectionBackground(在配置文件级别)设置一个选区的背景颜色(#3471)
标签现在可以重新排序!(#3478)
已知问题:您不能重新排序标签时,运行作为管理。我们在第3581号上追踪这个。
你可以试试,但肯定会崩溃。
全屏模式现在存在,你可以使用Alt+enter或F11(#3408)来输入
您可以使用toggleFullscreen命令重新绑定全屏模式。
Azure云Shell将在ARM64设备上提供(#3489)
键绑定现在支持参数;检查一些关于如何工作的示例的默认设置(#3391)
例如,你不必打开设置:“command”:“newTabProfile0”现在更好的表达为“command”:{“action”:“newTab”,“index”:0}。它看起来更加冗长,但是它却更加灵活。
一个键绑定,Ctrl+0,被添加到重置终端的字体大小为“默认”(如果你放大了它)(#3505)
使用resetFontSize命令重新绑定它