powershell美化
上一级页面:index-windows
前言
部分开发者可能习惯用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
1 | winget install oh-my-posh --source winget |
这将安装一个应用程序oh-my-posh.exe
编辑相应配置文件
官方文档Change your prompt | Oh My Posh
1.在Windows Terminal中敲下下面两行命令
- 第一条(确保先创建配置文件)
1 | New-Item -Path $PROFILE -Type File -Force |
- 第二条(使用记事本打开配置文件)它的作用和 Linux 中的
~/.bashrc
相似;
1 | notepad $PROFILE |
2.在打开的记事本中写入如下内容(脚本文件),并保存
1 |
|
- 命令表示导入oh-my-posh
更改后,请重新加载配置文件以使更改生效。
1 | . $PROFILE |
更新oh-my-posh
1 | winget upgrade oh-my-posh |
自定义主题
oh-my-posh提供了一些预留主题,查看Themes | Oh My Posh。
以agnosterplus主题为例,想要更改主题:
1 | notepad $PROFILE |
根据官方文档Windows | Oh My Posh所说,应当这样更改:
- 这里的
$env:POSH_THEMES_PATH
指向oh-my-posh的预置主题目录
更改原本的init
行,更改主题为agnosterplus
1 | 导入oh-my-posh 并且应用agnosterplus主题 |
更改后,请重新加载配置文件以使更改生效。
1 | . $PROFILE |
- 如果你没有使用 PowerLine 字体,使用经典主题
robbyrussell
也不会出现乱码方块问题。
配置完后,每次打开Windows Terminal中的Power shell都会执行配置文件中的命令。
预留主题
如果不是很喜欢默认主题,可以自行选择主题样式。
oh-my-posh提供了一些预留主题,查看Themes | Oh My Posh。
也可以使用以下命令来查看所有主题以及主题的名称
1 | Get-PoshThemes |
找到喜欢的主题后,可以在之前的脚本文件中将主题名称替换为你想要主题的名称。
-
注意:此处获取主题在oh-my-posh2的命令为:
1
Get-Theme
这时,你会发现出现了一些方框,效果并不像图片上那么好。那是因为,还没有给主题安装适应的字体。
安装posh-git
posh-git 是一个 PowerShell 模块,它通过提供可在 PowerShell 提示符中显示的 Git 状态摘要信息来集成 Git 和 PowerShell,
Posh-Git 提供了 Git 状态信息的提示,并为 Git 命令、参数、远程和分支名称等添加 tab 自动补全;
首先,你得安装git,git-安装-配置
在 Windows 上,脚本执行策略必须设置为 RemoteSigned
或 Unrestricted
。通过执行Get-ExecutionPolicy
来检查脚本执行策略设置。
如果策略未设置为两个必需值之一,请以管理员身份运行 PowerShell 并执行 。
1 | Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Confirm |
congPowerShell 提示符执行以下两个命令之一,具体取决于(A) 你从未安装过 posh-git,还是 (B) 你已经安装了以前的版本:
(A) 你从未安装过 posh-git
1 | # (A) You've never installed posh-git from the PowerShell Gallery |
注意:如果系统要求你信任 PowerShell 库中的程序包,请回答以继续安装 posh-git
yes
或(B) 你已经安装了以前的版本:
1 | # (B) You've already installed a previous version of posh-git from the PowerShell Gallery |
编辑相应配置文件
官方文档dahlbyk/posh-git: A PowerShell environment for Git (github.com)
1.在Windows Terminal中敲下下面两行命令
- 第一条(启动编辑power shell配置文件的引擎)
1 | if (!(Test-Path -Path $PROFILE )) { New-Item -Type File -Path $PROFILE -Force } |
- 第二条(使用记事本打开配置文件)它的作用和 Linux 中的
~/.bashrc
相似;
1 | notepad $PROFILE |
2.在打开的记事本中写入如下内容(脚本文件),并保存
1 | # 导入posh-git |
- 命令表示导入posh-git
然后使用命令让配置文件生效
更改后,请重新加载配置文件以使更改生效。
1 | . $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
中添加
1 | notepad $PROFILE |
1 | function New-BashStyleAlias([string]$name, [string]$command) |
调用示例如下
1 | New-BashStyleAlias django-admin-jy 'jython.exe /path/to/jython-dev/dist/bin/django-admin.py @args' |
官方已经有了ls
的别名,但还没有la``ll
1 | New-BashStyleAlias la ls |
实际上通过创建函数(New-Item Function)
的方式来创建别名Alias,将不能进行tab自动补全,详情见:关于函数提供程序 - PowerShell | Microsoft Docs
通过这种方式创建的别名,要删除,使用命令
1 | Remove-Item Function:<Function name> |
例如删除ll
别名
1 | Remove-Item Function:ll |
获取所有的函数
1 | Get-ChildItem -Path Function: |
方式2 – 定义一个函数
另外一种方式是定义一个_函数_,这样可以自动完成参数名称(在 -
之后按 tab 键),缺点是你要为每个alias都编写一个函数
1 | function django-admin-jy { |
方式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
1 | notepad $((Split-Path $profile -Parent) + "\profile.ps1") |
在其中写入一些alias
1 | Set-Alias -Name la -Value ls |
这个新的配置文件将在powershell加载时加载
以后想要修改,可以
1 | notepad $((Split-Path $profile -Parent) + "\profile.ps1") |
其实际保存在Documents\PowerShell\profile.ps1
,Documents
是你系统的文档文件夹的路径
通过这种方式创建的别名,要获取所有别名
1 | Get-Alias |
参考、引用、致谢
在 Windows 10 中使用 zsh 作为默认终端 - 七海の参考書 (shiraha.cn)
How to create PowerShell alias permanently? (tutorialspoint.com)