在Windows Terminal中配置好看、好用的PowerShell

折腾历程

接触Linux后逐渐依赖上了命令行操作,平时回到win下也常用终端。之前用了快一年Cmder,它能用一些常用的Linux命令,于是win下觉得最好没有之一,windows terminal出来后看到里面的powershell也是不以为然,还迷之自信给老师安利Cmder,结果自然是衩反推荐wt。因为不会用powershell,又觉得wt界面真比cmder好看,我Google了一下硬是把cmder给塞进wt里面了,这样又用了半年wt+cmder,缺点是启动慢,ctrl+c终止执行经常刷不出来新的提示符,而且使用上下方向键移动历史命令时经常多一个字符,还有一些迷之bug。前段时间折腾下hexo,算是第一次认真搞了下BLOG,初期生成文章以及修改主题、插件而频繁用命令行时,上面方案的缺点被无限放大,实在难以忍受,偶然开了个新的powershell窗口,看到它秒加载(后来证明是啥都没装的原因),决定转向powershell了。

升级PowerShell

Win10自带了Powershell,本来对于入门是无所谓的,但折腾hexo我经常用&&, 却发现powershell居然不支持这个,Google查到新的ps已经支持了,于是强迫症决定升级。

最新的官方文档 介绍了如何在启用所有安装选项的情况下无提示安装 PowerShell。

1
msiexec.exe /package PowerShell-7.1.3-win-x64.msi /quiet ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL=1 ENABLE_PSREMOTING=1 REGISTER_MANIFEST=1

安装字体

这里使用Fira Code https://github.com/tonsky/FiraCode/releases/download/3.1/FiraCode_3.1.zip

换字体解决乱码,而且总体这个字体挺好看的。只是&的样子不太习惯

配置到Windows Terminal

wt内置的是老powershell,搜索新的替换并修改样式,我的是C:\Program Files\PowerShell\7\pwsh.exe

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
// Make changes here to the powershell.exe profile.
"guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"name": "Windows PowerShell",
"commandline": "C:/Program Files/PowerShell/7/pwsh.exe -nologo",
"colorScheme": "Andromeda",
"startingDirectory": "./",
"hidden": false,
"fontFace": "Fira Code",
"fontSize": 11,
"historySize": 9001,
"padding": "15",
"snapOnInput": true,
"useAcrylic": true,
"acrylicOpacity": 0.5,
},
  • colorScheme涉及windows terminal配置,参见官网文档,我完整的WT配置在这里

  • 一定加-nologo,不然初始化终端上有段话很烦人

  • uuid只作标识,使用在线工具生成即可。

  • 添加wt至右键菜单: https://www.zhihu.com/question/325948326

安装插件

打开powershell7 (pwsh) 安装插件:

1
2
3
4
5
6
7
8
9
10
11
# 1. 安装 PSReadline 包,该插件可以让命令行很好用,类似 zsh
Install-Module -Name PSReadLine -AllowPrerelease -Force

# 2. 安装 posh-git 包,让你的 git 更好用
Install-Module posh-git -Scope CurrentUser

# 3. 安装 oh-my-posh 包,让你的命令行更酷炫、优雅
Install-Module oh-my-posh -Scope CurrentUser -RequiredVersion 2.0.496

# 4. 安装DirColors 包,让ls显示颜色
Install-Module DirColors -Scope CurrentUser

image-20210706220921630

看到这篇文章,决定还是装oh-my-posh的2.x版本了。

未测试安装过程是否需要魔法,默认都开。

配置PowerShell Profile

类似.zshrc,加载pwsh启动参数

1
notepad $Profile

我的配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Import-Module posh-git # 引入 posh-git
Import-Module oh-my-posh # 引入 oh-my-posh
Import-Module DirColors # 引入 DirColors

Set-Theme Paradox # 设置主题为 Paradox

Set-PSReadLineOption -PredictionSource History # 设置预测文本来源为历史记录
Set-PSReadlineKeyHandler -Key Tab -Function Complete # 设置 Tab 键补全
Set-PSReadLineKeyHandler -Key "Ctrl+d" -Function MenuComplete # 设置 Ctrl+d 为菜单补全和 Intellisense
Set-PSReadLineKeyHandler -Key "Ctrl+z" -Function Undo # 设置 Ctrl+z 为撤销
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward # 设置向上键为后向搜索历史记录
Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward # 设置向下键为前向搜索历史纪录

function ListDirectory {
ls | Format-Wide -Column 3
}
function cdDesktop {
cd ~/Desktop
}
function cdBlog {
cd H:\programming\blog\blog
}
Set-Alias -Name l -Value ListDirectory
Set-Alias -Name ll -Value Get-ChildItem
Set-Alias -Name cdd -Value cdDesktop
Set-Alias -Name cblog -Value cdBlog

alias l 定义后终于满足我用ls的需求,舒服了, 使用column将结果分的列数,使用DirColors上色。

上面的插件还实现了Tab选择补全,历史搜索,git状态显示

最终结果

用的是之前cmder收进terminal的配色主题,蓝色在背景半透明时有点淡,不过懒得弄了。

image-20210706223913168

不过这下启动又变慢了,但各方面比Cmder方案好了太多。

PowerShell 入门

这里写得很好:

终端其他的一些折腾

  • 在windows下使用sudo

    安装gsudo

  • vscode 替换终端为pwsh7

    image-20210707001544766

参考