PowerShell 提示符颜色问题

PowerShell 提示符颜色问题

我尝试了这个:如何为 Powershell 提示符添加颜色?

function prompt  
{  
    $ESC = [char]27
    "$ESC[46mPS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) $ESC[0m"  
}

并尝试了这个:在 Powershell 提示符中使用 ANSI 转义码添加颜色,在执行某些控制台进程(如 git)后失去意义

function prompt {
    "" + [char]0x001b + "[35m colorized >" + [char]0x001b + "[0m"
}

两种方法都有效,但会产生同样奇怪的问题。当我打印引号( ' 或 " )时,突然,在提示符后立即出现字符 'm'。它不会影响功能,但复制文本时此字符仍然存在,因此每次粘贴后删除 'm' 非常烦人。我正在使用康埃穆终端,但问题在标准 Windows PowerShell 应用程序中也仍然存在。

以下是图片:PowerShell 提示符屏幕截图

PowerShell 信息:PSVersion - 5.1.19041.610,BuildVersion - 10.0.19041.610,CLRVersion - 4.0.30319.42000。

还尝试过这个:带有随机颜色的 PowerShell 提示符,这里没有出现任何奇怪的字符,但是这个提示在引用时不会像普通提示那样动态地改变颜色。

function prompt {
    $color = Get-Random -Min 1 -Max 16
    Write-Host ("PS " + $(Get-Location) +">") -NoNewLine `
     -ForegroundColor $Color
    return " "
}

答案1

从您的第一个示例开始,我建议将“重置颜色”ANSI 转义序列移到“>”字符之前。此外,我更喜欢更改文本前景色而不是背景色。

function prompt  
{  
    $ESC = [char]27
    "$ESC[36mPS $($executionContext.SessionState.Path.CurrentLocation)$ESC[0m$('>' * ($nestedPromptLevel + 1)) "  
}

相关内容