如何在Powershell提示符中对齐某些内容?

时间:2016-01-07 05:48:55

标签: git powershell

我试图在我的提示中右对齐posh-git的Write-VcsStatus部分。基本上,我的提示在左侧列出了我的主机名和当前目录,并且当前在当前目录之后打印了git status info。我希望这个git状态是正确的,但我无法弄清楚如何做到这一点。

这是我的提示码:

Import-Module posh-git
function prompt {
     Update-NavigationHistory $pwd.Path
     Write-Host ([System.Net.Dns]::GetHostName() + ": ") -nonewline -foregroundcolor DarkCyan
     Write-Host (([string]$pwd).Replace("C:\Users\user", "~")) -nonewline -foregroundcolor DarkYellow
     Write-VcsStatus
     Write-Host
     Write-Host ($([char]0x2192)) -nonewline
     return " "
}

1 个答案:

答案 0 :(得分:0)

以下是使用$Host.UI.RawUI.CursorPosition的右对齐文字示例。

注意:这在Powershell_ISE中不起作用,因为它使用的是非标准控制台主机。

function Global:prompt {
     $oc = $host.ui.RawUI.ForegroundColor
     $host.UI.RawUI.ForegroundColor = "DarkCyan"
     $Host.UI.Write([System.Net.Dns]::GetHostName() + ": ")
     $host.UI.RawUI.ForegroundColor = "Yellow"
     $Host.UI.Write(([string]$pwd).Replace("C:\Users\user", "~")) 
     $message = "This text is right aligned"
     $startposx = $Host.UI.RawUI.windowsize.width - $message.length
     $startposy = $Host.UI.RawUI.CursorPosition.Y
     $Host.UI.RawUI.CursorPosition = New-Object System.Management.Automation.Host.Coordinates $startposx,$startposy
     $host.UI.RawUI.ForegroundColor = "DarkGreen"
     $Host.UI.Write($message)
     $host.UI.RawUI.ForegroundColor = $oc
     $Host.UI.Write($([char]0x2192))
     return " "
 }