1. 安装 Windows Terminal。
点击此链接进入网站下载安装。Windows Terminal 可以执行 cmd, powershell, bash 等终端,界面比原生 window 提供的更加漂亮,并且支持自定义各种样式。
在 window terminal 中可以直接通过 ctrl + 鼠标点击
以管理员模式运行。
2. 安装 powershell7
安装步骤可参考官方文档。或者直接进入官方 Github 仓库,下载 “Downloads (stable)” 版本的,然后双击安装即可。
Windows 中默认的 powershell 是版本 5(打开 powershell 运行 Get-Host
命令可查看版本)。虽然默认的 powershell 相比 cmd 好很多了,但很多时候用起来还是不舒服,比如它并不支持 &&
操作符,而 powershell 7 则支持。
此外, powershell 7 还支持命令行历史记录和 ctrl + w
快捷键(用于删除距离光标最近的一个 word,自己试试就清楚了,效果等同于 shell 中的 esc
+ del
)
3(可选)自定义 prompt 样式
prompt 是命令行提示符,也就是光标前面的内容,比如 cmd 经典的
>
,shell 经典的$
都是 prompt 的一部分。
对于 pwsh(powershell),编辑 $Profile
文件可以生成自己喜欢的命令行提示符。
如果你有 vscode,并且将其添加到环境变量中,那么你可以直接通过 code $Profile
来编辑文件(不存在时自动创建)。否则,你可以按照参考下面的命令行来快捷打开/创建文件:
# 如果是初次编辑 Microsoft.PowerShell_profile.ps1 文件
# ,可以先创建文件(如果创建失败请尝试使用管理员模式):
> New-Item -Path $PROFILE -Type File -Force
# 然后打开该文件:
> explorer $Profile
# ---
# 如果上面代码不生效,则可以自己查看文件路径,然后手动创建/编辑
# 查看所在路径:
> echo $PROFILE
C:\Users\username\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
创建文件简单,但编辑文件就很难了,因为直接编辑 $Profile
来书写代码是工作量很大的一件事,对于不是该领域的开发人员来说是很麻烦的,所以这里我提供了一些有用的代码案例可供参考(内容来自 Github 笔记):
3.1 风格:换行 + 彩色 + 判断是否管理员
function prompt {
$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
$principal = [Security.Principal.WindowsPrincipal] $identity
$adminRole = [Security.Principal.WindowsBuiltInRole]::Administrator
$fullpath = (Get-Location) -replace "\\", "/"
if($principal.IsInRole($adminRole)) {
([System.Environment]::NewLine) + "[Admin] " + "$([char]0x1b)[92m" + "$fullpath" + "$([char]0x1b)[91m" + ([System.Environment]::NewLine) + "> "
} else {
([System.Environment]::NewLine) + "$([char]0x1b)[92m" + "$fullpath" + "$([char]0x1b)[91m" + ([System.Environment]::NewLine) + "> "
}
}
3.2 风格:显示当前所在 git 分支
function Write-BranchName () {
try {
$branch = git rev-parse --abbrev-ref HEAD
if ($branch -eq "HEAD") {
# we're probably in detached HEAD state, so print the SHA
$branch = git rev-parse --short HEAD
Write-Host " ($branch)" -ForegroundColor "red"
}
else {
# we're on an actual branch, so print it
Write-Host " ($branch)" -ForegroundColor "blue"
}
} catch {
# we'll end up here if we're in a newly initiated git repo
Write-Host " (no branches yet)" -ForegroundColor "yellow"
}
}
function prompt {
$base = "PS "
$path = "$($executionContext.SessionState.Path.CurrentLocation)"
$userPrompt = "$('>' * ($nestedPromptLevel + 1)) "
Write-Host "`n$base" -NoNewline
if (Test-Path .git) {
Write-Host $path -NoNewline -ForegroundColor "green"
Write-BranchName
}
else {
# we're not in a repo so don't bother displaying branch name/sha
Write-Host $path -ForegroundColor "green"
}
return $userPrompt
}
4(可选)借助 oh my posh 实现精美的 prompt 主题
安装步骤可参考 oh my posh 文档。文档已经非常清晰了,所以我这里只给出简洁版本的步骤
4.1. 安装 oh my posh
如果你有安装 winget
工具,可以直接运行下面命令
winget install JanDeDobbeleer.OhMyPosh -s winget
没有 winget 的话,可以进入该链接中进行安装。
不想安装 winget,可以直接通过 powershell 命令下载安装,命令如下:
Set-ExecutionPolicy Bypass -Scope Process -Force; Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://ohmyposh.dev/install.ps1'))
成功安装后如图所示:
如果你安装过程中闪退,则可能是因为网络问题(这个得你自己解决😉)。因为该命令的本质其实是在 Github 仓库 下载最新的安装程序进行安装的。
4.2. 安装字体
oh my posh 中很多主题都会用到一些 emoji,这些表情都是需要有对应字体才可以显示的,如果你发现一些图标是方形,那么就是因为找不到字体。
命令下面命令来安装字体:
> oh-my-posh font install --user
# 如果不带 --user 参数,则表示全局安装,则需要以管理员权限运行命令
安装后字体后,记得要在 window ternimal 中修改字体(如果你有使用 vscode 的话,还得在 vscode 中设置字体)。
4.3. 启用 oh my posh
启用前,需要确保你的
oh-my-posh
命令是存在的,不存在的话自行 google 一下何谓环境变量。
打开 $Profile
文件,添加以下内容
oh-my-posh init pwsh | Invoke-Expression
保存退出,重新打开终端就可以看到效果了
4.4 主题
运行 Get-PoshThemes
命令可以查看所有可用主题:
选择一个你喜欢的主题,比如 agnoster
,然后运行下面命令即可临时替换主题
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\agnoster.omp.json" | Invoke-Expression
如果喜欢,那么就可以通过以下命令永久替换主题(运行后打开新窗口即可)
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/agnoster.omp.json" > $profile
甚至你可以选择自定义主题,但这就是一个“兔子洞”了(点击查看我的主题参考),反正我最终因为速度问题弃用了 oh my posh ……