改装 PowerShell
作为 Windows 下的终端, PowerShell 一直以来都显得不太好用, 简陋的背景, 不好看的字体, 难用的命令.
而 PowerShell 事实上还算一款较为强大的命令行工具, 今天就来将其改装成为真正的生产力工具.
主要涉及: 字体, 颜色, 终端, oh-my-posh
, PSReadLine
首先从外表开始
更改终端字体
Windows 下的字体总是显得简陋, 当然这是由于历史包袱严重, 难以直接更改, 也因此出现了一系列修改字体的工具, 如 MacType
, 但是使用工具修改字体具有一定的风险性.
更加安全一点的方案是使用特制的字体, 比如这款: Sarasa Gothic/更纱黑体/更紗黑體/更紗ゴシック/사라사 고딕
在 Release 中下载最新版, 可以选择只安装简体中文版, 即包含 SC
的字体.
Windows 选择 ttf 文件即可, 本文撰写时最新版为 sarasa-gothic-ttf-0.12.5.7z
Windows 控制台在中文系统下, 默认是新宋体, 显示效果很差, 将其更改为刚安装的更纱黑体, 这里选择的是 Sarasa Term SC
, 字号为 20:
如果找不到对应的字体, 或是更改之后没有发生变化, 可能是因为默认代码页为
GBK
, 可以尝试更改代码页到UTF-8
:
chcp 65001
然后再进行尝试.
然后就能发现 PowerShell 已经有了明显的变化.
更改终端配色
PowerShell 的默认蓝底白字配色也有点丑陋.
微软官方提供了一个更换 PowerShell 配色的小工具:ColorTool.exe,我们可以利用它来更换 PowerShell 的主题颜色。ColorTool 支持 iTerm 主题(以 .itermcolors
结尾的主题文件)。
我们可以从 ColorTool 的 GitHub 页面 下载这个小工具。当然,如果你使用 Scoop,也可以这样安装:
1 | scoop install colortool |
值得注意的是,如果你是直接从 GitHub 上面下载了 colortool.zip
并解压,colortool.exe
的路径就并没有自动加入环境变量,所以你没有办法全局调用这个工具。因此我更加推荐利用 Scoop 这个优质的包管理来安装 ColorTool。
推荐阅读:「一行代码」搞定软件安装卸载,用 Scoop 管理你的 Windows 软件
ColorTool 使用非常简单。工具自带了几种主题,我们可以利用下面这个命令进行查看:
1 | # 注:-s 代表 schemes |
其中前面列出的几个 .ini
和 .itermcolors
就是主题配置文件,我们可以直接通过下面这个命令设置主题:
1 | # 临时查看 |
比如我们希望将主题配色更换为 OneHalfDark.itermcolors
,只需要输入下面这个命令就可以更换并预览更新:
1 | colortool OneHalfDark |
由于 ColorTool 直接支持 iTerm 主题配置文件,因此我们可以在 iterm2colorschemes 这个网站找到我们想要的主题背景进行配置,方法和上面介绍的一样:在 PowerShell 中定位至你希望更换的主题文件,使用命令 colortool <主题名称>.itermcolors
进行配置即可。同时,如果你对上面的主题都不满意,你也可以直接在这个网站: terminal.sexy 自行配置自己想要的主题,并通过同样的方式进行应用。
不过从 iTerm2 Color Schemes 的配色方案实在是太多了,选起来本身也是个麻烦事,我最后在这几款中选出了下面这几款配色,感觉还不错,推荐给大家:
添加效率工具
配置文件路径
PowerShell 的配置文件一般都在 $HOME\Documents\WindowsPowerShell
目录下, 并且可能会存在多个 .ps1
文件
Microsoft.PowerShell_profile.ps1
: 这个是 PowerShell 终端的配置文件, 在这里更改的设置只会在系统自带的 PowerShell 终端中生效, 在其他位置, 比如 VS Code, Cmder 中不会生效.Microsoft.VSCode_profile.ps1
: 和上面同理, 不过是在VS Code
中生效.profile.ps1
: 这个是 PowerShell 的全局配置文件, 在多个位置都会生效.
新增(或修改)你的 PowerShell 配置文件 Microsoft.PowerShell_profile.ps1
:
1 | # 如果之前没有配置文件,就新建一个 PowerShell 配置文件 |
PSReadLine
PowerShell 无法开箱即用的另一个原因是命令补全和历史搜索功能很差劲. 官方维护的有一个 PSReadLine 项目, 用于实现类似于 Linux 下 Bash 的命令补全功能.
官方推荐使用 PowerShellGet
安装, 不过首先需要安装这个模块:
1 | Install-Module -Name PowerShellGet -Force |
之后通过 PowerShellGet
安装 PSReadLine
:
1 | # 安装最新版 |
之后需要启动并配置 PSReadLine, 在配置文件中加入如下内容, 便可实现一个基本的 Shell 功能:
1 | Import-Module PSReadLine |
也可参考官方的样例 SamplePSReadLineProfile.ps1 实现自己想要的功能
Oh-my-posh
和 Linux 下大名鼎鼎的 oh-my-zsh
类似, 针对于 PowerShell 也有对应的 oh-my-posh
.
我们通过在 PowerShell 中执行下面的命令安装配置 oh-my-posh
。
1 | Install-Module posh-git -Scope CurrentUser |
然后让 PowerShell 配置生效. 需要修改 PowerShell 配置文件, 在其中添加下面的内容:
1 | Import-Module posh-git |
其中最后一句 Set-Theme <主题名>
就是配置主题的命令。而 $DefaultUser
则可以用来隐藏用户名, 使 PowerShell 看起来更简洁.
如果一切顺利,你应该看到你的 Prompt 部分变成了类似这个的样子:
注意:如果你发现后面的日期显示出现了凌乱的现象(比如本该在同一行显示的字符却跑到了下一行),多半是因为显示了中文。目前很多终端都不能正常的显示中文或 CJK 字符(即:Double-width character),所以你可以通过下面这个命令将 PowerShell 的环境设置为 en-US 的英文环境:
1 Set-Culture en-US
Bug Fix
部分符号字体无法显示
如果你使用 oh-my-posh
,并且在 oh-my-posh
里面配置了 PowerLine 命令提示符的话,你会发现,在进入 Git 目录时会看到命令提示符中有个“□”:
这个是个表情符“✎”,但是因为 Sarasa 系列字体中不包含表情符,因此就只能显示乱码了。不过也有解决办法,打开注册表编辑器,找到路径:
1 | 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink |
在其中新建多字符串值,名称为:Sarasa Term SC
,内容为:
1 | MICROSS.TTF,Microsoft Sans Serif,108,122 |
这段内容是复制的宋体 SimSun 的,如果你愿意的话,可以用同样的方法把 Sarasa
系列的都注册一下,也可以只修改要使用的这个,然后重启计算机就可以了。
参考链接
改装 PowerShell