更改 PowerShell 7 Get-ChildItem 结果的颜色

更改 PowerShell 7 Get-ChildItem 结果的颜色

我在 PyCharm 中使用 PowerShell 7 作为终端,但命令的默认颜色不太清晰。

我创建了一个profile.ps1,并以这种方式设置它们:

# Set colours
Set-PSReadLineOption -Colors @{
    Command = "`e[30;107m"
    Comment = "`e[32;107m"
    ContinuationPrompt = "`e[30;47m"
    Emphasis = "`e[30;107m"
    Error = "`e[91;47m"
    InlinePrediction = "`e[90;47m"
    Keyword = "`e[92;47m"
    ListPrediction = "`e[33;47m"
    ListPredictionSelected = "`e[48;5;238m"
    Member = "`e[97;47m"
    Number = "`e[30;47m"
    Operator ="`e[90;47m"
    Parameter = "`e[90;47m"
    Selection = "`e[30;107m"
    String = "`e[36;47m"
    Type = "`e[30;47m"
    Variable =  "`e[92;47m"
}

但我找不到如何修改Get-ChildItem目录的结果。由于我使用的是浅色主题,结果并不十分清楚

环顾四周,似乎有一些使用第三方命令或复杂脚本的解决方案,但我想知道在 PowerShell 7 中是否有一种简单的方法可以使用命令来执行此操作Set-PSReadLineOption

有什么建议么?

答案1

Get-ChildItem 输出的颜色支持已包含在PR#14403并发布到v7.2.0

可通过以下方式配置$PSStyle偏好变量。

你应该把任何改变$PROFILE— 正如您一直在做的那样 — 但您需要修改$PSStyle,而不是 PSReadLine 选项。

来自文档:

$PSStyle.FileInfo是一个嵌套对象,用于控制 FileInfo 对象的颜色。

  • 目录- 内置成员指定目录的颜色
  • 符号链接- 内置成员指定符号链接的颜色
  • 可执行文件- 内置成员用于指定可执行文件的颜色。
  • 扩大- 使用此成员定义不同文件扩展名的颜色。扩展名成员预先包含存档和 PowerShell 文件的扩展名。注意

笔记 $PSStyle.FileInfoPSAnsiRenderingFileInfo仅在启用实验性功能时可用。有关详细信息,请参阅关于实验功能使用实验性功能

在 PowerShell 7.3 中,该PSAnsiRenderingFileInfo功能已成为主流并默认可用。

因此,要更改文件和目录的颜色,请在$PSStyle.FileInfo对象为代表您选择的颜色的 ANSI 转义序列。

例如,将目录的颜色更改为亮黄色:

# As separate Yellow and Bold attributes
$PSStyle.FileInfo.Directory = "`e[33;1m" # Note the double quotes!

# Sequences 90-97 and 100-107 are also supported
$PSStyle.FileInfo.Directory = "`e[93m" # Note the double quotes!

双引号是必不可少的,否则​`e将被按字面意思解释,并且会出现错误SetValueIncovationException

虽然文档声称该方法还支持 24 位颜色FromRgb,但该方法仅适用于前景色和背景色样式(由于超链接数量已达上限,因此我无法直接链接到这两个类的 SDK 文档,因此这里是 SDK 文档System.Management.Automation.PSStyle)。

相关内容