PowerShell 美化之 ys 主题
简要说明
这篇文章本来是没有的,但之前突发奇想在 Windows
上整了一个 Oh My Zsh
,见文章Windows 中使用 Oh My Zsh 的各种方式,可 TMD 第二天就卡的要死,打开稳定耗时八九秒,输入命令真成了打字机,也没找到解决方案,又不甘心放弃 ys
主题,但还好找到了美化 power shell
输出提示的方法。
最终效果如下:
Prompts
Prompts
函数可以用来创建自定义提示,这样就能替换下面这样的古董级终端命令提示。
PS C:\>
第一步,生成 power shell
配置文件。
notepad $Profile
该文件一般在用户的文档目录中,在其中增加函数 Prompts
即可实现命令提示的自定义。如果没有 return
则以最后一个字符串作为返回值。
function Prompt {
"command prompts >"
}
之后我们对其做需要的修改即可。
VT 转义字符
转义字符只有 power shell 5
才开始支持,不过一般电脑也就是这个版本的,有关转义字符的介绍可以参见 ANSI 转义序列以及输出颜色字符详解,我们用到的是使用转义字符设置前景色。如下是示例。
$esc = [char]27
$at = "$esc[38;2;189;189;219m@$esc[0m"
输出效果是颜色为 rgb(189,189,219)
的 @
,依照此格式我们可以设置我们需要的命令提示的颜色。
ys 主题仿制
如上面图片所示,只实现了提示内容及颜色、Git
分支提示的支持,更多功能尚不支持,如果需要可以自己依据开发思路去自定义,如此也可实现自己喜欢的bash主题。
function Prompt {
# 转义规则参见 https://www.cnblogs.com/xiaoqiangink/p/12718524.html
$esc = [char]27
$jing = "$esc[38;2;189;189;219m#$esc[0m"
$at = "$esc[38;2;158;158;158m@$esc[0m"
$on = "$esc[38;2;158;158;158mon$esc[0m"
$in = "$esc[38;2;158;158;158min$esc[0m"
$nl = [Environment]::NewLine
$user = "$esc[38;2;122;184;184m$env:username$esc[0m"
$hostname = "$esc[38;2;122;184;122m$env:ComputerName$esc[0m"
$localtime = "$esc[38;2;158;158;158m[$(Get-Date -Format 'hh:mm:ss')]$esc[0m"
$pattern = $env:userprofile -replace '\\', '\\'
$promptString = "$(Get-Location)" -replace $pattern, "~"
$promptString = $promptString -replace '\\', '/'
$promptString = "$esc[38;2;219;219;189m$promptString$esc[0m"
$git_branch = ""
git rev-parse | Out-Null
if ($?) {
$branch = $(git branch --show-current --no-color)
$branch = "$esc[38;2;122;184;184m$branch$esc[0m"
$gitm = "$esc[38;2;217;230;242mgit:$esc[0m"
$git_branch = " $on $gitm$branch"
}
"$jing $user $at $hostname $in $promptString$git_branch $localtime $nl"
}
Windows terminal 主题
我使用的主题配置如下:
{
"background": "#0D1926",
"black": "#000000",
"blue": "#7A7AB8",
"brightBlack": "#535353",
"brightBlue": "#BDBDDB",
"brightCyan": "#BDDBDB",
"brightGreen": "#BDDBBD",
"brightPurple": "#DBBDDB",
"brightRed": "#DBBDBD",
"brightWhite": "#FFFFFF",
"brightYellow": "#DBDBBD",
"cursorColor": "#FFFFFF",
"cyan": "#7AB8B8",
"foreground": "#D9E6F2",
"green": "#7AB87A",
"name": "Blazer",
"purple": "#B87AB8",
"red": "#B87A7A",
"selectionBackground": "#FFFFFF",
"white": "#D9D9D9",
"yellow": "#B8B87A"
},
terminal
配色可以从 iTerm2-Color-Schemes 和 Windows Terminal Themes 获取。