许多开发者抱怨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前需放宽执行策略:- Set-ExecutionPolicy RemoteSigned -scope CurrentUser
- Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
复制代码
二、配置PowerShell 7
原生的PowerShell 7界面配色单调,提示符无个性,缺少Git集成和自动补全功能。通过安装oh-my-posh、posh-git及PSReadLine模块即可全面改造。
1. 安装模块- Install-Module posh-git
- Install-Module oh-my-posh
复制代码 2. 编写配置文件
PowerShell的配置文件路径由$PROFILE变量给出,使用VS Code打开:加入以下内容,实现自动加载主题和Git增强,并开启Tab补全、历史搜索等便捷功能:- Import-Module posh-git
- Import-Module oh-my-posh
- Set-Theme Agnoster
- Set-PSReadLineOption -PredictionSource History
- Set-PSReadlineKeyHandler -Key Tab -Function Complete
- Set-PSReadLineKeyHandler -Key "Ctrl+d" -Function MenuComplete
- Set-PSReadLineKeyHandler -Key "Ctrl+z" -Function Undo
- Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
- Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward
复制代码 保存后重启PowerShell 7,提示符立即变成Linux风格的用户名@主机名。若出现乱码,说明当前字体缺少特殊符号,需更换支持Nerd Fonts的字体。使用scoop安装FantasqueSansMono-NF:- scoop bucket add 'nerd-fonts'
- sudo scoop install FantasqueSansMono-NF
复制代码 安装后在PowerShell属性或Windows Terminal中选择该字体即可。
3. 可选增强:ColorTool更改文字颜色、DirColors让ls命令显示色彩
若要进一步调整PowerShell的默认文字颜色,可使用微软官方的ColorTool:- scoop install colortool
- colortool --schemes
- colortool OneHalfDark.itermcolors
复制代码 为ls命令增加色彩:- Install-Module DirColors
- 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字体、部分透明背景:- {
- "guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
- "hidden": false,
- "name": "PowerShell",
- "source": "Windows.Terminal.PowershellCore",
- "colorScheme": "One Half Dark",
- "fontFace": "Cascadia Code PL",
- "backgroundImage": "C:\\Users\\yulinyige\\Pictures\\dolaameng.jfif",
- "backgroundImageStretchMode": "uniformToFill",
- "backgroundImageAlignment": "center",
- "backgroundImageOpacity": 0.2,
- "useAcrylic": true,
- "acrylicOpacity": 0.5
- }
复制代码 2. 配置配色方案schemes
schemes数组可以添加自定义配色。例如仿黑客帝国的黑底绿字方案:- {
- "schemes": [
- {
- "name": "Matrix",
- "background": "#000000",
- "foreground": "#00d900",
- "black": "#000000",
- "red": "#00d900",
- "green": "#00d900",
- ... // 所有颜色均设为 #00d900
- "white": "#00d900"
- }
- ]
- }
复制代码 在PowerShell节点中引用此配色,并开启CRT效果:- "colorScheme": "Matrix",
- "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。 |