加载中...

Win11 终端美化


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 的工具,其安装步骤如下:

  1. 使用系统管理员打开 Windows Terminal
  2. 执行安装命令: winget install JanDeDobbeleer.OhMyPosh -s winget
  3. 使用系统管理员重新打开 Windows Terminal,使得 oh-my-posh 命令生效
  4. 安装必要字体(否则某些 icron 会乱码),执行命令 oh-my-posh font install,此时会出现字体的候选列表,官方推荐安装 Meslo :

0x13 配置 oh-my-posh

安装完成后,现在即使打开 Windows Terminal 是没有任何效果的,需要再做一下配置。

配置运行 Windows Terminal 时自动加载 oh-my-posh:

  1. 执行命令 echo $PROFILE 查看 powershell 的配置文件路径,第一次配置肯定时不存在的,需要手动创建这个文件
  2. 修改这个文件内容:
    • 在其中添加一行: 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 的主题样式,可以到官方的主题列表选择自己喜欢的主题替换上去
  3. 这个时候重新启动 Windows Terminal,就会自动加载这个配置文件,进入 oh-my-posh 终端

这里注意,有可能你重新打开 Windows Terminal 时,会报错: 无法加载文件 .....\Microsoft.PowerShell_profile.ps1,因为在此系统上禁止运行脚本

这里的 Microsoft.PowerShell_profile.ps1 就是你刚刚修改的配置文件,其实它是以 ps1 形式存在的一个 powershell 脚本。

这个报错是因为你的 PowerShell 限制了执行策略,不允许随便执行第三方脚本。

解决方法也很简单,只需要以管理员权限打开 Powershell:

  1. 执行 Set-ExecutionPolicy RemoteSigned 修改策略
  2. 执行 Get-ExecutionPolicy 确认策略是否已修改

此时再重新打开 Windows Terminal 就可以成功进入 oh-my-posh 了

0x14 配置字体

此时 oh-my-posh 一般是乱码的,原因是未设置字体。

  1. 在 Windows Terminal 顶部最右边,依次点击 ->> 设置 ->> Windows Powershell ->> 外观
  2. 在【字体】中选择刚刚安装的 Meslo: MesloLGM Nerd Font

顺便拉到下方的【透明度】,设置窗体 半透明 和 启用亚克力材料,会显得更科技感

重新打开 Windows Terminal,至此 oh-my-posh 已配置完成。

0x20 配置 SSH

如果有 ssh 的需求,Windows Terminal 也是支持的:

  1. 在 Windows Terminal 顶部最右边,依次点击 ->> 设置 ->> 打开 JSON 文件
  2. 在打开的 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

最后重启终端即可生效。


文章作者: EXP
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 EXP !
  目录