Windows Terminal 完整指南:https://www.sitepoint.com/windows-terminal/ github:https://github.com/microsoft/terminal
1、前言
终端发展历史
MS-DOS Command Prompt (cmd.exe)。在 Windows 之前,微软的操作系统是 MS-DOS,是一个基于文本的操作系统。MS-DOS 自带了命令提示符工具,这就是早期 Windows 中 cmd.exe 的前身。在 Windows 95 及后续版本中,cmd.exe 作为 Windows 系统的命令行界面,用于执行 DOS 命令和批处理脚本。cmd.exe 虽然功能有限,但在几十年内一直是 Windows 用户主要的命令行工具。PowerShell。为了弥补 cmd.exe 的不足,微软于 2006 年推出了 PowerShell,这是一种面向对象的脚本语言和命令行界面。PowerShell 提供了更强大的脚本编写功能,支持与 .NET 框架的集成,极大地增强了 Windows 系统的自动化管理能力。PowerShell 7。PowerShell 最初是作为 Windows 专用的命令行工具和脚本语言,于 2006 年首次发布,后来演变为 PowerShell Core,这是一个基于 .NET Core 的跨平台版本。随着 .NET Core 的不断发展和成熟,微软决定推出 PowerShell 7,以取代 PowerShell Core,并统一 PowerShell 的版本路线。随着 PowerShell 7 的推出,微软彻底重写了这个 Shell,它基于 .NET Core (从 PowerShell 7.1 开始基于 .NET 5),意味着支持 Windows、macOS 和各种 Linux 发行版,用户可以在不同的操作系统上使用相同的脚本和命令。PowerShell 还引入了许多现代开发者和运维人员需要的新特性,例如: 三元操作符 (?:) 管道链运算符 (|| 和 &&) 空合并运算符 (??) 并行处理 (ForEach-Object -Parallel)
Windows Terminal 是 WSL 的理想配套。它速度快、可配置、外观漂亮,并且提供了 Windows和 Linux 开发的所有优点。
支持WSL2,SSH,Powershell,cmd和其他命令行多个选项卡和拆分窗格搜索框自定义键绑定GPU加速文字渲染美观的新字体Cascadia Code资源使用率低(每个选项卡通常10MB)自动更新(如果使用Microsoft Store)好的文档它是开源的!
终端(Terminal)
它是一个程序,提供了一个窗口你可以在这个窗口里输入命令和看到结果就像是一个与计算机对话的界面
Shell
它是一个程序,负责解释和执行你输入的命令它在终端里运行,处理你输入的指令常见的 Shell 有 Bash、Zsh 等
2、安装
下载、安装
方法 1:通过 Microsoft Store 进行安装。从 Windows 开始菜单中启动 Microsoft Store 或者在浏览器中打开 Microsoft Store,然后搜索 Terminal,注意:不要选择早期的 “ Windows Terminal Preview” 应用程序。点击 Get 并等待几秒钟以完成安装。方法 2:从 github 上下载:https://github.com/microsoft/terminal/releases。下载打开后一路 Next 即可安装完成。为方便访问,可以右键单击该图标并选择“锁定到开始”或“更多”,然后选择“锁定到任务栏”。
离线安装
到Windows Terminal的 Github仓库 下载最新的release包,即以 .msixbundle 为后缀的文件将文件后缀名改为.zip后解压缩文件在解压后的文件夹中找到名为 CascadiaPackage***.msix 的文件,有x86、x64和ARM64版本的,选择x64那个文件,修改后缀名为.zip,然后解压在解压后的文件夹中,找到 WindowsTerminal.exe 的文件,直接双击就能运行了,还是绿色免安装版的。可以把这个文件夹拷贝到安全的位置,然后将 .exe 文件添加到桌面快捷方式,就能愉快地使用 Windows Terminal 啦!或者 把 文件夹加入的 环境变量的 PATH 中,就可以通过 win+R 输入 windowterminal 或者 wt 就可以运行
配置 PowerShell
在 https://github.com/PowerShell/PowerShell/releases 这个GitHub 链接里,有目前 Powershell 的最新版,建议从 release 里选个最新的 preview 版本。经过测试,这些预览版都相当稳定。
安装 Powershell 插件
直接上代码:打开刚装好的新版 powershell,逐行输入命令。
# 1. 安装 PSReadline 包,该插件可以让命令行很好用,类似 zsh
Install-Module -Name PSReadLine -Scope CurrentUser
# 2. 安装 posh-git 包,让你的 git 更好用
Install-Module posh-git -Scope CurrentUser
# 3. 安装 oh-my-posh 包,让你的命令行更酷炫、优雅
Install-Module oh-my-posh -Scope CurrentUser
安装时系统会提问是否继续,不用管它直接输入 A 并回车即可。
简单美化
换成 Windows Terminal + Powershell7:https://www.taurusxin.com/windows-terminal/
在 Unix / Linux 下习惯使用 zsh + oh-my-zsh 来作为我的 Shell 环境,那么 PowerShell 有没有类似的工具呢?答案是 oh-my-posh。在 Microsoft Store 搜索并下载 oh-my-posh,安装完成之后,我们开始 oh-my-posh 的配置。oh-my-posh 下有一些带有图标或者特殊符号的主题,这时如果使用默认的 Consola 字体就会显示乱码,所以在配置 oh-my-posh 前,我们需要一个 Nerd Font,它为现有的字体打了一个补丁,支持了那些特殊符号,我们可以前往 Nerd Fonts - Iconic font aggregator, glyphs/icons collection, & fonts patcher 选择一个你喜欢的终端字体,然后下载安装就可以了,我喜欢使用和写代码一样的 JetBrains Mono 字体,于是就选择了 JetBrainsMono Nerd Font。
在 Window Terminal 中切换到你下载的新字体,点击下拉箭头,选择设置,在左边选择 PowerShell 配置文件,点开右侧的 其他设置-外观,将字体切换到新安装的字体即可。
配置文件
键入命令:New-Item -Path $PROFILE -Type File -Force 来创建空白的 PowerShell 7 配置文件,它类似于 zsh 的 .zshrc 文件,会在 PowerShell 7 时自动加载并执行这个配置文件。
输入 oh-my-posh init pwsh | Invoke-Expression 保存配置文件,就可以激活 oh-my-posh 了。重启 Windows Terminal 或者打开一个新的 PowerShell 7 标签后,此时它应该长这样。
也可以使用命令使得配置文件立即生效:. $PROFILE
oh-my-posh 也内置了很多其它主题,你可以浏览这个链接或者输入命令 Get-PoshThemes 来找一个你喜欢的主题,会输出每个主题对应的名称。编辑配置文件,将激活 oh-my-posh 的那一行命令修改一下,这里以我最喜欢的 ys 主题举例:& ([ScriptBlock]::Create((oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\ys.omp.json" --print) -join "`n")) 打开一个新的标签页,或者使用 . $PROFILE 命令使配置文件生效。
增强配置
在 Unix / Linux 下可以方便的使用 Control-D 来关闭当前会话,然而 CMD 和 PowerShell 并不支持 Control-D,只有 Control-C 用于终止当前命令运行,可以对配置文件做一些增强,注意:posh-git 插件需要先进行安装。
# oh-my-posh
& ([ScriptBlock]::Create((oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\ys.omp.json" --print) -join "`n"))
# ps-read-line
Import-Module PSReadLine
# posh-git
Import-Module posh-git
# 设置预测文本来源为历史记录
Set-PSReadLineOption -PredictionSource History
# 每次回溯输入历史,光标定位于输入内容末尾
Set-PSReadLineOption -HistorySearchCursorMovesToEnd
# 设置 Tab 为菜单补全和 Intellisense
Set-PSReadLineKeyHandler -Key "Tab" -Function MenuComplete
# 设置 Ctrl+d 为退出 PowerShell
Set-PSReadlineKeyHandler -Key "Ctrl+d" -Function ViExit
# 设置 Ctrl+z 为撤销
Set-PSReadLineKeyHandler -Key "Ctrl+z" -Function Undo
# 使用 ll 查看目录
function ll {
Get-ChildItem
}
# 设置向上键为后向搜索历史记录
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
# 设置向下键为前向搜索历史纪录
Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward
# rm -rf alias
function rmrf ($dir_path){
Remove-Item -Recurse -Force $dir_path
}
# mv alias
function mv($file_path, $des_name) {
Move-Item -Path $file_path -Destination $des_name
}
# touch alias
function touch {
param (
[string]$path
)
if (!(Test-Path $path)) {
New-Item -ItemType File -Path $path
} else {
(Get-Item $path).LastWriteTime = Get-Date
}
}
# 先设置允许允许远程代码执行策略
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Confirm
# 安装 posh-git 模块
PowerShellGet\Install-Module posh-git -Scope CurrentUser -Force
3、Terminal 入门
首次运行时,Windows Terminal 以 Powershell 作为默认配置文件启动。下拉菜单可用于启动其他选项卡并访问设置:终端会自动为你安装的所有 WSL 发行版和 Windows shell 生成配置文件,尽管你可以在全局设置中禁用生成。
管理 tab 页
通过单击 + 图标或 Ctrl + Shift + T 打开默认配置文件的新标签。要打开其他个人资料的标签,请从下拉菜单中选择该标签,或按 Ctrl + Shift + N ,其中N是个人资料的编号。
按 Alt + Shift + D 复制并拆分窗格。每次使用时,活动窗格都会沿最长轴分成两部分:
分屏 ( 窗格 ) 快捷键:
左右分屏:Alt + Shift + +上下分屏:Alt + Shift + -取消分屏:Ctrl + Shift + w,或者 exit选择 窗格:按住 Alt 键,然后使用光标键在键盘上的活动窗格之间切换。打开窗格的配置:从下拉菜单中选择时,按住 Alt 键。调整窗格大小:按住 Alt + Shift 并使用光标键相应地调整大小来调整窗格的大小。
可以通过双击文本来重命名选项卡,你还可以通过右键单击标签并选择菜单选项来更改名称或颜色:
这只会影响当前标签页;它不会永久更改个人资料。
字体大小
可以使用 Ctrl + + 和 Ctrl + - 来调整活动终端的文本大小。或者,按住 Ctrl 并滚动鼠标滚轮。
滚动
使用滚动条浏览终端输出。或者,按住 Ctrl 键,按光标向上、光标向下、Page Up或Page Down键,使用键盘导航。
搜索
按 Ctrl + Shift + F 打开搜索框:
输入任何术语,然后使用向上和向下图标搜索终端输出。单击 Aa 图标可激活和停用精确大小写匹配。
复制粘贴
默认情况下,复制和粘贴分别绑定到 Ctrl + Shift + C 和 Ctrl + Shift + V,尽管 Ctrl + C 和 Ctrl + V 也可以。
注意:请警惕
Ctrl + C 可以终止Linux应用程序,因此建议使用Shift。
全局设置中提供了一个自动选择时复制选项,你还可以通过右键单击鼠标来粘贴当前剪贴板项目。
配置
可从下拉菜单或 Ctrl + ,(逗号)访问设置。该配置在单个 settings.json 文件中定义,因此可能会提示你选择文本编辑器。VS Code是一个不错的选择,但是如果你希望在不使用颜色编码和语法检查的情况下进行编辑,则记事本就可以了。
settings.json 控件:
global settings 全局设置,适用于所有配置文件profile settings 配置文件设置,用于定义配置文件custom color scheme settings 自定义配色方案设置,以及keybinding settings 键盘绑定设置
该文件使用以下格式:
// This file was initially generated by Windows Terminal
{
// general settings, e.g.
"initialRows": 40,
// profile settings
"profiles":
{
"defaults":
{
// settings that apply to all profiles
}
"list":
[
// list of individual profiles, e.g.
{
"guid": "{81d1dceb-c123-5678-90a1-123abc456def}",
"name": "Windows PowerShell",
"commandline": "powershell.exe"
},
{
"guid": "{91d1dceb-c123-5678-90a1-123abc456def}",
"name": "Ubuntu",
"source": "Windows.Terminal.Wsl"
}
]
}
// custom color schemes, e.g.
"schemes": [
{
"name": "My new theme",
"cursorColor": "#FFFFFF",
"selectionBackground": "#FFFFFF",
"background" : "#0C0C0C",
"foreground" : "#CCCCCC"
}
],
// custom key bindings, e.g.
"keybindings:
[
{ "command": "find", "keys": "ctrl+shift+f" }
]
}
默认值在 defaults.json 中定义。单击下拉菜单中的 Settings 时,按住 Alt 可以将其打开。
警告:请勿更改默认文件!使用它可以查看默认设置,并在必要时在settings.json中添加或更改设置。
全局配置
以下全局设置是最有用的,尽管Windows终端文档中记录了更多的全局设置。
defaultProfile 定义启动Windows Terminal时用作默认配置文件的GUID。
将 copyOnSelect 设置为 true 可将选定的文本自动复制到剪贴板,而无需按 Ctrl + Shift +C。
将 copyFormatting 设置为 false 即可仅复制纯文本而无需任何样式。 (我希望这是所有应用程序的默认设置!)
将 initialColumns 和 initialRows 设置为水平和垂直尺寸的字符数。
可以将 tabWidthMode 设置为:
equal:每个选项卡的宽度相同(默认值)titleLength:每个标签都设置为其标题的宽度,或者compact:非活动选项卡会缩小到其图标的宽度。
disabledProfileSources 设置一个数组,以防止自动生成配置文件。例如:
"disabledProfileSources": [
"Windows.Terminal.Wsl",
"Windows.Terminal.Azure",
"Windows.Terminal.PowershellCore"
],
这将禁用所有生成的配置文件,删除你要保留的任何一个。
Profile 个人资料设置
通过在 profile、list 数组中创建一个对象组来定义新的配置文件。一个WSL2 Ubuntu的例子。
{
"guid": "{91d1dceb-c123-5678-90a1-123abc456def}",
"name": "Ubuntu",
"source": "Windows.Terminal.Wsl",
"startingDirectory": "//wsl$/Ubuntu/home/username/",
"colorScheme": "Tango Dark",
"useAcrylic": true,
"acrylicOpacity": 0.75,
"hidden": false
},
每个配置文件均使用以下设置进行定义:
| 设置 | 描述 | | ------------------------ | ------------------------------------------------------------ | | guid | 唯一标识符(必填)。对于新的配置文件,可以在http://guidgen.com上在线生成GUID。 | | source | 配置文件生成器。仅在自动添加了配置文件且不得对其进行编辑时使用。 | | commandline | 假定未设置“source”的情况下运行的可执行文件。例如,这可能是SSH命令,例如“ ssh yourname@domain.com” | | startingDirectory | Shell开始目录。对于WSL发行版,最好将其设置为“ //wsl$/Ubuntu/home/username/”,其中username是安装期间创建的用户 | | name | 下拉菜单中显示的个人资料名称 | | tabTitle | 标签标题中显示的名称 | | suppressApplicationTitle | 设置为true以强制bash中的“ tabTitle”或“ name” | | icon | 下拉菜单和标签中显示的图标的完整路径,例如“ C:/images/tux.png”。 24位PNG是最好的选择;不幸的是,不支持SVG | | hidden | 如果设置为true,则配置文件不会显示在下拉菜单中 | | fontFace | 使用特定的字体 | | fontSize | 使用特定的字体磅值整数 | | fontWeight | 使用特定的字体粗细。这可以是OpenType整数,也可以是关键字:"normal", "thin", "extra-light", "light", "semi-light", "medium", "semi-bold", "bold", "extra-bold", "black", "extra-black" | | padding | 在窗口边缘的文本周围填充。可以设置一个,两个或四个逗号分隔的值,例如“ 1、2、3、4”分别设置左,上,右和下 | | antialiasingMode | 抗锯齿方法。设置为 "灰度"(默认)、"cleartype "或 "aliased"。 | | cursorShape | 游标类型。设置为“bar”(默认),“vintage”,“underscore”,“ filledBox”或“ emptyBox” | | cursorHeight | “vintage”光标的高度,该高度定义为25到100之间的整数 | | cursorColor | 光标颜色,定义为“ #rgb”或“ #rrggbb” |
特定于主题的设置包括:
| 设置 | 描述 | | ---------------------- | ------------------------------------------------------------ | | colorScheme | 在defaults.json或settings.json中的“方案”列表中定义的配色方案的名称(请参见下文) | | useAcrylic | 设置为true以使用毛玻璃背景效果 | | acrylicOpacity | acrylic不透明度从0(完全透明)到1(完全不透明)。 | | backgroundImage | 背景图片的完整路径,例如“ C:/images/background.png” | | backgroundImageOpacity | 背景图像的不透明度从0(完全透明)到1(完全不透明) |
最后,在配置文件中添加 ”experimental.retroTerminalEffect”:true,以实现复古的CRT效果!…
配色方案设置
可以将每个配置文件的 ”colorScheme” 设置为 defaults.json 中包含的任何配色方案的名称。例如:
“Campbell"
“Campbell Powershell”
等等。。。
创建自己的配色方案
你可以在settings.json的“方案”数组中定义自己的方案对象。每种颜色均以十六进制值定义。例如:
"schemes": [
{
"name": "My New Theme",
"foreground": "#EEEEEE",
"background": "#111111",
"cursorColor": "#FFFFFF",
"black": "#000000",
"red": "#CC0000",
"green": "#4E9A06",
"yellow": "#C4A000",
"blue": "#3465A4",
"purple": "#75507B",
"cyan": "#06989A",
"white": "#EEEEEE",
"brightBlack": "#555753",
"brightRed": "#EF2929",
"brightGreen": "#8AE234",
"brightYellow": "#FCE94F",
"brightBlue": "#729FCF",
"brightPurple": "#AD7FA8",
"brightCyan": "#34E2E2",
"brightWhite": "#FFFFFF"
}
],
然后,可以通过在配置文件的 ”colorScheme” 设置中添加其 "name" 来使用该方案。例如:
"colorScheme": "My New Theme"
键盘绑定设置
settings.json 中的 ”keybindings” 数组会覆盖或补充 defaults.json 中设置的默认键绑定。每个键绑定都定义为具有 “command” 和 "keys"组合的对象。例如:
// Ctrl + Shift + F to open the search box
{ "command": "find", "keys": "ctrl+shift+f" },
在某些情况下,“command” 可以是具有一个或多个参数的应用程序 "action" 。例如:
// Ctrl + Shift + 1 to open the first profile in a new tab
{
"command": { "action": "newTab", "index": 0 },
"keys": "ctrl+shift+1"
},
"keys" 值接受修饰符 ctrl +,shift + 和 alt +,后跟:
| type | keys | | ---------- | ------------------------------------------------------------ | | 功能键 | f1-f24 | | 字母数字键 | a-z, 0-9 | | 符号键 | -,=,[,], \,;,‘,,,.,/ | | 光标键 | down, left, right, up,pagedown,pageup,pgdn,pgup,end,home,plus | | 动作键 | tab, enter, esc, escape, space, backspace, delete, insert | | 数字键盘 | numpad_0-numpad_9, numpad0-numpad9, numpad_add, numpad_plus, numpad_decimal, numpad_period, numpad_divide, numpad_minus, numpad_subtract, numpad_multiply |
例如,如果你想使用 Ctrl + F 打开搜索框,则可以在 settings.json 中的 ”keybindings” 数组中添加一行:tab
"keybindings":
[
{ "command": "find", "keys": "ctrl+f" }
]
搜索框也将用 Ctrl + Shift + F 打开,因为该设置是在 defaults.json 中定义的——除非你将组合键分配给另一个命令。
命令行选项
可以通过运行 wt.exe 从快捷方式或任何Windows或Linux终端启动Windows终端。支持以下选项:
| 选项 | 描述 | | ----------------------- | ---------- | | —help,-h,-?, /? | 显示帮助 | | —maximized,-M | 启动最大值 | | —fullscreen,-F | 启动全屏 |
你还可以传递由分号分隔的命令列表。命令用于定义新的选项卡和窗格以及其他控制参数:
| 命令 | 参数 | | | ---------- | ------------------------------------------------------------ | ---------------- | | new-tab | —profile or -p, —startingDirectory or -d, commandline, —title | 打开一个新标签页 | | split-pane | --horizontal or -H,—vertical or -V, —profile or -p, —startingDirectory or -d, commandline, —title | 打开一个新窗格 | | focus-tab | —target or -t | 聚焦标签 |
例子
以下示例必须从标准cmd命令行或快捷方式执行。
使用 Ubuntu 和 Windows Powershell 选项卡打开Windows终端:
wt -p "Ubuntu" ; new-tab -p "Windows PowerShell"
在单独的窗格中使用 Ubuntu,Windows Powershell 和命令提示符配置文件打开Windows终端:
wt -p "Ubuntu" ; split-pane -V -p "Windows PowerShell" ; split-pane -H -p "Command Prompt"
Windows Terminal文档中提供了用于从Linux Shell或Powershell启动Windows Terminal的更多示例。