Windows Terminal美化(配置Powershell7+PSReadLine+oh-my-posh)
本文最后更新于:2020年9月20日 下午
好看是第一生产力。 — 鲁迅
最终效果如封面。
Windows Terminal基础配置
Scoop安装
Scoop是一款Windows下的包管理器,不是必须安装的,但是之后的部分配置我是用Scoop下载的。
Scoop的安装:
$ set-executionpolicy remotesigned -scope currentuser
$ iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
# 测试是否安装成功:
scoop help
Scoop快速入门
以安装Python为例:
- 搜索软件包(会在你现在安装的仓库里搜索):
scoop search python
- 安装:
scoop install python
(可以先使用scoop info python
查看当前软件的详细信息看是不是你需要的) - 提示安装成功后,可以通过
scoop list
查看当前安装的软件 - 卸载:
scoop uninstall python
- 更新:
scoop update python
(可以先通过scoop status
查看当前是否有可更新的软件)。也可以使用命令scoop update *
直接更新所有软件包括scoop自身。 - 清理历史版本软件包与缓存:
scoop cleanup *
。scoop更新软件后不会自动卸载旧版本的软件包,需要手动cleanup来清理。
Scoop安装的软件存放路径:C:\Users\用户名\scoop
添加仓库
Scoop自带的官方仓库main的软件比较少,不太能满足我们的需求,但是它有一个bucket软件源策略,而且有社区来维护,常用软件基本能够找到。
bucket官方维护源包括:(输入命令 scoop bucket known
可以查看)
scoop bucket add main # 默认
scoop bucket add extras # 推荐
scoop bucket add versions # 收录软件包的历史版本
scoop bucket add nightlies
scoop bucket add nirsoft
scoop bucket add php
scoop bucket add nerd-fonts # 编程字体
scoop bucket add nonportable
scoop bucket add java
scoop bucket add games
scoop bucket add jetbrains # 推荐
也可以添加第三方的,语法格式为:scoop bucket add [仓库名] [仓库地址]
例如添加一个包括一些国内常用应用(微信、QQ、网易云音乐)的第三方库:scoop bucket add dorado https://github.com/chawyehsu/dorado
移除仓库:scoop rm php
Scoop命令不完全指北
scoop help
获取命令帮助列表scoop install 软件名
安装scoop install 软件名@3.7.6
安装指定版本scoop install extras/sumatrapdf
安装指定仓库内版本scoop update 软件名
更新scoop update *
更新Scoop、所有安装的软件scoop cleanup *
清理历史版本软件包与缓存scoop uninstall 软件名
卸载scoop reset 软件名
版本切换scoop depends 软件名
查看软件的依赖scoop hold 软件名
禁止软件更新scoop unhold 软件名
启动软件更新scoop home 软件名
打开软件主页scoop info 软件名
显示软件信息scoop list
列出所有已安装软件scoop prefix 软件名
查看软件路径scoop reset 软件名
恢复软件版本scoop search 软件名
搜索软件scoop status 软件名
查看软件更新状态
gsudo安装
gsudo解决了管理员权限问题,不需要再单独打开管理员权限的Powershell窗口。
安装:scoop install gsudo
使用:在需要使用的命令前添加 gsudo
即可。(或者只输入命令gsudo
,则直接进入管理员模式)
下载
Windows Terminal下载:
- 方式一:Windows Terminal下载
- 方式二:直接在 Microsoft Store 搜索下载
- 方式三:使用 Scoop 安装(通过 @h404bi 维护的第三方 bucket)
scoop bucket add dorado https://github.com/h404bi/dorado scoop install windowsterminal
WT配置自定义
打开配置文件:
自定义全局属性
位于配置文件最开始的位置,可修改的全部属性参考:全局设置
我修改的配置:
- Terminal 亮暗主题:
"theme": "dark"
自定义环境入口(添加新Shell)
Windows Terminal 下拉菜单中可选择的环境是能自由配置的,其中每个环境有可以单独设置字体,初始目录,配色方案,背景等等。
环境的配置位于profiles[]
中:
一个典型的环境配置包括(以我配置的PowerShell7为例):
{
// 下拉菜单中显示的名字
"name": "PowerShell7",
// 下拉菜单中显示的icon
// 路径的语法格式可以用:
// 1. ms-appdata:///roaming/{图片路径}
// 2. 直接填图片路径
"icon": "ms-appdata:///roaming/E:\\保存图片\\icon\\cloudshell.png",
// 标识符,直接在PowerShell中输入命令 new-guid 就可以得到一个新的GUID
// 如果guid设置为和全局属性的"defaultProfile"一样的话,打开 WT 就会默认为这个环
"guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
// 唤起环境时执行这一命令,我这里加了个参数不输出启动日志信息
"commandline": "path\\pwsh.exe -nologo",
// 唤起环境时所处的起始目录
"startingDirectory": "path\\...",
"cursorColor": "#fa9395", // 光标的颜色
"cursorShape": "vintage", // 光标的形状。包括:bar、empytBox、filledBox、vintage
"colorScheme": "Chalkboard", // 配色方案,除了几个默认的还可以在下面的"schemes": []中定义
"background": "#2a2a2a", // 背景色
"useAcrylic": true, // 是否开启毛玻璃特效
"acrylicOpacity": 0.3, // 毛玻璃特效的不透明度
"backgroundImage": "path\\IMG_111.jpg", // 背景图片
"backgroundImageOpacity": 0.5 // 背景图片的不透明度
}
更多详细配置参考:配置文件设置
添加自定义配色方案
一个可以预览Windows Terminal主题并一键复制json文件的网站:Windows Terminal Themes
点击下面的Get theme
即将json文件复制到剪切板。e.g.
{
"name": "Andromeda",
"black": "#000000",
"red": "#cd3131",
"green": "#05bc79",
"yellow": "#e5e512",
"blue": "#2472c8",
"purple": "#bc3fbc",
"cyan": "#0fa8cd",
"white": "#e5e5e5",
"brightBlack": "#666666", //命令行参数
"brightRed": "#cd3131", //错误信息
"brightGreen": "#05bc79",
"brightYellow": "#e5e512", //命令
"brightBlue": "#2472c8",
"brightPurple": "#bc3fbc",
"brightCyan": "#0fa8cd",
"brightWhite": "#e5e5e5",
"background": "#262a33",
"foreground": "#e5e5e5"
}
我标识了几个颜色代表的参数,都不喜欢也可以自己DIY。
自定义快捷键
在"keybindings": []
进行设置。默认的包括:
Ctrl
+Shift
+F
:全局查找Ctrl
+Shift
+T
:打开新标签页Ctrl
+Shift
+1/2/3...
:进入配置文件中定义的第一/二/三/…个环境Ctrl
+Tab
:前一个标签页Ctrl
+Shift
+Tab
:后一个标签页Alt
+Shift
+-
:横向分屏Alt
+Shift
++
:纵向分屏Ctrl
++
:放大Ctrl
+-
:缩小Ctrl
+0
:恢复默认缩放比例
更多详细配置参考:自定义键绑定
其他配置
oh-my-posh安装和配置
打开管理员权限的Powershell窗口(安装了gsudo的可以在命令前面直接加上gsudo
):
Install-Module posh-git # 如果你的电脑里没有安装Git,输入这行会报错,解决方法是安装Git或者把这一行去掉。
Install-Module oh-my-posh
Set-Theme Agnoster # 这个是设置主题,你也可以选其他的,通过命令Get-Theme命令来查看其他主题
上面的导入只对当前窗口有效,所以需要将其添加到配置文件中:
$ if (!(Test-Path -Path $PROFILE )) { New-Item -Type File -Path $PROFILE -Force } notepad $PROFILE
# 该命令打开默认 PowerShell 的启动配置文件(如果没有就创建),notepad表示用记事本打开,如果你安装了vscode,也可以替换成 code
# 已经存在启动配置文件的话可以直接用命令 notepad/code $PROFILE 打开
然后把前面三行内容复制到 Microsoft.PowerShell_profile.ps1 文件中。
重新打开窗口或者输入命令.$Profile
让配置文件生效。
oh-my-posh只支持部分字体,可以使用我目前用的这款:Fira Code
隐藏主机名
个人觉得命令行前面显示的一长串太难看了。
找到oh-my-posh的主题文件夹。
- 如果你安装有everything可以直接搜索Agnoster或者任意主题名字试试。
- 没有的话应该在这个路径下:
C:\Users\你的用户名\Documents\PowerShell\Modules\oh-my-posh\2.0.465\Themes
打开对应主题的.psm1文件,比如我使用的 Agnoster.psm1,搜索
$user@$computer
定位到如下内容,直接将整个 if语句 注释掉。
PSReadLine安装和配置
PSReadLine 是一个由微软发布的用于 PowerShell 的行读取实现,提供了以下功能:
- 语法着色
- 简单语法错误通知
- 良好的多行体验
- 可自定义的键绑定
- Cmd和Emacs模式
- 许多配置选项
- Bash 样式的补全
- Bash/zsh 样式的交互式历史记录搜索
- Emacs yank/kill ring
- 基于 PowerShell Token 的单词移动和删除
- 撤销/重做
- 自动保存历史记录,包括在实时会话中共享历史记录
- 菜单补全、Intellisense
安装:$ Install-Module -Name PSReadLine -AllowPrerelease -Force
打开配置文件:code $PROFILE
在里面添加以下内容:
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 # 设置向下键为前向搜索历史纪录
别名配置
经常使用Git,所以想设置一些简短点的别名。
powershell的别名不支持语句,只能用命令所以这里还是搞了蛮久的。
需要用函数来帮忙,举个🌰 :假如我想设置git commit -m
-> cm
。因为后面肯定是有个字符串参数的,所以在配置文件里要这么写:
function getCommit() {
git commit -m $args
}
Set-Alias cm getCommit
另外这个函数名getCommit
是不能随便起的,有一定的规范,按我这种写应该是没问题的。
如果是不带参数的命令,就可以去掉$args
。
Powershell 别名详细参考
参考网址:
https://sspai.com/post/59380
https://docs.microsoft.com/zh-cn/windows/terminal/
https://segmentfault.com/a/1190000023337501
https://zhuanlan.zhihu.com/p/137251716
https://printempw.github.io/windows-terminal-setup-guide/#3-2-%E5%85%A8%E5%B1%80%E9%85%8D%E7%BD%AE
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!