Windows Terminal & PowerShell 7 打造 Windows 下最好用的终端

Windows Terminal & PowerShell 7 打造 Windows 下最好用的终端

简介

微软在 Build 2019 大会上公布了面向 Windows 10 的终端模拟器 Windows Terminal,它是一个面向命令行工具和 shell(如 CMD、PowerShell 和适用于 Linux 的 Windows 子系统 (WSL))用户的新式终端应用程序。 它的主要功能包括多个选项卡、窗格、Unicode 和 UTF-8 字符支持、GPU 加速文本呈现引擎,你还可用它来创建你自己的主题并自定义文本、颜色、背景和快捷方式。

而 PowerShell 7 是 PowerShell 的一个版本,它开源、跨平台(Windows、macOS 和 Linux)且为管理异类环境和混合云而构建,它和 Window 系统内置的 PowerShell 是不同的版本,它支持:

  • 使用 ForEach-Object -Parallel 实现管道并行化
  • 新运算符:
    • 三元运算符:a ? b : c
    • 管道链运算符:||&&
    • 空条件运算符:????=
  • 简化且动态的错误视图和 Get-Error cmdlet,以便更轻松地调查错误
  • 兼容层,使用户能够在隐式 Windows PowerShell 会话中导入模块
  • 自动新版本通知
  • 直接从 PowerShell 7 调用 DSC 资源的功能(实验性)

在不久前开始,最新的 Windows Terminal 版本已经支持 GUI 配置,再次降低了配置门槛;对于使用 WSL 的开发人员来说,Windows Terminal 绝对是他们可靠的帮手,接下来你只需要简单几个步骤就可以打造一个足够好用的 Windows Terminal,Let’s get it!🦊

安装

遵循下面步骤安装所需的工具和模块

Windows Terminal

你可以从 项目仓库 下载最新的 发行版 或者通过源码构建,但是这对于大多数人是没有必要的​ 😜;最简单的,打开 Windows 10 上的 UWP 应用商店搜索 🔎Windows Terminal ​,UWP 商店中的稳定版和预览版都足够稳定,选择安装即可

图中预览版圈错了🙈

PowerShell 7

从 PowerShell 项目仓库下载适合 Windows 平台的 最新发行版 安装

安装 PowerShell

安装字体

默认的字体会碰到一些字符乱码或者显示不全的问题,一些教程可能会推荐你安装 PowerLine 字体,但是 博主 更推荐使用 Nerd Fonts,Nerd Fonts 提供了大量开源免费的适合代码的字体,并且提供了字体修补程序

Nerd Font

你可以在 Nerd Fonts 官网 上挑选你喜欢的字体,或者 在线预览 部分字体

Nerd Fonts 官网

博主推荐的字体是 FiraCode NF,点击可以直接下载 👉Fira Code Nerd Font Complete Windows Compatible.zip,下载后解压安装即可

安装模块

打开 PowerShell 7 或者 Windows Terminal (它现在默认的配置文件应该是 PowerShell 7)

# 安装 PSReadline 包,类似 zsh,增强命令行功能
Install-Module -Name PSReadLine -AllowPrerelease -Force -Verbose 
# 安装 posh-git 包,让 git 更好用
Install-Module posh-git -Scope CurrentUser -Verbose 
# 安装 oh-my-posh 包,类似 oh-my-zsh,让命令行更好用
Install-Module oh-my-posh -Scope CurrentUser -Verbose
# 安装 winfetch 包,类似 neofetch/screenfetch
Install-Script -Name pwshfetch-test-1

如果出现提示,输入 Y(同意)或者 A (全部同意)回车即可

安装模块

输入 module 验证模块安装是否正确

ModuleType Version    PreRelease Name
---------- -------    ---------- ----
Manifest   7.0.0.0               Microsoft.PowerShell.Mana…
Manifest   7.0.0.0               Microsoft.PowerShell.Util…
Script     3.169.2               oh-my-posh
Script     1.4.7                 PackageManagement
Script     1.0.0                 posh-git
Script     2.2.5                 PowerShellGet
Script     2.2.0      beta3      PSReadLine

至此,所需的工具和模块都已经安装好啦,下面我们需要简单配置一下

配置

配置 Terminal

打开 Windows Terminal,使用键盘快捷键 Ctrl,> 打开设置

在左侧的 默认值 选项卡会将设置应用到所有配置文件,点击 外观 选项卡,设置字体

设置全局字体

切换到 PowerShell 选项卡,点击 常规,在 命令行 的末尾加上 -nologo 参数,隐藏每次 PowerShell 启动的默认输出信息

设置 PoewerShell

点击保存,应用设置

配置 PowerShell

以管理员身份运行 Windows Terminal,编辑 PowerShell 7 的配置文件

# 设置执行策略
Set-ExecutionPolicy RemoteSigned
# 建议禁用 Azure-Account 模块(↓包括$)
$env:AZ_ENABLE=$false
# 使用记事本打开 PowerShell 配置文件(没有则会新建该文件该文件)
if (!(Test-Path -Path $PROFILE )) { New-Item -Type File -Path $PROFILE -Force } notepad $PROFILE

编辑配置文件如下,然后保存

# 导入 posh-git 模块
Import-Module posh-git

# 导入 oh-my-posh 模块
Import-Module oh-my-posh

#设置主题
Set-PoshPrompt -Theme cert

#设置 winfetch 模块
Set-Alias winfetch pwshfetch-test-1

# 设置 Ctrl+z 为撤销
Set-PSReadLineKeyHandler -Key "Ctrl+z" -Function Undo

# 设置 Tab 键菜单补全
Set-PSReadlineKeyHandler -Key Tab -Function Complete

# 使用 ls 和 ll 查看目录
function ListDirectory {
    (Get-ChildItem).Name
    Write-Host("")
}
Set-Alias -Name ls -Value ListDirectory
Set-Alias -Name ll -Value Get-ChildItem

# 设置向上键为后向搜索历史记录
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward

# 设置向下键为前向搜索历史纪录
Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward
  • 修改 PowerShell 7 配置文件 命令:notepad $PROFILE
  • 预览内置主题:Get-PoshThemes
  • 修改主题:修改配置文件中 的 Set-PoshPrompt -Theme [主题名称] 部分即可

至此我们的 Windows Terminal + PowerShell 7 的配置就已经完成啦,之后可以自己设置配色、壁纸、亚克力效果等等,那些都在 Windows Terminal 的 GUI 设置里,此处不做赘述

最后,还有个 Windows Terminal 配色生成网站 可以 Mark 一下

Windows Terminal Color Themes

安装 starship [可选]

Windows 下安装 starship 首先需要 Scoop 软件包管理器,详见这篇:在 Windows 下使用 Scoop 管理软件

scoop install starship touch

在 PowerShell 配置文件最后一行加入 starship 的配置

Invoke-Expression (&starship init powershell)

如果有下面配置记得使用 # 号注释

Set-PSReadlineKeyHandler -Key Tab -Function Complete

然后生成 Starship 的 TOML 格式配置文件

touch ~/.config/starship.toml
# 具体目录就在 C:\Users\[用户名]\.config\starship.toml

下面是一个实例文件

add_newline = false

[battery]
full_symbol = "🔋"
charging_symbol = "🔌"
discharging_symbol = "⚡"

[[battery.display]]
threshold = 30
style = "bold red"

[character]
success_symbol = "[₰](bold green)"
error_symbol = "[✗](bold red) "

[cmd_duration]
min_time = 10_000  # Show command duration over 10,000 milliseconds (=10 sec)
format = " took [$duration]($style)"

[directory]
truncation_length = 5
format = "[$path]($style)[$lock_symbol]($lock_style) "
read_only = "🔒"

[git_branch]
format = " [$symbol$branch]($style) "
symbol = " "
style = "bold yellow"

[git_commit]
commit_hash_length = 8
style = "bold white"

[git_state]
format = '[\($state( $progress_current of $progress_total)\)]($style) '

[git_status]
conflicted = "⚔️ "
ahead = "🏎️ 💨 ×${count}"
behind = "🐢 ×${count}"
diverged = "🔱 🏎️ 💨 ×${ahead_count} 🐢 ×${behind_count}"
up_to_date = "✓"
untracked = "🛤️  ×${count}"
stashed = "📦 "
modified = "📝 ×${count}"
staged = "🗃️  ×${count}"
renamed = "📛 ×${count}"
deleted = "🗑️  ×${count}"
style = "bright-white"
format = "$all_status$ahead_behind"

[hostname]
ssh_only = false
format = "<[$hostname]($style)>"
trim_at = "-"
style = "bold dimmed white"
disabled = true

[julia]
format = "[$symbol$version]($style) "
symbol = "ஃ "
style = "bold green"

[memory_usage]
format = "$symbol[${ram}( | ${swap})]($style) "
threshold = 70
style = "bold dimmed white"
disabled = false

[package]
disabled = true

[nodejs]
format = " via [🎯 $version](bold green) "

[python]
format = "[$symbol$version]($style) "
style = "bold green"

[rust]
format = "[$symbol$version]($style) "
style = "bold green"

[username]
style_user = "bold dimmed blue"
show_always = false

更多配置见 starship 文档 配置部分

免动手

免配置,直接获取 博主 同款 Windows Terminal 的 Json 配置文件以及 Winfetch 的配置文件,含有 Windows Terminal 配色生成网站 所有配色主题

配置文件通过 GitHub Gist 分享,详见 👉 GitHub Gist—Windows Terminal Config

Windows Terminal

在 Windows Terminal 设置打开 json 设置文件,复制粘贴 👉 Windows Terminal 配置文件 全部覆盖即可

PowerShell 配置文件

查看当前 PowerShell 配置文件的路径

$ echo $PROFILE

使用系统自带记事本编辑 PowerShell 配置文件

$ NOTEPAD $PROFILE

使用 VSCode 编辑 PowerShell 配置文件

$ code $PROFILE

我的配置文件 👉 GitHub Gist—Microsoft.PowerShell_profile.ps1

Winfetch

Winfetch 的默认配置文件为 C:\Users\用户名\.config\winfetch 目录下的 config.ps1👉 Winfetch 配置文件

参考资料:

Windows Terminal & PowerShell 7 打造 Windows 下最好用的终端

https://www.dejavu.moe/posts/windows-terminal/

作者

Dejavu

发布于

2021-07-27

更新于

2021-09-12

许可协议

评论