教程 - 使用 Oh My Posh 为 PowerShell 或 WSL 设置自定义提示符

本教程提供了一些资源和方向,可帮助你使用 Oh My Posh 自定义 PowerShell 或适用于 Linux 的 Windows 子系统 (WSL) 的命令提示符。 Oh My Posh 提供完全自定义的命令提示符体验的主题功能,提供 Git 状态颜色编码和提示符。

在本教程中,了解如何:

Windows Terminal Custom Prompt

安装 Nerd Font

自定义命令提示符通常使用字形(图形符号)来设置提示符的样式。 如果你的字体不包含相应字形,则在整个提示符中,你可能会看到若干 Unicode 替换字符“▯”。 若要在终端中查看所有字形,建议安装 Nerd Font

如果你喜欢类似 Cascadia Code 的字体,有社区成员基于 Cascadia Code 存储库设计了 Caskaydia Cove Nerd Font。)

下载后,需要在系统上解压缩并安装字体。 (如何将新字体添加到 Windows)。

若要设置 Nerd Font 用于 Oh My Posh 和 Terminal Icons,请通过从 Windows 终端下拉菜单中选择“设置”(Ctrl+,) 来打开 Windows 终端设置 UI。 选择要应用字体的配置文件(例如 PowerShell),然后选择“外观”选项卡。在“字体”下拉菜单中,选择“CaskaydiaCove Nerd Font”或要用于自定义提示符的任何 Nerd 字体。

注意

如果想要使用不支持字形图标的终端字体(例如 Cascadia Code PL),可考虑使用包含 minimal 功能的 Oh My Posh 主题,指示不需要额外的图标。

使用 Oh My Posh 自定义 PowerShell 提示符

通过 Oh My Posh,可以使用完整的颜色集来定义和呈现终端提示,包括能够使用内置主题或创建自己的自定义主题。

安装 Oh My Posh for PowerShell

若要自定义 PowerShell 提示符,可使用 winget 安装 Oh My Posh。 输入以下命令:

winget install JanDeDobbeleer.OhMyPosh

这将安装:

你将需要同意源条款,并且可能会遇到多个包可用的情况。 在这种情况下,请选择希望使用的包 ID 并重新输入命令:winget install <package ID>

Screenshot of winget install oh my posh packages.

要使用 Microsoft Store 版本的 Oh My Posh(它将在新版本可用时自动更新),请使用以下命令:

winget install XP8K0HKJFRXGCK

输入 oh-my-posh version 以确认你的 Oh My Posh 安装版本号。 为确保拥有最新的更新,可以使用以下命令:winget upgrade oh-my-posh

注意

如果要在 PowerShell 中安装最新版本的 Oh My Posh,可能需要先删除 OMP 模块的缓存文件并卸载旧模块。 有关如何执行此操作的详细说明,请参阅 Oh My Posh 文档。如果你更熟悉 Scoop 安装程序或允许自动化的手动安装方法,则还可使用它们在 Windows 上进行安装,只需按照 Oh My Posh 文档中的说明操作即可。

选择并应用 PowerShell 提示符主题

可在 Oh My Posh 主题页面浏览主题的完整列表。

选择主题,并使用此命令更新 PowerShell 配置文件。 (可以将 notepad 替换为你选择的文本编辑器。)

notepad $PROFILE

如果收到路径错误,则你可能还没有 PowerShell 的配置文件。 若要创建一个,请使用以下 PowerShell 命令创建配置文件,然后尝试再次使用文本编辑器打开它。

new-item -type file -path $profile -force

将以下项添加到 PowerShell 配置文件的末尾,以设置 paradox 主题。 (将 paradox 替换为你选择的主题。)

oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\paradox.omp.json" | Invoke-Expression

现在,每个新的 PowerShell 实例都将通过导入 Oh My Posh 并设置命令行主题启动。

如果在尝试打开新的 PowerShell 实例时收到脚本错误,则表明 PowerShell 执行策略可能受到限制。 若要将 PowerShell 执行策略设置为不受限制,则需以管理员身份启动 PowerShell,然后使用以下命令:

Set-ExecutionPolicy -ExecutionPolicy Unrestricted

注意

这不是你的 Windows 终端配置文件。 你的 PowerShell 配置文件是一个脚本,该脚本在每次启动 PowerShell 时运行。 详细了解 PowerShell 配置文件

提示

请参阅 Oh My Posh 常见问题解答,了解常见问题的答案。 若要详细了解配置和常规设置(例如如何还原当前工作目录),请参阅 Oh My Posh 文档

使用 Oh My Posh 自定义 WSL 提示符

现在可通过 Oh My Posh 自定义 WSL 提示符,就像使用内置主题的 PowerShell 提示符一样。

安装 Oh My Posh for WSL

建议按照 Oh My Posh 文档中的 Linux 安装指南使用 Bash、Zsh 或其他方法安装 Oh My Posh for WSL。

目前,使用 Oh My Posh 自定义 WSL 提示符的建议路径使用 Homebrew 包管理器进行安装。 (Homebrew 现可与 WSL 一起使用!)安装 Homebrew for Linux 时,请务必按照后续步骤说明将 Homebrew 添加到 PATH 和 bash shell 配置文件脚本。

Homebrew 将安装以下内容:

  • oh-my-posh - 可执行文件,已添加到 /usr/local/bin
  • themes - 最新的 Oh My Posh 主题

选择并应用 WSL 提示符主题

将在 oh-my-posh 目录中找到 Oh My Posh 主题,它们显示为 JSON 文件。 可输入 cd $(brew --prefix oh-my-posh),再针对列表输入 cd themesls 来找到它。 对于通过 WSL 运行的 Ubuntu-20.04,路径可能如下所示:\\wsl.localhost\Ubuntu-20.04\home\linuxbrew\.linuxbrew\Cellar\oh-my-posh\6.34.1\themes。 还可在名为主题的 Oh My Posh 文档中查看主题的外观。

若要使用主题,请将其从 themes 文件夹复制到 $Home 文件夹,然后将此行添加到 $Home 文件夹中找到的 .profile 文件底部:

eval "$(oh-my-posh init bash --config ~/jandedobbeleer.omp.json)"

只要将首选使用的任何主题复制到 $Home 文件夹,就可将 jandedobbeleer.omp.json 替换为该主题的名称。

或者,如果在 Windows 中将 oh-my-posh 与 PowerShell 和 WSL 一起使用,则可通过指向 Windows 用户的主文件夹中的主题来与 WSL 共享 PowerShell 主题。 在 WSL 发行版的 .profile 路径中,将 ~ 替换为路径:/mnt/c/Users/<WINDOWSUSERNAME>。 将 <WINDOWSUSERNAME> 替换为你自己的 Windows 用户名。

如果需要,可自定义 Oh My Posh 主题

使用 Terminal-Icons 添加缺少的文件夹或文件图标

Terminal-Icons 是一个 PowerShell 模块,它会添加在 Windows 终端中显示文件或文件夹时可能缺少的文件和文件夹图标,并基于名称或扩展名查找相应的图标。 它尝试将图标用于已知文件/文件夹,但如果找不到此内容,则会回滚到通用文件或文件夹图标。

若要使用 PowerShell 安装 Terminal-Icons,请使用以下命令:

Install-Module -Name Terminal-Icons -Repository PSGallery

有关详细信息(包括用法和命令),请参阅 GitHub 上的 Terminal-Icons 存储库。

其他资源

  • Oh my Posh 文档
  • 终端图标存储库
  • Posh-Git 文档:Posh-Git 是一个 PowerShell 模块,它集成了 Git 和 PowerShell,提供可在 PowerShell 提示符中显示的 Git 状态摘要信息。
  • PowerLine 文档:Powerline 是 vim 的状态栏插件,为其他几个应用程序(包括 zsh、bash、tmux、IPython、Awesome、i3 和 Qtile)提供状态栏和提示符。