Windows Terminal 美化
一个每天都要面对的东西,不好看会影响心情的🐶。(终于要把欠下的博文写完了,腹泻式更新结束咯)
搜到的很多方法已经过时了,最后还是老老实实跟着Oh My Posh 官方文档来配置了
更新PowerShell
首先使用$psversiontable
命令查询PowerShell版本,系统自带的是5.1版本,现在最新的版本是7.2,两个版本相互独立,可以同时安装,这里我安装了新版本。
安装后打开Windows Terminal
,在设置
里将默认配置文件
修改为PowerShell
(系统自带的版本叫Windows PowerShell)
更换字体
选择字体的时候要选用含有Nerd fonts
的字体,否则一些图标会显示为乱码。字体我使用了sarasa-mono-sc-nerd-font
,即附加了Nerd字体的简体等距更纱黑体
。下载链接如下,我下载的是sarasa-mono-sc-nerd-font.zip
Nerd Fonts 是一个使用大量字体图标来解决程序员在开发过程中缺少合适字体的问题的项目。它可以从流行的字体图标库中将大量外部字体引入待开发的项目中,它支持的字体图标库包括 Font Awesome, Devicons, Octicons等。
等距更纱黑体是由Iosevka和思源黑体组合而成的免费开源字体,适合在终端中使用
字体后缀
引用自zrqlx126的文章,特此感谢
下载后解压并安装需要的字体,字体后缀的意思如下
附加术语
unhinted
-无微调字体ttf
-TrueType字体文件格式ttc
-TrueType字体集文件格式(更纱黑体按照字重进行分类,合并了相近ttf字体文件)
第一个连字符后的名称
gothic
-引号为全宽ui
-引号为窄的mono
-破折号为全宽term
-破折号为半宽fixed
-不连字、且破折号为半宽
第二个连字符后的名称
cl
-古典汉字字形sc
-简体汉字字形tc
-繁体汉字字形j
-日文汉字字形k
-韩文汉字字形hc
-香港汉字字形
第三个连字符后的名称
slab
-超厚笔划字形regular
-常规字体italic
-斜体字体extralight
-超细字体light
-细体字体semibold
-半粗字体bold
-粗体字体extralightitalic
-超细斜体lightitalic
-细斜字体semibolditalic
-半粗斜体bolditalic
-粗斜字体
第四个连字符后的名称
nerd
-附加了Nerd fonts
然后在Windows Terminal的设置
-配置文件
-PowerShell
-外观
-字体
中将字体设置为等距更纱黑体 SC Nerd Font
。
安装美化模块
使用winget
安装美化模块Oh My Posh
1 | winget install JanDeDobbeleer.OhMyPosh -s winget |
然后重启Windows Terminal,使用下面的命令打开PowerShell的配置文件
1 | notepad $PROFILE |
如果提示找不到配置文件的话用下面的命令创建
1 | New-Item –Path $Profile –Type File –Force |
粘贴并保存
1 | oh-my-posh init pwsh | Invoke-Expression |
执行下面的命令重载配置文件或者重启Windows Terminal就能看到变化了
1 | . $PROFILE |
更换主题
Oh My Posh提供了很多主题,可以输入下面的命令或者去官网查看主题预览
1 | Get-PoshThemes |
找到合适的就把下面的命令复制到PowerShell配置文件中
1 | oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/主题名称.omp.json" | Invoke-Expression |
例如我选用的takuya
主题配置为
1 | oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/takuya.omp.json" | Invoke-Expression |
但是我不太喜欢主题的配色,想自己调整一下。
可以使用下面的命令导出当前使用的主题配置文件,我这里导出的路径是~/.pwshtheme.omp.json
,也就是C:\Users\用户名\.pwshtheme.omp.json
,请根据自己的需要修改。另外,Oh My Posh自带的主题文件在C:\Users\用户名\AppData\Local\Programs\oh-my-posh\themes
中,可以参考一下里面配置文件的写法。
1 | oh-my-posh config export --output ~/.pwshtheme.omp.json |
然后打开文件修改配色即可。
如果想要修改更多内容请参照官方文档说明
修改完成后使用notepad $PROFILE
打开PowerShell的配置文件,替换掉原来的主题配置,注意路径。
1 | + oh-my-posh init pwsh --config "~/.pwshtheme.omp.json" | Invoke-Expression |
安装Scoop
下面的内容参考了P3TERX的文章,特此感谢
Scoop 是一个 Windows 包管理工具,下面的Neofetch需要使用Scoop来安装
1 | Invoke-WebRequest get.scoop.sh | Invoke-Expression |
配置代理
然后为Scoop配置代理,结合自己梯子的端口修改端口号,不然会一直报错
1 | scoop config proxy localhost:7890 |
取消代理命令为
1 | scoop config rm proxy |
安装extras bucket
可以为scoop添加额外的bucket。bucket就是一个软件仓库,Scoop安装后会有Main bucket,但是它的收录条件较为严格,所以最好再安装一个extras bucket
,extras bucket可以提供更多的软件,甚至有Steam,不过不建议这么干就是咯。
安装命令如下
1 | scoop bucket add extras |
常用命令
scoop update
—— 更新 scoop 及软件包列表scoop install -k <app>
—— 非全局安装(并禁止安装包缓存)scoop install -gk <app>
—— 全局安装(并禁止安装包缓存)scoop uninstall -p <app>
—— 卸载非全局软件(并删除配置文件)scoop uninstall -gp <app>
—— 卸载全局软件(并删除配置文件)scoop update -k *
—— 更新所有非全局软件(并禁止安装包缓存)scoop update -gk *
—— 更新所有软件(并禁止安装包缓存)scoop cleanup -k *
—— 删除所有旧版本非全局软件(并删除软件包缓存)scoop cleanup -gk *
—— 删除所有旧版本软件(并删除软件包缓存)scoop cache rm *
—— 清除软件包缓存scoop bucket list
—— 查看所有bucket
辅助模块
下面的内容参考引用了Awesome PowerShell,特此感谢
检查脚本执行策略
首先检查脚本执行策略设置,共有四种策略
1 | Get-ExecutionPolicy |
Restricted
——默认的设置, 不允许任何script运行AllSigned
——只能运行经过数字证书签名的scriptRemoteSigned
——运行本地的script不需要数字签名,但是运行从网络上下载的script必须要有数字签名Unrestricted
——允许所有的script运行
如果不是RemoteSigned
或者Unrestricted
的话执行下面的命令修改策略,否则一些模块无法安装
1 | Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Confirm |
posh-git
posh-git是一个PowerShell模块,它将Git和PowerShell整合在一起,可以在PowerShell中显示Git状态的汇总信息。它也为常见的git命令、分支名称、路径等提供Tab
补全功能。
1 | PowerShellGet\Install-Module posh-git -Scope CurrentUser -Force |
然后执行下面的命令来引入模块
1 | Add-PoshGitToProfile |
或者在PowerShell配置文件中添加
1 | Import-Module posh-git |
然后重载配置文件或者重启Windows Terminal,输入git fe
,然后按下Tab
,如果能够自动补全为git fetch
就说明成功了
PSReadLine
下面的内容参考引用了微软官方文档about_PSReadLine
PSReadLine 2.1 为 PowerShell 控制台提供了强大的命令行编辑体验。 提供以下功能:
- 命令行的语法着色
- 语法错误的直观指示
- (编辑和历史记录的更好的多行体验)
- 自定义键绑定
- Cmd 和 Emacs 模式
- 许多配置选项
- 在 Cmd 模式下,Bash 样式完成 (可选,默认值为 Emacs 模式)
- Emacs yank/kill 循环
- 基于 PowerShell 令牌的 “word” 移动和删除
- 预测 IntelliSense
PSReadLine 2.1.0 随 PowerShell 7.2 一起提供,并在所有支持的 PowerShell 版本中受支持。所以就不需要额外安装了。
配置
首先打开配置文件
1 | notepad $PROFILE |
粘贴下面的内容
1 | Set-PSReadLineOption -PredictionSource History # 设置预测文本来源为历史记录 |
保存后重载配置文件或者重启Windows Terminal
使用
→
—— 自动补全联想内容CTRL
+→
—— 逐字补全联想内容↑
和↓
—— 搜索历史命令Tab
—— 补全CTRL
+z
—— 撤销
ZLocation
ZLocation是Jump-Location的翻版,它可以基于以前运行的命令数量追踪你最常用的目录。在一个短暂的学习阶段之后,z
将带你到最受欢迎的目录,该目录与命令行上给出的所有正则表达式相匹配。你可以使用Tab-Completion/Intellisense来挑选不是首选的目录。
安装
使用下面的命令一键安装+配置
1 | Install-Module ZLocation -Scope CurrentUser; Import-Module ZLocation; Add-Content -Value "`r`n`r`nImport-Module ZLocation`r`n" -Encoding utf8 -Path $PROFILE.CurrentUserAllHosts |
使用
z
—— 显示已知的文件夹以及它们的权重z c:
—— 切到C盘z zlo
—— 切到ZLocation文件夹(简写)z -l foo
—— 查看所有与foo匹配的位置z -
—— 跳转到前一个跳转的目录或者初始文件夹
The Fuck
The Fuck是一个很好玩的东西,可以输入fuck
来修正前一条报错的指令。
安装
安装The Fuck前需要安装Python(3.4+)
、pip
和python-dev
。安装命令为
1 | pip install thefuck |
配置
打开PowerShell的配置文件
1 | notepad $PROFILE |
粘贴下面的内容
1 | $env:PYTHONIOENCODING="utf-8" |
保存后重载配置文件或者重启Windows Terminal
使用
输入错误的命令后再输入fuck
,然后按Enter
确认
升级
1 | pip3 install thefuck --upgrade |
gsudo
gsudo是Windows的一个sudo替代品,具有与原始*nix sudo类似的用户体验。它允许在当前控制台窗口或新窗口中以高权限运行命令,或提升当前shell的权限。免得每次需要提权都要重新以管理员身份运行PowerShell,而且重新运行还会丢失之前的记录。
安装
老方法,winget安装
1 | winget install gsudo |
减少UAC弹窗
可以通过启用凭证缓存的方式,来实现gsudo多次提权而只显示一个UAC弹窗。
1 | gsudo config CacheMode auto |
Windows Terminal设置
以下设置可以单独针对PowerShell
生效,也可以在设置
-配置文件
-默认值
种调整为默认配置,对所有未进行单独设置的shell
生效。
配色方案
上面调整了PowerShell
的主题,但是输入输出的字体配色还是原来的亚子,它们是由Windows Terminal的配色方案
控制的。默认有8种配色方案,不过嘛,都挺辣眼睛的。好在可以自己创建配色方案。
打开Windows Terminal的设置
,找到配色方案
,点击右侧的新增
,创建自己的配色方案,然后逐个更改颜色。修改完成后点击保存
.
然后去下面的Powershell
配置文件,找到外观
-配色方案
,将它调整为自己刚才创建的配色方案。
亚克力效果
打开Windows Terminal的设置
,找到Show acrylic in tab row (requires relaunch)
并开启,重启Windows Terminal可以看到顶栏已经开启了亚克力效果。
然后去下面的Powershell
配置文件,找到外观
-透明度
-Enable acrylic
并开启,然后可以看到窗口背景也开启了亚克力效果。可以根据自己喜好微调透明度,我调成了85%。
背景图片
依然在Powershell
配置文件中,找到外观
-背景图像
-背景图像路径
,选择背景图片,然后调整背景图像不透明度
。
完工
折腾了一下午,终于搞完了,附上一张完工图,比原来的红蓝配色好多咯