繁体   English   中英

如何更改 PowerShell 5 中的字体属性?

[英]How to change font properties in PowerShell 5?

我想将字体设置为使用Write-Host打印的路径的粗体。 我可以灵活地使用其他方法,例如 echo 或其他方法。

我尝试了其他方法,例如Write-Debug等,还检查了模块WindowsConsoleFonts 但是它们都不支持字体属性,例如在打印时将它们设为粗体或斜体。

$pathString = "[" + (Get-Location) + "]"
Write-Host $pathString -ForegroundColor Cyan

我正在使用不支持 MarkDown 渲染的 PowerShell 5.1,否则我会使用 Markdown 来完成它。

您可以通过VT(虚拟终端)转义序列实现粗体文本

但是,常规的 Windows 控制台 windows ( conhost.exe )支持斜体他们即将推出的继任者Windows 终端也不支持斜体(至少在撰写本文时)。 [1]

在 Windows 10 的最新版本中,默认情况下在Windows PowerShellZ3D265B4E003EEEF0DDFZ8817B81FA中都启用了对 VT 序列的支持。

但是, Write-Host不支持它们,因此您必须将转义序列直接嵌入到传递给Write-Host的字符串中(或发送到成功 output stream 的字符串,如果它进入控制台):

笔记:

  • 我在下面的示例中省略了Write-Host ,因为它不是绝对必要的,但通常确实应该将彩色文本写入显示器(主机),而不是成功 output stream。

  • 虽然最好始终使用 VT 序列来满足所有格式化需求 - 包括 colors - 可以将它们与Write-Host -ForegroundColor /结合使用。

PowerShell核心

PowerShell Core 支持通过`e转义序列直接"..." (双引号字符串)中嵌入转义序列,该转义序列扩展为文字 ESC 字符,它是启动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发行版支持终端的斜体; 例如,Ubuntu 18.04

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM