近期换了Win11,发现现在Win下的powershell也可以像macOS的zsh那样,配合iterm2做一番美化,网上搜了很多文章,但是大部分都比较老旧,已经不符合现在版本的安装方式,所以跟着官方文档一步一步走,发现步骤非常简单,并不如网上说的那么复杂,便有此一记。
1. 环境说明
- Windows11专业版 22H2
- 安装vscode,并且配置了环境变量,可以使用code来打开vscode
2. 安装oh-my-posh
winget install JanDeDobbeleer.OhMyPosh -s winget
winget在Windows11中默认就有了,也挺好用,没不要在单独安装sqoop(和macOS上的brew类似)之类的工具。
参考文档:PowerShell module | Oh My Posh
3. 配置oh-my-posh
code $Profile
填入如下内容:
oh-my-posh init pwsh | Invoke-Expression
重启PowerShell。
此时会打开一个默认主题的Shell,并且有大量的乱码。
4. 下载字体
配置过oh-my-zsh的都知道,此时需要一些名为powerline的字体文件才可以正确显示,我试过使用sqoop下载字体,或者手动下载字体包去安装,经常会遇到打开power shell的时候,提示字体文件未找到的问题。但是通过如下方式下载并安装字体就再也不会出现这个问题。
oh-my-posh font install
选择JetBrainsMono
,等待下载即可。喜欢其他的请自行选择
下载完成后这些乱码就消失了。
5. 安装插件
插件可以使oh-my-posh和power shell更为强大,这里只需要安装如下几个插件即可。
# Git插件
Install-Module posh-git -Scope CurrentUser
# 自动补全
Install-Module -Name PSReadLine -Scope CurrentUser -Force
# 给目录加图标
Install-Module -Name Terminal-Icons -Repository PSGallery
# 给目录加颜色
Install-Module DirColors
然后编辑$Profile
code $Profile
添加如下信息:
Import-Module DirColors
Import-Module -Name Terminal-Icons
Import-Module posh-git
Import-Module PSReadLine
然后重启PowerShell。
6. 更换主题
觉得默认主题不好看?那就换一个,执行如下命令,可预览主题
Get-PoshThemes
看到中意的主题,继续修改配置文件,只需替换`主题名.omp.json`就行,实际情况根据你得路径来设置。
最终配置如下:
code $Profile
# oh-my-posh init pwsh | Invoke-Expression
oh-my-posh init pwsh --config 'C:\Users\liyan\AppData\Local\Programs\oh-my-posh\themes\unicorn.omp.json' | Invoke-Expression
Import-Module DirColors
Import-Module -Name Terminal-Icons
Import-Module posh-git
Import-Module PSReadLine
unicorn
就是我们选中的主题名。
7. 效果图
优点是界面更好看了,缺点嘛,第一次打开power shell会很慢,如图中所示,加载配置使用了3356毫秒。
8. 配置代理
对于有代理需求的,可以在PowerShell中新增配置如下:
# 配置代理
function set_proxy_variable {
$proxy = 'http://127.0.0.1:1080'
# temporary
$env:HTTP_PROXY = $proxy
$env:HTTPS_PROXY = $proxy
# forever
# [System.Environment]::SetEnvironmentVariable("HTTP_PROXY", $proxy, "User")
# [System.Environment]::SetEnvironmentVariable("HTTPS_PROXY", $proxy, "User")
Write-Host "`n OPEN powershell proxy channel!`n"
}
function unset_proxy_variable {
# temporary
Remove-Item env:HTTP_PROXY
Remove-Item env:HTTPS_PROXY
# forever
# [Environment]::SetEnvironmentVariable('http_proxy', $null, 'User')
# [Environment]::SetEnvironmentVariable('https_proxy', $null, 'User')
Write-Host "`n CLOSE powershell proxy channel!`n"
}
Set-Alias proxy set_proxy_variable
Set-Alias unproxy unset_proxy_variable
配置完成后,重新打开PowerShell,输入proxy即可开启代理,输入unproxy即可关闭代理。
推荐大家升级到PowerShell 7 。
winget install --id Microsoft.Powershell --source winget