记录一下 Windows 终端 PowerShell 的配置,免得下次重装系统又从头翻文档。
配置文件位置
PowerShell 的 profile 文件可以通过以下命令查看和编辑:
# 查看当前 profile 路径
echo $PROFILE
# 用记事本打开编辑
notepad $PROFILE
默认路径一般是:Documents\PowerShell\Microsoft.PowerShell_profile.ps1
完整配置
目前使用的三件套:
- posh-git —— 在终端里显示 git 分支状态
- PSReadLine 预测提示 —— 根据历史记录做命令自动补全
- oh-my-posh —— 美化的命令行提示符主题
Import-Module posh-git -ErrorAction SilentlyContinue
Set-PSReadLineOption -PredictionSource History
Set-PSReadLineOption -PredictionViewStyle ListView
oh-my-posh init pwsh --config https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/zash.omp.json | Invoke-Expression
逐行说明
Import-Module posh-git -ErrorAction SilentlyContinue
加载 posh-git 模块,在提示符中显示当前 git 仓库的分支名、是否有未提交的更改、是否有未跟踪的文件等状态。加上 -ErrorAction SilentlyContinue 是为了在模块未安装时不报错中断。
Set-PSReadLineOption -PredictionSource History
启用基于历史记录的预测提示。你在终端里打字的时候,PowerShell 会根据以前输入过的命令给出补全建议,按箭头右键就能直接补全,不用重复敲长命令。
Set-PSReadLineOption -PredictionViewStyle ListView
把预测提示的显示方式改成列表视图。默认是内联模式(InlineView),建议显示在命令行后面。ListView 会在下方弹出一个可选列表,多条建议一目了然,选起来按箭头上下键更顺手。
oh-my-posh init pwsh --config ... | Invoke-Expression
初始化 oh-my-posh 并使用 zash 主题。这个主题简洁清晰,左边显示当前目录和 git 状态,右边显示执行时间和上一命令的退出码。配置源是直接从 GitHub 拉取的 JSON 主题文件,好处是换机器不用拷文件,一行命令即可。
安装这些组件
如果新机器从头配置,先装这三样:
# 1. 安装 posh-git
Install-Module posh-git -Scope CurrentUser -Force
# 2. 安装 oh-my-posh(winget 或直接下载)
winget install JanDeDobbeleer.OhMyPosh -s winget
# 3. 安装终端专属字体(否则图标显示为方框)
# 推荐:Meslo LGM NF
oh-my-posh font install meslo
# 然后在 Windows Terminal 设置中把字体改为 "MesloLGM NF"
字体这一步容易被忽略。oh-my-posh 的提示符里用了大量 Nerd Font 图标,如果终端字体不支持,看到的全是乱码方块。装了对应字体之后马上变正常。
踩过的坑
- 执行策略:PowerShell 默认禁止运行脚本。第一次配 profile 可能遇到这个错误,执行
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser即可。 - oh-my-posh 版本:旧版(2.x)的配置语法跟新版(3.x 以后)完全不同。如果网上搜到的配置不管用,先确认版本:
oh-my-posh --version。当前用的是新版,配置文件用 JSON 格式,初始化命令是oh-my-posh init pwsh。 - 启动慢:如果装了太多模块感觉 PowerShell 启动慢,可以把不常用的模块改成按需加载,或者把
$PROFILE里的内容精简到最少。