powershell beautify
先从PowerShell说起
Windows自带的Windows PowerShell一般为PowerShell 5, 相比于最新的PowerShell 7有着比较多的差异。
本文后续的所有美化与功能加强都将基于PowerShell 7。建议在Github-PowerShell下载PowerShell 7+版本,即pwsh
。注意,pwsh与原生Windows PowerShell为两个独立终端,pwsh做的工作并不会生效在Windows PowerShell上。
Windows Terminal
新版pwsh的界面依然不是很耐看,其自带的风格定义十分有限。且pwsh只是一个独立终端,不能满足多终端协同工作。Windows Terminal能集成PowerShell、Git Bash、Azure、WSL等终端,并且能定义界面背景、字体颜色等等。其依然可以在Github-terminal中下载,微软商城也能下载,但速度很慢。
新增终端pwsh
ctrl+,
打开Windos Terminal的设置,新增配置文件,填入pwsh的路径
Scoop
Scoop是一款适用于WIndows平台的命令行软件包管理工具,满足用户对软件包的安装管理需求。其作用可类比于macOS的homebrew、Linux的apt-get、python的pip等工具。
为什么Scoop
本章的Scoop主要用于安装oh-my-posh(终端主题)和各种unix工具。针对oh-my-posh而言,主流教程都是通过Install-Module oh-my-posh
来安装,但经过笔者试验会报错
Install-Package: No match was found for the specified search criteria and module name ‘oh-my-posh’. Try Get-PSRepository to see all available registered module repositories.
这是因为PSRepository没被注册,自然无法找到需要安装的模块。但如果尝试Register-PSRepository -Default
,或指定安装PSGallery,或改变管理端口,warning-unable-to-find-module-repositories。发现都无法生效时,建议使用Scoop安装。
安装Scoop
设置Powershell执行策略
1 |
|
安装Scoop
1 |
|
该命令默认安装至C盘,如需要更改目录,则在执行上述命令前添加环境变量定义:
1 |
|
安装oh-my-posh
1 |
|
Oh-my-posh
Oh-my-posh作为一款终端Prompt个性化工具,衍生于Oh-my-zsh。如今除Windows外,Oh-my-posh还支持了WSL,macOS系统上的各式终端。Oh-my-posh预置了几十款主题,风格各异,通过Get-PoshThemes
可以预览所有预置主题:
在输出的尾部可以看到Themes的储存位置,用户还可以在官网主题下载主题并放置于此。
安装主题
1 |
|
其中–config跟随的是目标主题的配置文件路径,如需要更换主题则修改路径即可
安装Nerd Font字体
有些主题的完整显示需要一些特殊字符或图标,否则表现成一个个方框。这里推荐安装Nerd Font,同样的如果无法访问就前往Github-NerdFonts下载
下载好的字体包,右键为所有用户安装
即可安装字体,以AurulentSansM Nerd Font
为例,在设置-个性化-字体 中可以找到安装的字体:
打开Windoes Terminal的配置文件
找profile.defaults并修改font内容,注意face内容不是字体的元数据里的全称:
1 |
|
至此,重启Windows Terminal就能看到完整的主题了。
集成git bash
如果想像git bash一样,支持显示当前分支名等功能,可以尝试scoop install posh-git
安装。具体步骤笔者没有亲试,感兴趣者可以通过关键词posh-git自行搜索相关流程。
Unix工具链
如果你是Linux用户,开始使用Windows时会十分不适应,主要因为Windows缺少很多实用工具如vim,cat,grep,甚至是ls的功能都不全!!!
当然,在Windows里是有些命令能对应到Linux,比如Get-ChildItem,但相比下并不好用。
安装busybox
busybox中涵盖了大多常用的Linux命令,包括awk、clear、tail、sed等等。通过scoop install busybox
安装。之后通过busybox --list
可以查看其支持的命令。
定向查找
对于busybox没有涵盖的命令或功能不全的命令,如zip。可以通过scoop search unzip
查看提供该功能的工具包,选择一个即可安装。
注意,新安装的工具包内如果有命令与其他工具包的命令重名,新工具包的命令会取代现有命令。
自动补全与历史显示
Linux除了常用的命令外,TAB键的自动补全功能也能有效提高工作效率,尤其是在进入层层目录的时候。
通过命令Set-PSReadlineKeyHandler -Key Tab -Function Complete
可以加上该功能,挑选目录时也可以通过方向键选择。
此外,根据历史命令预测本次命令的功能也能极大改善使用体验。这里我只需要输入cd,终端就能根据最近的历史命令向我提供补全提示,按下右方向键即可补全完整命令了:
通过命令Set-PSReadLineOption -PredictionSource History -ShowToolTips
可以加上该功能。
其他选用工具
1 |
|
配置自启动
以上功能包括oh-my-posh主题、自动补全等在新建pwsh窗口时都会失效,因为命令行方式启动只会作用于当前窗口。为了保证每一新建窗口都应用上配置的功能,我们需要改动pwsh的启动配置文件(.ps1文件)
在pwsh上执行$PROFILE
可以看到pwsh的启动文件位置。注意,该文件有可能不存在,这是正常的,我们只需要照着路径创建该文件即可:touch $PROFILE
。打开该文件,将需要的预命令写入:
1 |
|
至此,一套改装完的,崭新的Windows终端就完全配置好了。相信它能够满足你的日常使用。
集成VsCode
笔者习惯使用VsCode作为日常的IDE,当然VsCode也需要同样集成pwsh。
更改默认终端
打开VsCode的用户setting.json(ctrl+shift+P,再输入user setting json
关键字)。在terminal.integrated.profiles.windows
中新增pwsh的路径:
1 |
|
同时设置"terminal.integrated.defaultProfile.windows": "pwsh"
设置Nerd Font字体
笔者实践时发现VsCode终端的字体与pwsh并不同步,需要单独设置。同样在用户setting.json中,添加以下两行:
1 |
|
其他改善
自定义命令
pwsh的启动配置文件提供了function块,我们可以据此实现一些自定义的命令。比如busybox提供的ls命令功能十分有限,既不能高亮输出,也不能简略输出内容。在启动配置文件中添加:
1 |
|
可以通过ll来模拟bash中的ls命令,效果如下:
自定义高亮颜色
Set-PSReadLineOption -Colors
可以自定义命令行各个部分的颜色,色值既可以使用ANSI escape code也可以使用16色值。推荐网站中国色
微软提供以下一些可自定义颜色的选项,主要关注Command、Selection、inlinePrediction即可。以下为笔者使用的,可供参考:
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!