在每个Powershell提示前添加一个新行(包括conda环境名称)

问题描述 投票:0回答:1

我正在尝试在每个 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 社区寻求帮助。提前谢谢你!

powershell conda newline environment prompt
1个回答
0
投票

您需要修改

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
函数,使用命名空间变量符号

© www.soinside.com 2019 - 2024. All rights reserved.