查看: 132|回复: 3

使用oh-my-posh与Windows Terminal定制PowerShell开发环境

[复制链接]
发表于 2 小时前 | 显示全部楼层 |阅读模式
许多开发者抱怨Windows原生命令行界面丑陋且功能单一,而Linux和macOS下的Shell体验则友好得多。微软在Build 2019上发布了Windows Terminal,统一管理CMD、PowerShell和WSL等终端,并支持深度主题定制。但很多教程将PowerShell配置与Windows Terminal配置混为一谈,导致概念混淆。实际上,PowerShell是命令解释器,Windows Terminal是宿主容器,二者的美化工作独立进行,最终效果叠加。本文基于最新版PowerShell 7.x和Windows Terminal,详细说明如何通过oh-my-posh、posh-git以及终端配置文件,打造一个美观、高效的开发命令行环境。

一、安装必要工具
首先确保系统为Windows 10,并从Microsoft Store安装Windows Terminal。推荐安装PowerShell 7.x,安装后可在应用列表中找到PowerShell 7(无Windows前缀)。
还需要一款强大的编辑器,推荐Visual Studio Code。Windows平台下可使用包管理器scoop来安装字体和工具,安装scoop前需放宽执行策略:
  1. Set-ExecutionPolicy RemoteSigned -scope CurrentUser
  2. Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
复制代码

二、配置PowerShell 7
原生的PowerShell 7界面配色单调,提示符无个性,缺少Git集成和自动补全功能。通过安装oh-my-posh、posh-git及PSReadLine模块即可全面改造。
1. 安装模块
  1. Install-Module posh-git
  2. Install-Module oh-my-posh
复制代码
2. 编写配置文件
PowerShell的配置文件路径由$PROFILE变量给出,使用VS Code打开:
  1. code $PROFILE
复制代码
加入以下内容,实现自动加载主题和Git增强,并开启Tab补全、历史搜索等便捷功能:
  1. Import-Module posh-git
  2. Import-Module oh-my-posh
  3. Set-Theme Agnoster
  4. Set-PSReadLineOption -PredictionSource History
  5. Set-PSReadlineKeyHandler -Key Tab -Function Complete
  6. Set-PSReadLineKeyHandler -Key "Ctrl+d" -Function MenuComplete
  7. Set-PSReadLineKeyHandler -Key "Ctrl+z" -Function Undo
  8. Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
  9. Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward
复制代码
保存后重启PowerShell 7,提示符立即变成Linux风格的用户名@主机名。若出现乱码,说明当前字体缺少特殊符号,需更换支持Nerd Fonts的字体。使用scoop安装FantasqueSansMono-NF:
  1. scoop bucket add 'nerd-fonts'
  2. sudo scoop install FantasqueSansMono-NF
复制代码
安装后在PowerShell属性或Windows Terminal中选择该字体即可。
3. 可选增强:ColorTool更改文字颜色、DirColors让ls命令显示色彩
若要进一步调整PowerShell的默认文字颜色,可使用微软官方的ColorTool:
  1. scoop install colortool
  2. colortool --schemes
  3. colortool OneHalfDark.itermcolors
复制代码
为ls命令增加色彩:
  1. Install-Module DirColors
  2. code $PROFILE  # 追加 Import-Module DirColors
复制代码

三、配置Windows Terminal主题
Windows Terminal拥有独立的主题系统,其配置文件为settings.json(位于“设置”菜单中)。注意不要编辑default.json,它是只读模板。settings.json的结构分为四部分:Global(全局设置)、profiles(终端配置)、schemes(配色方案)、actions(快捷键)。
修改的目标是让PowerShell 7在Windows Terminal中呈现一致的、美观的界面。
1. 配置profiles
在profiles的list中找到PowerShell对应的节点(通常name为“PowerShell”,source为“Windows.Terminal.PowershellCore”)。在该节点内指定配色方案、字体、背景图片等。例如使用One Half Dark配色、Cascadia Code PL字体、部分透明背景:
  1. {
  2. "guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
  3. "hidden": false,
  4. "name": "PowerShell",
  5. "source": "Windows.Terminal.PowershellCore",
  6. "colorScheme": "One Half Dark",
  7. "fontFace": "Cascadia Code PL",
  8. "backgroundImage": "C:\\Users\\yulinyige\\Pictures\\dolaameng.jfif",
  9. "backgroundImageStretchMode": "uniformToFill",
  10. "backgroundImageAlignment": "center",
  11. "backgroundImageOpacity": 0.2,
  12. "useAcrylic": true,
  13. "acrylicOpacity": 0.5
  14. }
复制代码
2. 配置配色方案schemes
schemes数组可以添加自定义配色。例如仿黑客帝国的黑底绿字方案:
  1. {
  2. "schemes": [
  3. {
  4. "name": "Matrix",
  5. "background": "#000000",
  6. "foreground": "#00d900",
  7. "black": "#000000",
  8. "red": "#00d900",
  9. "green": "#00d900",
  10. ... // 所有颜色均设为 #00d900
  11. "white": "#00d900"
  12. }
  13. ]
  14. }
复制代码
在PowerShell节点中引用此配色,并开启CRT效果:
  1. "colorScheme": "Matrix",
  2. "experimental.retroTerminalEffect": true
复制代码
3. 全局设置
将默认启动终端改为PowerShell 7,修改global中的defaultProfile为PowerShell的GUID。

四、总结
通过上述步骤,开发者可以从两个层面改造Windows下的命令行体验:在PowerShell内部借助oh-my-posh等模块实现智能提示、Git集成和美观的提示符;在Windows Terminal层面通过settings.json调节字体、配色、背景和特效。两者的组合让Windows终端终于拥有了接近Linux/macOS的质感。整个配置过程本质是理解宿主与命令解释器的分离,以及分层配置的设计哲学。建议读者将settings.json加入版本控制,方便在多台机器间同步。更多配色方案可参考iTerm2-Color-Schemes项目或windowsterminalthemes.dev。
回复

使用道具 举报

发表于 1 小时前 | 显示全部楼层

Re: 使用oh-my-posh与Windows Terminal定制PowerShell开发环境

很详细的教程,把PowerShell和Windows Terminal的分工讲得很清楚,之前确实容易把这两者的美化混在一起。你提到的字体乱码和配置文件路径这两个坑,对新手来说特别实用。另外想问下,你用的背景图片是任意图片都可以吗,还是需要特定尺寸分辨率效果才好?
回复 支持 反对

使用道具 举报

发表于 1 小时前 | 显示全部楼层

Re: 使用oh-my-posh与Windows Terminal定制PowerShell开发环境

很详细的教程!楼主把PowerShell和Windows Terminal的分工讲得很清楚——一个是命令解释器,一个是宿主容器,分开配置确实能避免很多混淆。按照这个步骤走,从安装scoop、配置oh-my-posh主题,到调整Windows Terminal的settings.json,整体流程很完整。特别是提醒了字体乱码的处理和配置文件路径($PROFILE)的用法,对新手很友好。整理这么一个套配置要花不少功夫,谢谢分享!
回复 支持 反对

使用道具 举报

发表于 1 小时前 | 显示全部楼层

Re: 使用oh-my-posh与Windows Terminal定制PowerShell开发环境

感谢楼主的详细分享!这篇文章把Windows Terminal和PowerShell这两个容易混淆的概念分得很清楚,对新手来说非常友好。配置步骤也很清晰,从装scoop到安装oh-my-posh再到改写$PROFILE,一步步跟着做应该就能复现效果。 有一点我想提醒一下:楼主写的是 `Set-Theme Agnoster`,但oh-my-posh在3.x版本以后已经改为 `Set-PoshPrompt -Theme agnoster`,如果你用的是最新版的oh-my-posh,直接运行 `Set-Theme` 可能会报错。建议用户先检查一下自己的oh-my-posh版本(`Get-Module oh-my-posh | Select-Object Version`),如果是3.0以上就要用新命令。 另外,scoop安装字体时写的是 `sudo scoop install`,其实scoop本身不需要sudo,直接 `scoop install` 就行,这里可能是个笔误。 总之,这篇文章很实用,特别是配色方案和字体选择的建议都来自实际经验,值得尝试。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-6-27 19:02 , Processed in 0.036189 second(s), 18 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部