Win11 内置了 Windows Terminal,很好用;Solarized Light 是我一直以来在各种代码工具中使用的配色方案,很舒服;Windows Terminal 内置了 Solarized Light ,很方便,然而,当它们放在一起时,PowerShell中的输入的数字就看不见了。
问题根源
问题的原因出现在 PowerShell 自身的默认颜色方案上,通过 Get-PSReadLineOption 可以查看到,MemberColor 和 NumberColor 值为 $([char]0x1b)[97m,导致数字的颜色与背景色融为了一体。
解决问题
修改 PowerShell 的颜色方案即可解决问题,一行命令解决:
Set-PSReadLineOption -colors @{member = 'darkblue'; number = 'red'}
但是这个修改是无法持久化的,因此需要使用 profile 文件来永久修改。
在 PowerShell 中执行 $PsHome 得到 PowerShell 根目录,打开目录,在其中创建 profile.ps1 文本文件。
例如我的路径是”C:\Windows\System32\WindowsPowerShell\v1.0\Profile.ps1″,此目录可能是受保护的,不能创建文件的话就在别的地方建好复制进来即可。
文件内容:
if (Test-Path env:wt_session) { Set-PSReadLineOption -colors @{member = 'darkblue'; number = 'red'} }
保存即可生效。此后本机所有用户的 PowerShell 都会应用此修改。
如果打开 PowerShell 时报错 无法加载文件 C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1,因为在此系统上禁止运行脚本。,就需要设置一下执行策略。
打开管理员权限的 PowerShell ,执行
set-ExecutionPolicy RemoteSigned
一切OK。