我正在尝试在每个 Powershell 提示之前添加一个新行以提高可读性,如下所示。
代替:
(base) PS C:\Users\myname --> "Hello"
Hello
(base) PS C:\Users\myname --> "Wow"
Wow
我想要这样的输出:
(base) PS C:\Users\myname --> "Hello"
Hello
(base) PS C:\Users\myname --> "Wow"
Wow
(base) PS C:\Users\myname -->
我根据其他 SO 帖子修改了我的提示并添加 conda 环境挂钩的 powershell 配置文件如下:
function Prompt
{
$promptString = "PS " + $(Get-Location) + " -->"
Write-Host "$promptString" -NoNewline -ForegroundColor Yellow
return " "
}
%{& "C:\Users\myname\Anaconda3\Scripts\conda.exe" "shell.powershell" "hook"} | Out-String | Invoke-Expression
我尝试将新行参数(“`n”)添加到函数提示符中,如下所示:
$promptString = "`nPS " + $(Get-Location) + " -->"
这给我的输出为:
(base)
PS C:\Users\myname -->
这不是我想要的。
我也尝试在 conda 钩子之前添加一个 Write-Host 但这也不起作用:
Write-Host `n | %{& "C:\Users\myname\Anaconda3\Scripts\conda.exe" "shell.powershell" "hook"} | Out-String | Invoke-Expression
它给了我错误: “Invoke-Expression:无法将参数绑定到参数‘Command’,因为它是一个空字符串。” 所以这也行不通。
我认为这应该是一个简单的修复,但我无法找到正确的命令/位置来放置允许我添加新行以提高代码可读性的命令。谷歌搜索了一段时间,虽然我已经学到了很多东西,但已经有一段时间没能找到解决办法了,所以向 Stack Overflow 社区寻求帮助。提前谢谢你!
您需要修改
prompt
函数after它已被conda.exe
修改,您可以通过将以下after您的& "C:\Users\myname\Anaconda3\Scripts\conda.exe" "shell.powershell" "hook" | Out-String | Invoke-Expression
调用放在您的$PROFILE
文件中(注意有不需要% { ... }
):
$function:prompt = @"
Write-Host "`n"
$function:prompt
"@
这通过在调用前一个
prompt
函数的主体之前发出换行符("`n"
)重新定义prompt
函数,使用命名空间变量符号。