我想使用Write-Host
将字体设置为我正在打印的路径的粗体。我可以灵活地使用其他方法,例如echo或其他方法。
我尝试过其他方法,例如Write-Debug
等,也检查了模块WindowsConsoleFonts
。但是它们都不支持字体属性,例如在打印它们时使其变为粗体或斜体。
$pathString = "[" + (Get-Location) + "]"
Write-Host $pathString -ForegroundColor Cyan
我正在使用不支持MarkDown渲染的PowerShell 5.1,否则我会使用Markdown完成它。
您可以通过VT (Virtual Terminal) escape sequences实现粗体文本。
但是,常规Windows控制台窗口(conhost.exe
)确实不支持斜体,并且其即将推出的后继产品Windows Terminal(至少截至写作)。[[1]
在最新版本的Windows 10中,默认情况下在Windows PowerShell和PowerShell Core中都启用了对VT序列的支持。
但是,Write-Host
不支持它们,因此必须将转义序列直接嵌入传递给Write-Host
的字符串中(或如果传递到控制台,则将字符串发送到成功输出流中:) >
注意:
我在下面的示例中省略了Write-Host
,因为这不是严格必要的,但是通常确实应该将彩色文本写入显示(主机),而不是成功输出流。
虽然最好始终将VT序列用于所有格式需求-包括颜色-可以将它们与Write-Host -ForegroundColor /
-BackgroundColor`结合使用。
PowerShell Core
PowerShell Core支持通过"..."
转义序列将转义序列直接
`e
(双引号字符串)中,转义序列扩展为文字ESC字符,即initiates的字符VT转义序列。:"To `e[1mboldly`e[m go ..., in `e[36mcyan`e[m."
Windows PowerShell
[`e
不支持;最简单的解决方案是使用\e
作为占位符,并使用-replace
代替实际的ESC字符(Unicode代码点0x1b
):
,您可以运行以下测试命令来查看单词"To \e[1mboldly\e[m go ..., in \e[36mcyan\e[m." -replace '\\e', [char] 0x1b
[[1]从PowerShell Core
italics
是否以斜体显示:"`e[3mitalics`e[m after"
请注意,macOS以及至少某些Linux发行版中支持终端<< are>中的斜体。例如Ubuntu 18.04