我尝试了这个:如何为 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)) "
}