開發軟體是一項挑剔的工作。在一天結束時,整個工作都是關於為一個挑剔的解譯器寫指令,這個解譯器將關閉你所努力工作的一切。好吧,現在是時候安裝Windows終端並發現更好的方法。
在這份終極指南中,您將了解到開發人員中最好的控制台之一;Windows終端。您將全面了解Windows終端的幾乎所有功能。您將了解它如何幫助您在Windows上使用命令行。
Windows終端通過現代終端功能(如標籤、窗格,甚至背景圖像)增強了控制台體驗。您甚至可以在不必在控制台會話之間切換的情況下,將完整的Linux shell與Windows PowerShell或cmd.exe並行運行。
本文將介紹許多Windows終端的功能。這將是一個實戰教程,所以準備好開始工作吧!
先決條件
安裝和使用Windows終端本身的要求非常基本。您只需要一台安裝有Windows 10的機器,版本為1903(2019年5月)或更新版本。如果您想跟著本文中的所有演示進行操作,您還需要安裝其他一些工具:
- 啟用了Windows子系統 for Linux(WSL)功能,並安裝了Linux發行版(所有示範均使用Ubuntu 20.04)
- Visual Studio Code (VS Code)
- Python安裝了豐富文本庫
- Visual Studio 2019或更高版本,並安裝了:
- Windows 10 1903 SDK
- 安裝了桌面開發與 C++ 組件
- 安裝了通用 Windows 平台開發組件
- 安裝了 C++ (v142) 通用 Windows 平台工具
終端 vs. 控制台 vs. Shell
由於本文將涉及許多術語,因此首先了解一些術語差異非常重要,以免混淆。
儘管概念類似,但重要的是要注意終端不同於控制台不同於 Shell。每個都有自己特定的目的。Scott Hanselman 在一篇出色的博客文章中對每個術語的定義進行了解釋,但在本文中將如下使用:
- 終端:Windows 終端應用程式。
- 控制台:任何不是 Windows 終端的控制台主機應用程式。
- Shell:終端與操作系統之間的程序。(例如 pwsh、cmd、zsh 等)
安裝 Windows 終端
有幾種不同的方法可以安裝Windows Terminal,但目前最簡單的方法(也是微軟建議的方法)是從Microsoft商店安裝。您可以下載兩個不同版本;標準的Windows Terminal和Windows Terminal預覽版。
對於本文,您可以使用其中任何一個。安裝過程很簡單,所以我們不會在本文中進行覆蓋,並假設您已經安裝了它。
第一次打開Windows終端時,它看起來並不令人印象深刻。您將需要進行許多調整才能達到這一目標,但一切都始於下面這樣的窗口。

請注意,Windows終端有四個主要組件:
- 終端窗口 – 這是您將進行大部分工作的地方,也是您可以自定義的地方。
- 標籤名稱 – Windows終端支持標籤,這意味著您可以有不同的殼
- 新標籤 – 此按鈕將打開默認配置文件的新標籤
- 配置文件列表 – 這將列出可用於打開的配置文件。
Windows終端具有極簡的佈局,但是它背後隱藏著許多功能。
從源代碼構建終端
儘管這是微軟的Windows終端,但它也是完全開源的,這意味著如果你願意,你可以為它做出貢獻。它是一個具有非常活躍社區的C++程序。
即使這是一個GA(一般可用)的產品,但在撰寫本文時仍然有一些小問題正在解決中,並且有一些功能在未來開發計劃中。也許是你幫助對此做出貢獻!
如果你是一個開發者,並且真的想深入了解代碼,你可以從PowerShell構建Windows終端,按照以下步驟進行:
- 運行
git submodule update --init --recursive
來更新所有git子模塊 - 運行以下PowerShell命令:
settings.json文件:自定義所有內容
最終,您可能會想將終端自定義為自己的樣子。Windows終端最好的地方之一就是它的可自定義性。自定義Windows終端最常見的方式是編輯位於%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\目錄中的settings.json文件。
設置來訪問settings.json文件。
settings.json文件是您將對Windows終端進行大部分自定義的地方,直到提供了圖形選項為止。
Windows 终端团队已承诺在即将发布的版本中很快会发布一个 GUI 来管理设置!
除了将所有设置存储在一个方便的位置之外,当设置存储在一个 JSON 文件中时,您可以将您的设置放入源代码控制中或在移动到不同的计算机时备份它们。
您甚至可以与其他人分享设置。如果您想看一下一个示例 settings.json 是什么样子,请在这里查看一个。
settings.json 模式
如果您使用 Visual Studio Code,终端包含一个 JSON 模式,它将帮助验证您在 settings.json 中进行的任何自定义,包括自动填充任何新设置。
只要您保存了更改(只要 settings.json 仍然有效),新更改将立即反映在终端中,或者会在不需要刷新终端的情况下显示错误。
尽管不需要使用 Visual Studio Code 来编辑 JSON,但在定制 Windows 终端时强烈推荐使用。
目前有四個不同部分的settings.json控制Windows終端的外觀和感覺:全局、配置文件、方案和鍵綁定。讓我們來看看每個部分。
全局
全局部分負責確定Windows終端的行為。始終位於文件頂部,全局部分控制著例如在關閉時確認、視覺主題和默認配置文件等事項。你可以在以下代碼片段中看到一個示例。
配置文件
A profile is a configuration of the Windows Terminal that has its own shell, theme, and settings. When you open up a Windows Terminal profile, it will open a session with the assigned shell, environment, or WSL distribution. This means you can have different shells open at the same time, or different sessions of the same shell, which can be useful when testing code cross-platform or need to run a background process.
Windows終端默認帶有三個配置文件:Windows PowerShell、cmd.exe和Azure Cloud Shell。如果已安裝WSL,它還將為每個已安裝的WSL發行版生成一個配置文件。它還包括一個默認部分,將應用於settings.json中的每個配置文件的設置。這是放置Unicode兼容字體的好地方,稍後將在本文中介紹。
您可以在以下代码片段中看到配置文件的示例。
创建新配置文件
设置配置文件可以很有用,如果您想在同一个 shell 上添加变体,或者向终端添加自定义远程配置文件。
要在 settings.json 中创建一个新的 Windows 终端配置文件,您需要执行以下步骤:
确保在每个配置文件后面添加逗号,除了最后一个,以使 JSON 有效。
- 复制您的配置文件部分中的任何配置文件。这些从 JSON 文件中的 list 节点的
[
开始,到]
结束。这是上面第七到第十四行。 - 通过在任何 PowerShell 会话中运行
[guid]::NewGuid()
来生成新的 GUID。将您新配置文件中的guid
当前值替换为您生成的 GIUD。当终端设置默认配置文件时,GUID 是随机生成的。 - 添加或更改任何其他参数以自定义配置文件。
- 复制 settings.json 的内容,并通过 JSON Lint 或另一个 JSON Linter 运行以验证其是否仍然有效。修复任何问题。
- 保存您的更改。
在配置檔案中有許多選項可供設定。請注意,如果您在 settings.json 中的預設部分中有一個設置,並且您在新配置檔案中設置了相同的設置,則會覆蓋默認設置。要完整了解,請查看 Windows 終端設置文檔。
方案
此部分是關於您的 Windows 終端配置檔案的顏色方案。顏色方案告訴終端機每個出現在終端機中的顏色要使用的十六進制值。由於終端機可以以24位顯示顏色,這些顏色可以變得非常豐富多彩。每個方案都會有一個名稱和一個顏色列表,這些顏色映射到一個十六進制值,可以像下面所示輕鬆更改。
這些顏色將對應於您在 Windows 終端中使用該方案時的背景和文本顏色。如果您在 Visual Studio Code 中打開了 settings.json,您可以單擊具有圖形滑塊的十六進制值,該滑塊顯示實際顏色,如下所示。

终端主题(在 Windows 终端中称为方案)在终端程序世界中并不罕见。虽然没有一种单一的方式可以创建一个跨不同终端应用程序都适用的主题(方案),但你可以找到许多工具来创建它们,无论你使用什么应用程序,都可以找到一个预制的轻松,或者自己制作一个!

键绑定
键绑定是 Windows 终端分配快捷键的方式,用于操作如新窗格、选项卡,甚至基本操作如复制和粘贴。有很多操作可以分配自定义快捷键,让你轻松定制终端,使其符合你的习惯。
你可以在以下代码片段中看到一些默认的键绑定。
到目前为止,你的终端可能已经开始按照你的期望行事,但你还没有完成。现在是时候学习如何继续自定义终端的外观和感觉了。
视觉设置
當您大部分工作生涯都在屏幕上盯著文字時,值得多花一些功夫讓這些文字更容易閱讀。無論是更改字體、大小還是顏色,花一點時間來美化您的新 Windows 終端機,將在整個工作日盯著它後帶來巨大的回報。
文字增強
Windows 終端機最廣告的功能之一是 24 位色彩支持和加速的文字渲染。單獨看可能不太令人印象深刻,直到您將其與 powershell.exe 或 cmd.exe 的文字和顏色渲染方式進行比較。使用 Python 的 rich 库進行演示,很明顯可以看到舊控制台和 Windows 終端機之間渲染能力的差異有多大。

在 Windows 終端機和 powershell.exe 中打開 Python 的 rich 库
Windows 終端機還支持 Unicode 字符,這意味著它可以與其他字母和符號一起使用,包括西里爾字母、漢字,以及任何其他字符都可以無問題地呈現。這是因為 Cascadia Code 字體,稍後將進行介紹。

使用 Windows 終端機和 powershell.exe 以日文漢字書寫
這具有一些明顯的國際化好處,但支持 Unicode 和 UTF-8 也意味著 Windows 終端機還可以支持…
Emoji ?
表情符號可能看起來不像是要包含在命令列工具中的有用元素,但它們越來越成為開發中的主流。軟體工程師正在使用它們來標記提交和問題,在諸如 Slack 或 Microsoft Teams 之類的應用程式中快速回應訊息,甚至還有一種表情符號程式語言。雖然其中一些顯然比其他的更有用,但顯然表情符號並不會消失。
以下是在powershell.exe控制台上渲染表情符號的示例,以及使用 Python 的 rich 库在 Windows Terminal 上的相同示例。請注意終端機很漂亮
一行並觀察差異。

使用 Python rich 文本庫顯示表情符號
卡斯卡迪亞字體
如前所述,Cascadia Code 字體可以顯示一些字符。但該字體還有一些其他細微的變化,使其更容易長時間觀看,例如連字。
順帶一提:設計 Windows Terminal 的同一團隊專門為 Windows Terminal 使用而製作了 Cascadia Code 字體。
除了特殊字符外,Cascadia Code字体还支持连字。连字是在屏幕上显示时略有不同的符号。您可以在Cascadia Code 这里查看支持的连字列表。

A printout of all the ligatures supported by Cascadia Code. Code here.
如果您不喜欢使用连字,但仍希望享受Cascadia Code的其他好处,Windows终端还附带了一种名为Cascadia Mono的字体,它正是如此。它们每个都有一个用于Powerline的变体(Cascadia Code PL
和Cascadia Mono PL
),接下来将介绍它们。
Powerline
Powerline最初是一个为shell添加信息的vim插件,在Linux世界中存在已久。其想法是在提示符中提供更多信息,使您在控制台工作时可以更轻松地获得更多信息。
Powerline已被移植、克隆和复制到每个现代shell中,包括PowerShell,但由于以前控制台的限制,它一直缺少某些功能。终端通过包含称为glyphs的特定符号来解决该问题。glyphs用于powerline,以便在一瞥之间提供更多信息。
Powerline在PowerShell中
对于PowerShell,您可以通过使用下面的示例代码安装oh-my-posh来配置类似于Powerline的提示符。
安裝完成後,您的 PowerShell 提示符將提供更多信息,包括 git 分支名稱以及遠程和本地存儲庫之間的提交。您可以在下面看到一個示例。

這是來自 oh-my-posh 的 Paradox 主題,並進行了一些自定義以顯示當前操作系統和 PowerShell 版本。
在 Bash 中使用 Powerline
對於 Bash,您需要安裝類似 shell 的 zsh 或 fishshell。這些添加了一些功能和自定義突出顯示到終端,但單獨使用起來可能有些困難。建議您還安裝 zsh 的框架,如 ohmyzsh,這將使其使用起來更加輕鬆。ohmyzsh 提供的主題和 bash 提示符自定義與 oh-my-posh 為 PowerShell 提示符提供的類似。
安裝完成後,您可以通過修改 ~/.zshrc 文件中的 ZSH_THEME 屬性來更改主題。使用像 vim 或 nano 這樣的編輯器更改並保存文件。完成後,運行 source ~/.zshrc
,您的更改將被應用。

從 agnoster 主題更改為 zsh 中的 robbyrussell 主題。
背景圖片
Windows Terminal 在发布时最受关注的功能之一是在每个配置文件中使用图像的能力。直到现在,您可能已经注意到所有背景都是在 settings.json 文件中用 background
标签定义的单一颜色。
有些人在编码时会觉得图像会分散注意力,所以如果你是其中之一,这里是一个在 settings.json 中使用单一颜色背景的示例。
设置了单一颜色后,该颜色将成为该配置文件的背景。如果在您的配置文件中未设置背景标签,Windows Terminal 将默认使用模式中的背景。

上面的示例配置文件将显示此颜色作为背景。
要使用背景图像,您需要在本地文件系统上拥有该图像。在撰写本文时,Terminal 不支持来自 URL 的背景图像。在 settings.json 中,导航到您想要分配背景图像的配置文件。从这里,添加 backgroundImage
标签,并给它赋予图像路径的值。以下是将配置文件背景设置为一张猫的图片的示例。

如果您决定自定义背景,请知道终端不会根据您的背景考虑您的颜色。终端将默认使用当前配置文件方案中的任何颜色。如果不小心,您可能会将浅色字体放在浅色背景上,这将使阅读变得非常困难。并非所有背景都适合作为终端背景。
终端猫出现在您的终端中,占用了您的背景。
只要settings.json仍然是一个有效的JSON文件,并且仍然符合终端方案,您将立即看到背景更新,无需手动刷新或关闭并重新打开终端。您可以在下面看到一个实时更新的很好示例。

只要您在settings.json中进行更改并保存,Windows终端就会立即更新。
定位图像
您可能会认为图像在终端窗口中会太过分散注意力,的确有可能。但是,如果您需要频繁在标签页和配置文件之间切换,它们也可以作为快速参考。以下是使用背景图像突出显示正在使用的shell的示例。
設置背景圖像,如上所示,您需要三個額外的參數,它們以backgroundImage
開頭,以幫助控制圖像在屏幕上的大小、位置和不透明度。請始終記住檢查文檔以查看可用的選項。以下是上述配置文件的示例。

Windows Terminal 還支持動畫 GIF,所以如果你不覺得它太分散注意力,你也可以在配置文件中添加一些樂趣。

高級 Windows Terminal 命令
現在,您的終端已經設置和自定義到您喜歡的方式,是時候探索 Windows Terminal 的一些更高級功能了。
使用不同內核的分割窗格
Windows Terminal 支持多個窗格。這意味著您可以在同一個終端窗口中運行並行會話。這種行為並不新鮮。其他控制台應用程序多年來一直支持窗格。Windows Terminal 的不同之處在於,它支持配置文件(在settings.json中),因此您可以將每個會話打開到自己的窗格中。即使每個會話都是完全不同的操作系統,例如在使用 WSL 或遠程配置文件時(稍後會談到遠程配置文件),您也可以顯示每個 OS 的窗格。
要创建不同配置文件的分割窗格,在settings.json中,每个配置文件必须有自己的splitPane
键绑定。通过使用profile
参数并指定Windows终端配置文件的名称或GUID,您可以将每个配置文件并排打开。
split
属性可以设置为horizontal
、vertical
或auto
,它会根据当前选择的窗格选择提供最多空间的方向。您可以在下面看到设置四个窗格键绑定的示例。

自定义Windows终端的打开方式
如果您不喜欢热键,或者想要一种快速打开CLI终端的方法,那么您很幸运。Windows终端包括一个名为wt
的命令行可执行文件,允许您以所需的配置自动打开它。
在下面,您可以看到在打开终端时传递各种参数以更改行为的示例。

远程配置文件
大多数情况下,您的配置文件将运行本地shell。然而,Windows终端也可以通过一个称为远程配置文件的概念来显示远程会话!
如果您查看Windows 终端的其他示例配置文件,您可能会注意到其中一些根本不是使用 .exe 应用程序。Windows 终端足够灵活,您甚至可以使用 ssh
命令或 Enter-PsSession
PowerShell 命令创建映射到远程服务器或其他 shell 的配置文件。您甚至可以使用 terraform console
来启动 Terraform 会话!您可以在下面的配置文件中看到一个示例。
通过在settings.json的配置文件部分使用commandline
参数,您可以打开几乎任何东西作为自己的 Windows 终端配置文件,而无需交互式登录。

使用 Windows 终端配置文件打开 Python REPL 和 AWS EC2 实例的 SSH 连接
摘要
到目前为止,您不仅应该熟悉 Windows 终端,还应该已经配置了自定义设置,并且已经设置了相当舒适的配置。您应该能够自定义配置文件和键绑定以控制终端的外观和操作,以及知道如何修改终端中可以使用的字体、字形和字符。
命令行工具不会消失。开发人员和工程师都需要继续使用它们。新的 Windows 终端不会阻止软件开发成为一项工作,您需要盯着屏幕上的小文本,但它可能会使这个过程变得更容易!