前言
部分开发者可能习惯用 PowerShell,但我习惯直接在 WSL 中做复杂脚本的开发。
PowerShell 官方指南: PowerShell 文档 - PowerShell | Microsoft Docs
目前默认是 5.x 版本,可以手动安装最新的 7.x。
官方文档:Windows 终端自定义提示符设置 | Microsoft Docs
PowerShell 美化
PowerShell 是微软的 shell 程序,比 cmd 先进,内置在 Windows 10 内的版本是 5.0,但是现在已经有全新的 PowerShell Core 7.0 可供下载安装了,个人建议下载一个,毕竟后面那个跨平台()但是不下也可以,不妨碍后面的教程:
因为苹果 zsh 的终端有各种花里胡哨的东西,所以 PowerShell 也想变漂亮;在 zsh 中有一个比较厉害的插件叫做 oh-my-zsh,所以到 PowerShell 这里来就整了一个差不多的 oh-my-posh,也可以美化 PowerShell;
因为 Windows Terminal + PowerShell Core + oh my posh 已经被微软官方认定为最佳组合了,所以官方也整了一个教程教你怎么使用这个玩意了,所以可以直接去看
安装 Powerline 字体
安装 oh my posh
Oh-My-Posh 为 PowerShell 提供主题了功能。
官方有安装文档:Windows | Oh My Posh
下载安装 oh-my-posh
winget install oh-my-posh --source winget
这将安装一个应用程序 oh-my-posh.exe
编辑相应配置文件
官方文档 Change your prompt | Oh My Posh
1. 在 Windows Terminal 中敲下下面两行命令
- 第一条(确保先创建配置文件)
New-Item -Path $PROFILE -Type File -Force
- 第二条(使用记事本打开配置文件)它的作用和 Linux 中的
~/.bashrc
相似;
notepad $PROFILE
2. 在打开的记事本中写入如下内容(脚本文件),并保存
# 导入oh-my-posh oh-my-posh init pwsh | Invoke-Expression
- 命令表示导入 oh-my-posh
更改后,请重新加载配置文件以使更改生效。
. $PROFILE
更新 oh-my-posh
winget upgrade oh-my-posh
自定义主题
oh-my-posh 提供了一些预留主题,查看 Themes | Oh My Posh。
以 agnosterplus 主题为例,想要更改主题:
notepad $PROFILE
根据官方文档 Windows | Oh My Posh 所说,应当这样更改:
- 这里的
$env:POSH_THEMES_PATH
指向 oh-my-posh 的预置主题目录
更改原本的 init
行,更改主题为 agnosterplus
# 导入oh-my-posh 并且应用agnosterplus主题
oh-my-posh init pwsh –config “$env:POSH_THEMES_PATH\agnosterplus.omp.json” | Invoke-Expression
更改后,请重新加载配置文件以使更改生效。
. $PROFILE
- 如果你没有使用 PowerLine 字体,使用经典主题
robbyrussell
也不会出现乱码方块问题。
配置完后,每次打开 Windows Terminal 中的 Power shell 都会执行配置文件中的命令。
预留主题
如果不是很喜欢默认主题,可以自行选择主题样式。
oh-my-posh 提供了一些预留主题,查看 Themes | Oh My Posh。
也可以使用以下命令来查看所有主题以及主题的名称
Get-PoshThemes
找到喜欢的主题后,可以在之前的脚本文件中将主题名称替换为你想要主题的名称。
-
注意:此处获取主题在 oh-my-posh2 的命令为:
Get-Theme
这时,你会发现出现了一些方框,效果并不像图片上那么好。那是因为,还没有给主题安装适应的字体。
安装 posh-git
posh-git 是一个 PowerShell 模块,它通过提供可在 PowerShell 提示符中显示的 Git 状态摘要信息来集成 Git 和 PowerShell,
Posh-Git 提供了 Git 状态信息的提示,并为 Git 命令、参数、远程和分支名称等添加 tab 自动补全;
首先,你得安装 git,git - 安装 - 配置
在 Windows 上,脚本执行策略必须设置为 RemoteSigned
或 Unrestricted
。通过执行 Get-ExecutionPolicy
来检查脚本执行策略设置。
如果策略未设置为两个必需值之一,请以管理员身份运行 PowerShell 并执行 。
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Confirm
congPowerShell 提示符执行以下两个命令之一,具体取决于(A) 你从未安装过 posh-git,还是 (B) 你已经安装了以前的版本:
(A) 你从未安装过 posh-git
# (A) You've never installed posh-git from the PowerShell Gallery PowerShellGet\Install-Module posh-git -Scope CurrentUser -Force
注意:如果系统要求你信任 PowerShell 库中的程序包,请回答以继续安装 posh-git
yes
或(B) 你已经安装了以前的版本:
# (B) You've already installed a previous version of posh-git from the PowerShell Gallery PowerShellGet\Update-Module posh-git
编辑相应配置文件
官方文档 dahlbyk/posh-git: A PowerShell environment for Git (github.com)
1. 在 Windows Terminal 中敲下下面两行命令
- 第一条(启动编辑 power shell 配置文件的引擎)
if (!(Test-Path -Path $PROFILE )) { New-Item -Type File -Path $PROFILE -Force }
- 第二条(使用记事本打开配置文件)它的作用和 Linux 中的
~/.bashrc
相似;
notepad $PROFILE
2. 在打开的记事本中写入如下内容(脚本文件),并保存
# 导入posh-git Import-Module posh-git
- 命令表示导入 posh-git
然后使用命令让配置文件生效
更改后,请重新加载配置文件以使更改生效。
. $PROFILE
安装 Nerd Fonts 字体并应用
1. 安装字体
2. 使用字体
创建 linux style 的命令 alias
官方已经提供了一些兼容性别名 - PowerShell | 微软文档 (microsoft.com)
方式 1 – 通用别名创建函数
自己可以增加一个创建别名的函数:django - 相当于 PowerShell 中的 Bash 别名 - Stack Overflow
一般通过创建函数(New-Item Function)
的方式来创建 Alias,而不是使用官方的 Set-Alias
命令,详情见:关于函数提供程序 - PowerShell | Microsoft Docs
在 $profile
中添加
notepad $PROFILE
function New-BashStyleAlias([string]$name, [string]$command) { $sb = [scriptblock]::Create($command) New-Item "Function:\global:$name" -Value $sb | Out-Null }
调用示例如下
New-BashStyleAlias django-admin-jy 'jython.exe /path/to/jython-dev/dist/bin/django-admin.py @args'
官方已经有了 ls
的别名,但还没有 la``ll
New-BashStyleAlias la ls New-BashStyleAlias ll ls
实际上通过创建函数(New-Item Function)
的方式来创建别名 Alias,将不能进行 tab 自动补全,详情见:关于函数提供程序 - PowerShell | Microsoft Docs
通过这种方式创建的别名,要删除,使用命令
Remove-Item Function:<Function name>
例如删除 ll
别名
Remove-Item Function:ll
获取所有的函数
Get-ChildItem -Path Function:
方式 2 – 定义一个函数
另外一种方式是定义一个_函数_,这样可以自动完成参数名称(在 -
之后按 tab 键),缺点是你要为每个 alias 都编写一个函数
function django-admin-jy { jython.exe /path/to/jython-dev/dist/bin/django-admin.py @args }
方式 3 – 官方的 Set-Alias
等命令
也可以通过官方的方式(Set-Alias
等)来创建 alias
要注意的是,PowerShell 别名(Set-Alias
等命令)不允许使用参数
,它们只能引用命令名称
,所以这种方法不能写出通用的创建函数
命令名称
可以是 cmdlet
或函数的名称
,也可以是脚本或可执行文件的名称/路径
。
阅读文档
- about Aliases - PowerShell | Microsoft Docs
- Set-Alias (Microsoft.PowerShell.Utility) - PowerShell | Microsoft Docs
首先设置一个保存别名的文件
在配置文件所在的目录创建一个新的配置文件 profile.ps1
notepad $((Split-Path $profile -Parent) + "\profile.ps1")
在其中写入一些 alias
Set-Alias -Name la -Value ls Set-Alias -Name ll -Value ls
这个新的配置文件将在 powershell 加载时加载
以后想要修改,可以
notepad $((Split-Path $profile -Parent) + "\profile.ps1")
其实际保存在 Documents\PowerShell\profile.ps1
,Documents
是你系统的文档文件夹的路径