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

哦, My Posh 为提供 Git 状态颜色编码和提示的完全自定义命令提示符体验提供主题功能。

如果只想自定义终端的配色方案外观,可以在Windows 终端设置中执行此操作(无需安装 Oh My Posh 主题)。

本教程介绍如何执行下列操作:

Windows 终端自定义提示符

安装 Nerd Font

自定义的命令提示符通常使用字形(图形符号)设置提示样式。 如果字体不包含相应的字形,则提示中可能会显示多个 Unicode 替换字符“▯”。

若要查看终端中的所有字形,建议安装 Nerd Font(如 Cascadia Code NF),可以从 Cascadia Code 发布页下载该字体。

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

若要设置 Nerd Font 用于 Oh My Posh 和 Terminal Icons,请通过从 Windows 终端下拉菜单中选择“设置”(Ctrl+,) 来打开 Windows 终端设置 UI。 选择要在其中应用字体的配置文件(例如 PowerShell),然后选择“ 外观”。 在 “字体” 下拉菜单中,选择 Cascadia Code NF 或要使用的 Nerd Font。

注意

如果要使用不支持字形图标的终端字体(如 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>

winget install oh my posh 包的屏幕截图。

要使用 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 提示符

哦, My Posh 还允许你使用 内置主题自定义 WSL 提示。

安装 Oh My Posh for WSL

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

使用 Oh My Posh 自定义 WSL 提示符使用 Homebrew 包管理器 进行安装。 安装 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)"

可以替换为 jandedobbeleer.omp.json 要使用的主题的名称(只需确保它在文件夹中 $Home 复制)。

或者,如果在 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)提供状态栏和提示符。