PowerShell下不同主题的效果图:
配置方式一:简单更改配色
- 更改默认PowerShell终端字体:比如更纱黑体
- 通过微软提供的 PowerShell 配色的小工具 ColorTool 更改配色
- 使用第三方终端:比如 Fluent Terminal
配置方式二:自定义提示符
推荐直接用下面的方式:
-
安装 oh-my-posh:它是 PowerShell 提示符的主题框架,将让你可以为PowerShell提示符设置主题,并且自带多个主题。(点击链接可获取更多信息)
-
安装 posh-git:用于显示Git状态指示(它不包含git) Posh-Git(PowerShell Git)将在PowerShell 提示符下为您提供git存储库的目录中相关信息。
-
安装 Get-ChildItemColor :为 PowerShell 的输出添加颜色(比如为 ls 的输出上色)
上面三个需要通过 NuGet 安装,所以先以管理员方式打开 PowerShell,然后分别运行下面的两条命令:
1 2
Install-PackageProvider NuGet -MinimumVersion '2.8.5.201' -Force Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
然后在普通 PowerShell 中 使用下面的命令安装 oh-my-posh 、 posh-git 和 Get-ChildItemColor :
1 2 3
Install-Module -AllowClobber posh-git -Scope CurrentUser Install-Module oh-my-posh -Scope CurrentUser Install-Module -AllowClobber Get-ChildItemColor -Scope CurrentUser
其实直接在管理员模式下运行上面命令(去掉末尾的
-Scope CurrentUser
)还会省去很多麻烦 -
添加(配置文件可能还不存在)或编辑 PowerShell 配置文件,
1 2 3 4
# 先使用如下命令来检测和添加一个 PowerShell 配置文件 if (!(Test-Path -Path $PROFILE )) { New-Item -Type File -Path $PROFILE -Force } # 再通过如下命令编辑该配置文件 ise $PROFILE
ise:表示 Windows PowerShell ISE ,通常用它来编辑
.ps1
文件;你也可以使用记事本打开notepad $PROFILE
。Powershell 的配置文件路径由变量
$PROFILE
确定,文件名一般为 Microsoft.PowerShell_profile.ps1 -
然后在配置文件中添加如下内容
1 2 3 4 5 6 7 8 9 10
# 在打开 PowerShell 时导入模块 Import-Module Get-ChildItemColor # 通过别名的方式将 l 和 ls 设置为 Get-ChildItemColor 相关输出以进行着色 Set-Alias l Get-ChildItem -option AllScope Set-Alias ls Get-ChildItemColorFormatWide -option AllScope # 导入另外两个模块 Import-Module posh-git Import-Module oh-my-posh # 选择主题(可以在命令行中输入 Set-Theme 加 tab 来查看可用主题名称) Set-Theme robbyrussell
-
下载支持的字体:用于正确显示内容,避免出现方块
□
;比如更纱黑体 -
安装第三方终端: 默认的PowerShell终端不管是配色还是易用性都非常差;要想完整适配 oh-my-posh ,需要使用第三方终端比如 Cmder 或 Fluent Terminal
-
配置第三方终端使用相关字体,比如更纱黑体。不要忘记这一步。
-
重启第三方终端,连接 PowerShell 查看效果
第三方终端使用 Cmder
如果使用的是 Cmder 则还需要从下面的两项配置中选择一种进行配置:
-
配置方式一:将上面
$PROFILE
(即Microsoft.PowerShell_profile.ps1文件) 的内容加入 cmder安装路径的 config目录下的 user-profile.ps1中。 -
配置方式二:你也可以配置 cmder 的 Powershell标签 直接加载 Microsoft.PowerShell_profile.ps1文件。通过在cmder 👉 settings 👉 启动 👉 任务 👉
PowerShell::PowerShell
的命令组内容修改为下面的形式,注意文件路径需要是你自己的 Microsoft.PowerShell_profile.ps1路径:PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command "Invoke-Expression '. ''D:\Fan Dean\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1'''"
错误排查
无法下载模块
关键的提示信息:“警告: 无法下载可用提供程序列表。请检查 Internet 连接。”
|
|
先尝试 以管理员方式打开 PowerShell,然后分别运行下面的两条命令:
|
|
如果还是不行则需要科学上网或通过 scoop 安装:
|
|
如果无法下载 Get-ChildItemColor 可以参考该链接(官方文档),选择手动安装。
提示找不到模块
开启终端时提示模块找不到 ,比如:
Import-Module : The specified module 'posh-git' was not loaded because no valid module file was found in any module di
rectory.
。。。
PowerShell 会在PSModulePath
变量指定的目录中搜索指定的模块(安装时也会安装到这里)。查看该变量值的方法是在 PowerShell 运行 $Env:PSModulePath
,如果要添加或修改变量值可以:
-
修改其对应的环境变量
-
或参见" 修改PSModulePath安装路径"
-
或在配置文件中添加,方式如下:
1 2 3
# 添加 Get-ChildItemColor 所在模块的路径 $DModulePath="D:\Felix\Documents\WindowsPowerShell\Modules" $env:PSModulePath = $env:PSModulePath.Insert(0, "$DModulePath;")
没有发现 git 命令
如果出现
PS C:\Users\Fan Dean> Import-Module posh-git
警告: git command could not be found. Please create an alias or add it to your PATH.
C:\Users\Fan Dean> Import-Module oh-my-posh
-
可能是你没有安装 git ,安装就好了。
-
可能你的git包含于cmder完整版中,但是此路径没有包含在PATH中,则需要添加一下。
出现方块
终端忘记设置字体或下载的字体无法支持相应符号,建议安装 更纱黑体。
补充
查看主题配置:
# 查看当前主题配置
$ ThemeSettings
MyThemesLocation : D:\Fan Dean\Documents\WindowsPowerShell\PoshThemes
ErrorCount : 0
GitSymbols : {OriginSymbols, LocalWorkingStatusSymbol, LocalDefaultStatusSymbol, BranchUntrackedSymbol...}
CurrentUser : Fan Dean
PromptSymbols : {SegmentSeparatorForwardSymbol, ElevatedSymbol, TruncatedFolderSymbol,
SegmentSeparatorBackwardSymbol...}
CurrentThemeLocation : D:\Scoop\Applications\modules\oh-my-posh\Themes\Paradox.psm1
Colors : {AdminIconForegroundColor, PromptBackgroundColor, PromptHighlightColor, GitLocalChangesColor...}
部分符号检测:
|
|
将上面内容添加到 Microsoft.PowerShell_profile.ps1 文件中,然后在 Powershell中运行下面的命令来检测当前字体是否支持某些码点(但是这个不够全面):
Write-Host "$(U 0xE0B0) $(U 0x00B1) $(U 0xE0A0) $(U 0x27A6) $(U 0x2718) $(U 0x26A1) $(U 0x2699)"
为cmder配置背景图片:
如果你为Cmder设置了背景图片,并且为cmder设置了Power line,则会发现显示有些问题(蓝色部分没有显示);(通过鼠标悬停,看到提示)此时我们需要在"背景"处修改"替换颜色索引" 值为 #0
(默认为*
,它会把蓝色替换掉,而我们的背景是黑色,#0
表示的就是黑色)
参考: