在windows上的真正适合强迫症的终端环境
Windows 是我用的最多的系统, 但是windows下默认的shell体验实在是太糟糕了, 不过, 如果你愿意折腾一番的话, 其实还是能在windows下获得比较好的shell体验的。
Windows下的bash环境
Git Bash
Git bash 是 git 在windows下提供的类bash环境, 把很多熟悉的linux命令与应用带到了windows, 例如curl
, vim
, grep
, ssh
, sed
, xargs
等等, 非常适合UN*X用户使用. 要安装git bash, 只要安装Git即可.
PowerShell
PowerShell
是 Windows 加入的功能强大的Shell环境, 在这个shell中你可以使用部分常见的linux命令(ls
, cat
, curl
, 具体参数用法与在linux中有所不同, 毕竟只是对应的powershell命令的别名), 因此无论你习惯用windows还是linux都能很快适应这个终端. 同时powershell具有极高可扩展性, 能直接与.Net
交互.
现代windows已经预装了基于.Net Framework
的 powershell
, 你也可以在此处安装基于.Net Core
的跨平台PSCore
参考: PowerShell入门
Windows下更好的控制台终端 Terminal
终端Terminal决定了控制台窗口的外观. Windows下默认的终端是comhost
, 这个终端丑就算了, 在中文环境下(代码页936)还无法使用不带中文字符集的字体, 这意味着无法使用像Consolas
, Cascadia Code
, Source code pro
等字体. 同时comhost
也不支持emoji显示, powerlines, otf字体显示等功能.
事实上中文环境无法使用英语字体的问题可以通过修改编码至utf-8编码来解决, 在
设置 > 区域 > 其它区域设置 > 区域 > 管理 > 非Unicode区域设置
勾选Beta版: ...
即可 但是这样做会导致系统自带指令输出变为英语, 但是至少我不介意=.=, 学学英语有啥不好的. 另外, 这样设置后会导致中文版Adobe After Effects
拒绝启动, 如果要用ae的话就别这样设了.
这些问题最好的解决办法就是更换更好的Terminal, 这里我推荐两个终端:
- Windows Terminal
- Terminus
Windows Terminal
pros:
- UWP原生应用, 响应速度较快
- M$自家作品, 很有可能在未来会被直接预装在Windows 10中 cons: 目前配置仍然较为麻烦, 且功能不及Terminus多
Terminus
pros: 配置较为方便, 兼容性广 cons:
- Electron应用, 启动较为缓慢
- 目前Fluent Effect会出现拖动延迟问题
更好的控制台字体
这里我推荐两个字体
这两个字体其实是非常相似的, 它们都支持 code-specific ligatures, emm, 什么意思看看下面这张gif就明白了:
它们之间的区别是基础字形稍微有些不同, 下面是它们的比较:
可以明显看出, jetbrains Mono更加瘦长一点, 斜体的角度也更易于阅读 此外, Jetbrains Mono为尽量提高小字号下的辨析度去掉了一些不必要的字母细节, 但这样也导致了大写U
和小写u
比较难以区分.
Prompt优化
Prompt是一段文字, 用于指示此时正在接受命令。 它从字面上提示用户采取措施 –wikipedia
Git Bash
git bash的默认prompt是:
1 | USER@PC MINGW32 ~/your/path/ (git_branch) |
这段prompt其实已经比较完善了, 如果你仍然希望修改也非常简单。
git bash的prompt是通过一段bash
脚本实现的, 其位置在/etc/profile.d/git-prompt.sh
, 如果你不清楚这个文件的具体位置, 可以__以管理员权限__运行:
1 | # 备份现有的脚本 |
可以参考我修改的git prompt
1 | TITLEPREFIX=bash |
效果:
Powershell
1 | PS C:\test\path> |
Powershell的prompt可以说是…非常简陋, 相比起git bash既丑, 提供的有用信息也少。
好在powershell可以通过安装插件的方法来更改prompt, 这里我推荐oh-my-posh插件
使用下面的命令即可安装:
1 | Install-Module posh-git -Scope CurrentUser |
然后使用下面命令可以启用oh-my-posh:
1 | # Start the default settings |
其中Set-Theme命令后可跟不同的prompt主题, 各个主题的效果可参见Themes
你也可以自己制作主题, 方法参见Create your own theme
值得注意的是, 为了能让posh正常显示, 必须使用带powerline
的字体, 建议使用比较新的等宽编程字体, 例如Cascadia Code
或者JetBrains Mono
, 如果你仍然希望使用不兼容Powerline
的字体, 例如Source code pro
, 可以在这里下载它们的带powerline
版本。
另外不要尝试在windows自带的conhost下用这个主题, 不支持的=。=, 建议用我上文提到的Windows Terminal Preview
或Terminus
为了让每次启动powershell时都应用oh-my-posh, 需要修改配置文件, 执行下面命令:
1 | if (!(Test-Path -Path $PROFILE )) { New-Item -Type File -Path $PROFILE -Force } |
在visual studio code
中输入以下内容
1 | Import-Module posh-git |
嗯, 这样修改后的powershell还是比较好看的: