Windows系统自带的终端工具可以说是一言难尽,cmd命令行更是连ls
命令都不支持,powershell在功能上确实强大,但美观程度相比其他的shell来说就像个毛坯。这不,连微软自己都看不下去,开发了一个颜值更高的Windows Terminal。
Windows 终端
是一个新式主机应用程序,它面向你喜爱的命令行 shell,如命令提示符、PowerShell 和 bash(通过适用于 Linux 的 Windows 子系统 (WSL))。 它的主要功能包括多个选项卡、窗格、Unicode 和 UTF-8 字符支持、GPU 加速文本呈现引擎,你还可用它来创建你自己的主题并自定义文本、颜色、背景和快捷方式
下载安装
Windows 11已经自带了Windows Terminal,其他版本的系统可以直接访问应用商城安装。
Windows Terminal商城下载
如果商城打不开,可以通过[GitHub下载](Releases · microsoft/terminal (github.com)),然后找到合适系统的压缩包下再解压就行。
当然也可以安装Windows Terminal Preview预览版本,区别不是很大,只是包含了最新功能。
美化 Windows Terminal
微软提供了很详细的[中文文档](Windows 终端自定义提示符设置 | Microsoft Learn)方便我们对终端进行美化。
使用Oh My Posh
主题来美化终端,详细的配置参考[文档](Introduction | Oh My Posh)
由于自定义命令提示符经常会用到图形符号来设置提示符样式,建议安装一些带有字形的字体,比如[Nerd Font](Nerd Fonts - Iconic font aggregator, glyphs/icons collection, & fonts patcher)。这个字体簇有特别多的字形,找个觉得喜欢的下载就行,不需要全部安装。
其实Windows Terminal本身已经很好看了(相比之前的命令行),但不妨碍我们来点精装修。
打开Windows Terminal,鼠标在标签栏上右键打开设置,打开左下角的json格式的配置文件,配置文件一般位于目录C:\Users\Administrator\AppData\Local\Microsoft\Windows Terminal
为了安全,可以把settings.json复制一份,免得出错还原不回来。
使用编辑器 vscode打开 settings.json 后 ,找到 profiles 下的 defaults就是默认配置的可视化。
"profiles": {
"defaults": {
"experimental.retroTerminalEffect": false,
"font": {
"face": "Cousine Nerd Font",
"size": 14.0,
"weight": "semi-light"
},
"startingDirectory": "%USERPROFILE%"
}
}
配置终端亚克力效果添加背景图
在默认配置中修改内容如下:
"profiles": {
"defaults": {
"experimental.retroTerminalEffect": false,
"useAcrylic": true,
"acrylicOpacity": 0.2,
"backgroundImage": "D:/my-files/pictures/壁纸/星空.jpeg",
"backgroundImageOpacity": 1,
"font": {
"face": "Cousine Nerd Font",
"size": 14.0,
"weight": "semi-light"
},
"startingDirectory": "%USERPROFILE%"
},
}
接下来就可以给终端配置一个背景图片,记得要给背景图设置透明度。
这里背景图片的路径要注意用正斜杠,不然会当做转义符号,导致报错
"profiles": {
"defaults": {
"backgroundImage": "D:/my-files/pictures/壁纸/星空.jpeg",
"backgroundImageOpacity": 0.2,
},
}
亚克力效果的透明度和背景图的透明度根据需要调整,背景图最好找深色的。
安装oh-my-posh进一步美化
在[oh-my-posh官网](Windows | Oh My Posh)有三种安装方式,可以选择winget安装,这是Windows系统提供的软件管理工具。由于一些原因,我的电脑上无法直接使用winget,用了套壳的weingetUI,核心是一样的,只是有了UI界面。
在执行
winget install
之前先看一下Windows PowerShell 的执行策略。执行策略是Windows PowerShell安全策略中的一部分,它将决定你是否可以载入配置文件(包括你的 Windows PowerShell profile文件)和运行脚本,它将会在运行前确定哪些文件必须具有数字签名(digitally signed)。
get-ExecutionPolicy
获取 Windows PowerShell 当前执行策略
set-ExecutionPolicy
修改 Windows PowerShell 中执行策略的用户首选项(preference)执行策略状态说明:
Restricted
表示状态是禁止的 不载入配置文件, 不执行脚本. *Restricted是默认值
RemoteSigned
所有从互联网上下载的脚本必须通过信任的出版商签名(trusted publisher)
AllSigned
所有的配置文件和脚本必须通过信任的出版商签名(trusted publisher),这里所指的脚本页包括在本地计算机上创建的脚本
Unrestricted
载入所有的配置文件和脚本,如果运行了一个从互联网上下载且没有数字签名的脚本,在执行前都会被提示是否执行
get-ExecutionPolicy
// 修改 Windows PowerShell 中执行策略
set-ExecutionPolicy RemoteSigned
PowerShell 创建可维护配置文件
关于 PowerShell 更多详细内容参考[官方文档](PowerShell 文档 - PowerShell | Microsoft Learn)
通过about_Profiles
创建 PowerShell 配置文件,具体内容看[文档](关于配置文件 - PowerShell | Microsoft Learn)
可以创建一个 PowerShell 配置文件来自定义环境并将特定于会话的元素添加到启动的每个 PowerShell 会话中。
PowerShell 配置文件是在 PowerShell 启动时运行的脚本,可以将配置文件用作登录脚本来自定义环境, 可以添加命令、别名、函数、变量、管理单元、模块和 PowerShell 驱动器, 还可以将其他特定于会话的元素添加到您的配置文件中,以便在每个会话中都可以使用它们,而无需导入或重新创建它们。
PowerShell 控制台支持以下基本配置文件,配置文件按优先顺序列出,第一个配置文件,如:Microsoft.VSCode_profile.ps1
具有最高优先级
PowerShell 支持用户和主机程序的多个配置文件,它不会为您创建配置文件。
一般当前用户,当前主机下,PowerShell 配置文件所在位置 $Home\Documents\PowerShell\Microsoft.VSCode_profile.ps1
注意PowerShell 配置文件 Profiles 不是自动创建的,有可能这个路径是存在, 打开电脑对应的目录却找不到 WindowsPowerShell 目录 和 Microsoft.PowerShell_profile.ps1 文件。
可以通过命令Test-Path $PROFILE
查看当前是否存在Powershell配置文件
如果没有 Microsoft.PowerShell_profile.ps1文件,使用命令 new-item -path $PROFILE -itemtype file -force
创建一个 PowerShell 配置文件,最好是在创建好 PowerShell 配置文件文件后查看下当前的 PowerShell 执行策略,get-ExecutionPolicy
将执行策略设置为 RemoteSigned
。
执行命令是:set-ExecutionPolicy RemoteSigned
,如果不设置可能会报错无法加载配置文件。
在创建好的配置文件中添加如下内容,用指定的编辑器打开:
# 使用 vscode 打开 $PROFILE 配置文件
function vscodeOpen {
Code $PROFILE
}
# 使用 nodepad++ 打开 $PROFILE 配置文件
function notepadOpen {
noetepad $PROFILE
}
个性化定制主题
[oh-my-posh定制化配置](Customize | Oh My Posh)
oh-my-posh 主题
在配置文件中定制主题的方式有三种:
方式1:本地配置,所有的本地主题都在安装的/OhMyposh/theme
目录下,以.json结尾
oh-my-posh init pwsh --config 'C:/Users/Posh/jandedobbeleer.omp.json' | Invoke-Expression
这里的目录要根据自己电脑的路径修改
方式2:远程方式,通过链接的方式拉取在线的主题
oh-my-posh init pwsh --config 'https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/jandedobbeleer.omp.json' | Invoke-Expression
方式3:通过设置用户环境变量的方式配置主题。(使用中)
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/jandedobbeleer.omp.json" | Invoke-Expression
配置后的终端效果如下:
注意:前文就提到了需要下载带有字形的字体,在settings.json
中设置字体,只要是Nerd Font字体簇中的就行。
到此,终端美化基本就完成了。
快速打开设置文件
在PowerShell配置文件中添加一个函数openTermialSetting
,方便下次修改设置。
function openTermialSetting {
Code C:\Users\Administrator\AppData\Local\Microsoft\Windows Terminal\settings.json
}
去除终端开始的版权内容
在PowerShell配置文件开始添加:
# 去除 Window PowerShell 版权所有提示
clear
更换其他主题
oh-my-posh与其说是一款主题,更不如说是一套脚手架,其中内置了很多可以直接使用的主题,可以根据自己的喜欢选择。
在终端使用命令 get-Poshthemes
查看本地 oh-my-posh 的所有主题,并且会出现其他主题的样式
在 oh-my-posh 官网查看 oh-my-posh 主题
打开主题文件夹,复制 .json 前面的主题名称,终端使用上面配置的函数 vscodeOpen 命令打开 $PROFILE 文件,修改对应的 xx.json 名称就能完成主题切换