0x00 前言
最近把系统重装为 win11, 发现微软官方自带的 Windows Terminal 比以前的 powershell 还是 cmd 都好用多了,而且自带的终端比之前用过的所有第三方终端体验更丝滑。
但是毕竟在 Mac/Linux 上面用习惯了 oh-my-zsh,很自然就想 windows 上也做一个类似的。
于是就对 Windows Terminal 的外观做了美化,最终效果如下:
0x10 操作步骤
0x11 安装 Windows Terminal
如果你的系统没有 Windows Terminal,需要先去 Microsoft Store 中下载:
0x12 安装 oh-my-posh
oh-my-posh 应该是对标 oh-my-zsh 的工具,其安装步骤如下:
- 使用系统管理员打开 Windows Terminal
- 执行安装命令:
winget install JanDeDobbeleer.OhMyPosh -s winget
- 使用系统管理员重新打开 Windows Terminal,使得 oh-my-posh 命令生效
- 安装必要字体(否则某些 icron 会乱码),执行命令
oh-my-posh font install
,此时会出现字体的候选列表,官方推荐安装 Meslo :
0x13 配置 oh-my-posh
安装完成后,现在即使打开 Windows Terminal 是没有任何效果的,需要再做一下配置。
配置运行 Windows Terminal 时自动加载 oh-my-posh:
- 执行命令
echo $PROFILE
查看 powershell 的配置文件路径,第一次配置肯定时不存在的,需要手动创建这个文件 - 修改这个文件内容:
- 在其中添加一行:
oh-my-posh init pwsh --config $env:POSH_THEMES_PATH\aliens.omp.json | Invoke-Expression
- 这行代码的意思是: 使用 aliens.omp.json 配置文件初始化 oh-my-posh
- 其中的
aliens.omp.json
就是 oh-my-posh 的主题样式,可以到官方的主题列表选择自己喜欢的主题替换上去
- 在其中添加一行:
- 这个时候重新启动 Windows Terminal,就会自动加载这个配置文件,进入 oh-my-posh 终端
这里注意,有可能你重新打开 Windows Terminal 时,会报错: 无法加载文件 .....\Microsoft.PowerShell_profile.ps1,因为在此系统上禁止运行脚本
。
这里的 Microsoft.PowerShell_profile.ps1
就是你刚刚修改的配置文件,其实它是以 ps1 形式存在的一个 powershell 脚本。
这个报错是因为你的 PowerShell 限制了执行策略,不允许随便执行第三方脚本。
解决方法也很简单,只需要以管理员权限打开 Powershell:
- 执行
Set-ExecutionPolicy RemoteSigned
修改策略 - 执行
Get-ExecutionPolicy
确认策略是否已修改
此时再重新打开 Windows Terminal 就可以成功进入 oh-my-posh 了
0x14 配置字体
此时 oh-my-posh 一般是乱码的,原因是未设置字体。
- 在 Windows Terminal 顶部最右边,依次点击
﹀
->>
设置->>
Windows Powershell->>
外观 - 在【字体】中选择刚刚安装的 Meslo:
MesloLGM Nerd Font
顺便拉到下方的【透明度】,设置窗体 半透明 和 启用亚克力材料,会显得更科技感
重新打开 Windows Terminal,至此 oh-my-posh 已配置完成。
0x20 配置 SSH
如果有 ssh 的需求,Windows Terminal 也是支持的:
- 在 Windows Terminal 顶部最右边,依次点击
﹀
->>
设置->>
打开 JSON 文件 - 在打开的 settings.json 中找到 profiles ,把 ssh 配置添加到 list 下即可:
方便起见我复制了一份出来:
{
"guid": "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}",
"hidden": false,
"name": "xxxxxxxxx",
"commandline": "ssh -i ~/.ssh/id_rsa root@1.2.3.4 -p 22",
"font":
{
"face": "MesloLGM Nerd Font"
}
},
其中:
guid
: 可以是任意唯一字符串,但必须要保持同一个格式hidden
: 是否在下拉列表中显示name
: 在下拉列表中显示的名称commandline
: ssh 连接的命令行,配置为自己的服务器即可font
: ssh 终端使用的字体
配置完成后,就可以在 Windows Terminal 顶部最右边,点击 ﹀
看到 SSH 连接了。
0x30 历史命令联想
oh-my-zsh 有一个很便利的功能就是输入部分命令后、按 ↑ 或 ↓ 就可以联想历史的完整命令,其实在 oh-my-posh 中也能实现。
首先在 PowerShell 执行以下命令安装插件:
Install-Module -Name PowerShellGet -Force
Install-Module PSReadLine -AllowPrerelease -Force
然后修改前面的配置文件 Microsoft.PowerShell_profile.ps1
,在末尾追加以下内容:
Import-Module PSReadLine
# 设置预测文本来源为历史记录
Set-PSReadLineOption -PredictionSource History
# 设置 Tab 为菜单补全和 Intellisense
Set-PSReadLineKeyHandler -Key "Tab" -Function MenuComplete
# 每次回溯输入历史,光标定位于输入内容末尾
Set-PSReadLineOption -HistorySearchCursorMovesToEnd
# 设置向上键为后向搜索历史记录
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
# 设置向下键为前向搜索历史纪录
Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward
最后重启终端即可生效。