開發軟體是一項棘手的工作。終究,整個工作都是關於使用一種奇怪的語言為一個挑剔的解釋器撰寫指令,此解釋器會關閉你所努力工作的一切。好了,現在是時候安裝 Windows 終端機並發現更好的方法了。
在這份終極指南中,你將學習到一個對開發人員來說最好的控制台之一,Windows 終端機。你將全面了解 Windows 終端機的幾乎所有功能。你將學習它如何幫助你在 Windows 的命令列上完成工作。
Windows 終端機通過現代終端機功能(如標籤、窗格,甚至背景圖片)提升了控制台體驗。你甚至可以在不必在控制台會話之間切換的情況下,同時運行一個完整的 Linux shell 和 Windows PowerShell 或 cmd.exe。
本文將逐一介紹許多 Windows 終端機的功能。這將是一個實作教程,所以請準備好開始工作吧!
先決條件
安裝和使用 Windows 終端機本身的要求非常基本。你只需要一台安裝有 1903 版本(2019 年 5 月)或更新版本的 Windows 10 電腦。如果你想跟隨本文中的所有演示進行操作,你還需要安裝其他一些工具:
- 啟用了一個已安裝 Linux 發行版的 Windows 子系統(WSL)功能(本文的所有演示均使用的是 Ubuntu 20.04)。
- Visual Studio Code (VS Code)
- Python與安裝了rich text library的
- Visual Studio 2019或更新版本,需具備以下條件:
- 安裝了Windows 10 1903 SDK
- 安裝了桌面開發與C++組件
- 安裝了通用Windows平台開發組件
- 安裝了C++(v142)通用Windows平台工具組件
終端機vs.控制台vs.殼層
由於本文將涵蓋許多術語,因此首先要理解一些術語上的差異,以免混淆。
儘管這些概念相似,但重要的是要注意終端機不等於控制台不等於殼層。每個都有自己特定的用途。Scott Hanselman在他的博客文章中對每個術語的定義進行了詳細解釋,但以下是本文中將使用的解釋:
- 終端機:Windows終端應用程式。
- 控制台:任何非Windows終端應用程式。
- 殼層:位於終端機和操作系統之間的程式。(pwsh、cmd、zsh等)
安裝Windows終端應用程式
有幾種不同的方式可以安裝Windows Terminal,但最簡單的方式(也是Microsoft推薦的方式)是從Microsoft Store安裝。有兩個不同的版本可以下載; 標準Windows Terminal和Windows Terminal預覽版。
就本文的目的而言,您可以使用其中任何一個。安裝過程很直接,所以我們不會在這篇文章中介紹,我們假設你已經安裝了它。
當你第一次打開Windows Terminal時,它看起來並不出色。你需要做很多調整才能達到那樣,但一切都從下面這個窗口開始。

注意到Windows Terminal有四個主要的部分:
- 終端窗口 – 這裡是你將要完成大部分工作的地方,也是你可以最多自訂的地方。
- 標籤名稱 – Windows Terminal支援標籤,這意味著你可以有不同的shell
- 新標籤 – 這個按鈕將會打開你的預設檔案的新標籤
- 檔案列表 – 這將列出可供開啟的檔案。
Windows Terminal有一個極簡的布局,但它背後隱藏了很多功能。
從源碼建立終端
雖然這是 Windows 終端機,並且來自於微軟,但它也是 完全開放原始碼,這意味著您如果想的話,可以為其做出貢獻。這是一個使用 C++ 編寫的程式,擁有非常活躍的社群。
儘管這是一個正式發行的產品,在撰寫本文時仍然有一些小問題正在解決中,並且有一些功能在未來的開發計畫中。也許就是您幫助做出了這些貢獻!
如果您是開發人員,並且真的想要進入程式碼中,您可以從 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 Terminal團隊已承諾在即將發布的版本中很快會推出用於管理設置的圖形用戶界面(GUI)!
除了將所有設置存儲在一個方便的位置之外,當設置存儲在JSON文件中時,您可以將設置放入源代碼控制或在切換不同機器時備份它們。
您甚至可以與他人共享這些設置。如果您想看一下settings.json的示例,可以在這裡查看一個。
settings.json模式
如果您使用Visual Studio Code,終端將包含一個JSON模式,以幫助驗證您在settings.json中進行的任何自定義,包括自動填充任何新的自定義。
一旦您保存了更改(只要settings.json仍然有效),新的更改將立即反映在終端中,或者如果存在錯誤,終端將顯示錯誤,而無需刷新終端。
雖然不需要使用Visual Studio Code來編輯JSON,但當涉及自定義Windows Terminal時,強烈建議使用它。
目前,有四個不同的部分settings.json來控制Windows Terminal的外觀和感覺:Globals(全局設置)、Profiles(配置文件)、Schemes(配色方案)和Key Bindings(按鍵綁定)。讓我們來看看每個部分。
Globals(全局設置)
全局設置部分負責決定Windows Terminal的行為。這部分總是位於文件的頂部,控制著像關閉確認、視覺主題和默認配置文件等事項。以下代碼段落中可以看到一個示例。
Profiles(配置文件)
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 Terminal默認提供了三個配置文件:Windows PowerShell、cmd.exe和Azure Cloud Shell。如果已安裝了WSL,它還會為每個已安裝的WSL發行版生成一個配置文件。它還包括一個defaults部分,將應用於settings.json中的每個配置文件的設置。這是放置支持Unicode的字體的好地方,這將在本文後面介紹。
您可以在下面的代码片段中看到配置文件的示例。
创建新配置文件
如果您想要为同一个shell添加不同的变体,或者在终端中添加自定义远程配置文件,设置配置文件会很有用。
要在settings.json中创建一个新的Windows终端配置文件,请按照以下步骤进行:
请确保在每个配置文件后面都加上逗号,以使JSON有效。
- 复制您配置文件部分中的任何一个配置文件。这些配置文件从JSON文件中的
[
开始,到]
结束,位于list节点下。在上面的第7至14行之间。 - 通过在任何PowerShell会话中运行
[guid]::NewGuid()
来生成一个新的GUID。将您的新配置文件中guid
的当前值替换为您生成的GUID。终端设置默认配置文件时,GUID是随机生成的。 - 添加或更改其他参数以自定义配置文件。
- 复制settings.json的内容,并通过JSON Lint或其他JSON验证工具验证其有效性。修复任何问题。
- 保存您所做的更改。
配置文件中有很多可供配置的选项。请注意,如果在settings.json的默认部分中设置了某个设置,并且您在新的配置文件中也设置了该设置,那么您将覆盖默认设置。有关完整的说明,请查看Windows Terminal设置文档。
颜色方案
此部分是关于Windows Terminal配置文件的颜色方案。颜色方案告诉终端使用哪个十六进制值来显示终端中的每个颜色。由于终端可以以24位呈现颜色,这些颜色可以非常有创意。每个方案都有一个名称和一组颜色,这些颜色与可以轻松更改的十六进制值相对应,如下所示。
在使用Windows Terminal时,这些颜色将对应于背景和文本颜色。如果您在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 ?
Emoji 在命令行工具中可能看起来不是一个有用的东西,但它们越来越成为开发中不可或缺的一部分。软件工程师正在使用它们来标记提交和问题,使用像 Slack 或 Microsoft Teams 这样的应用快速回复消息,并且甚至还有一种表情符号编程语言。虽然其中一些肯定比其他更有用,但很明显表情符号不会消失。
以下是在powershell.exe控制台上以及使用 Python 的 rich 库在 Windows 终端上显示表情符号的示例。注意终端很漂亮
这一行并观察其中的区别。

使用 Python rich 文本库显示表情符号
Cascadia 字体
如前所述,Cascadia Code 字体允许显示一些特殊字符。但是该字体还具有其他一些微妙的变化,使得长时间观看更加容易,比如连字。
顺便说一句:设计 Windows 终端的同一个团队专门为 Windows 终端设计了 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,但由于之前的控制台的限制,它一直缺少一些东西。终端通过包含称为图形符号的特定符号来解决这个问题。图形符号用于在powerline中提供更多一目了然的提示。
在PowerShell中使用Powerline
对于PowerShell,你可以通过安装oh-my-posh来配置类似powerline的提示符,使用下面的示例代码。
安裝完成後,您的 PowerShell 提示符將提供更多資訊,包括 git 分支名稱以及遠端和本地儲存庫之間的提交。以下是一個示例:

這是來自 oh-my-posh 的 Paradox 佈景主題,經過一些自訂以顯示當前作業系統和PowerShell 版本。
在 Bash 中使用 Powerline
對於 Bash,您需要安裝像zsh或fishshell這樣的類似 shell。它們為終端添加了一些功能和自定義高亮顯示,但單獨使用可能會有些困難。建議您還安裝一個 zsh 的框架,例如ohmyzsh,這將使其使用起來更容易。ohmyzsh 提供了類似 oh-my-posh 為 PowerShell 提示符提供的佈景主題和 bash 提示符自定義功能。
安裝完成後,您可以通過修改 ZSH_THEME 屬性在 ~/.zshrc 文件中來更改佈景主題。使用像 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或遠程配置文件(稍後介紹遠程配置文件),您也可以為每個操作系統顯示一個窗格。
要创建不同配置文件的分割窗格,在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和SSH连接到AWS EC2实例
总结
到这一点,你不仅应该熟悉Windows终端,还应该配置了自定义设置,并且有一个相当舒适的配置。你应该能够自定义配置文件和键绑定,以控制终端的外观和操作,并知道如何修改终端中可以使用的字体、符号和字符。
命令行工具不会消失。开发人员和工程师都需要继续使用它们。新的Windows终端不会阻止软件开发成为一个需要盯着屏幕上的小字的工作,但它可能会让这个过程变得更容易!
Source:
https://adamtheautomator.com/install-windows-terminal/