簡體   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