情景
本人最近昨日了解到starship,于是开始正式在Win10上接触shell工具,平常用得最多的还是cmd,可存在3个问题:
-
cmd工具默认是gbk,而gbk字符集无法使用我需要的字体,倘若设定cmd默认代码页为utf-8,运行部分脚本时候又会乱码,如图吧工具箱。
-
gbk运行cmd后的starship效果也不好。效果对比如下,前图是gbk,后图是utf-8:
3.cmd命令窗口不支持emoji字体显示,会导致starship显示不完整为方框,很丑,强迫症接受不了。
解决方法
便是选择了“终端预览”,美观的界面,又可以单独调用cmd powershell和pwsh,使得正常使用的cmd窗口可以保持和系统管理的cmd字符集分开,这样就保证了gbk脚本的正常运行的同时使用上也依旧美观,如下图。
以下是吐槽部分:
如刚刚提供的解决方案里的展示效果,倘若使用run命令或者在资源管理器右键打开再或者是在路径中直接启动shell,都将产生两个tab。这件事,对我来说,是极其反人类的。我都用以上操作打开shell了,你还给我默认启动一个做什么呢,还没有关闭的方法。
cmd那是没办法的,现在微软推荐的是PowerShell,很多配置也默认基于PowerShell,而且不支持旧版。
编码问题在win平台解决不了,有基于本地codepage的,有默认UTF-8的,只是说总有小概率遇到乱码。强制把windows的编码改成UTF-8会导致某些GUI乱码,历史包袱丢不掉了。
Windows Terminal打开的时候会新建一个默认实例,可能是PowerShell,可能是其他,看你在“启动”中的设置,如果你只想在终端中打开对应目录,右键菜单在终端中打开会在当前路径中启动默认实例
3 个赞
amen
(阿闷)
3
Starship 开头不是让你 安装并在你的终端启用 Nerd Font 。
powershell启动速度相比cmd有明显的降低,同时我查到powershell写文件会导致缺乏一个安全信息还是什么的。
如你所说的第三点,就是讨厌这个默认实例的设置。这简直是多此一举
1 个赞
是的,我也是这么做的。我在第1个问题中有提到“cmd工具默认是gbk,而gbk字符集无法使用我需要的字体”,这个字体就是Nerd Font,因为这个字体我一开始在cmd的配置里根本找不到这个字体,后来才反应过来这个字体不支持gbk字符集,需要更换为utf-8字符集。因此你所说的并非解决方法。
切换utf-8后使用Nerd Font字体只能解决部分乱码的问题如图1,“[”符号,使用字体后在图2显示为“>”等等,但使用字体并不能解决不支持emoji字体的问题,会显示为方框
momo
(Silence Prosper)
6
对自己好点,该用 powershell 就用,也可以试试 Nushell
用 cmd 随着使用需求增加会遇到很多很费精力要解决的难点
好的,我去尝试了终端,同样的设置在终端上就未曾出现这个问题,而终端预览上则会出现
Semidio
(Semidio)
8
我已经放弃使用了微软terminal,如今我选择了wezterm,更可的美观度,但我对它的配置语法还是不太熟悉,只写了个大概,但我依旧觉得还是终端的外观更具有质感?
换掉终端的一个原因,尽管可以在设置中更改为由终端决定来接管cmd和powershell pwsh等等等shell,但如果使用win+r shift+ctrl+alt enter的方式来触发管理员模式,就会变回原来的样子,这样的落差还是有点奇怪的,正如我文中提到的代码页字符集不符合导致starship显示的问题,同时由于接管了shell,脚本那些调用的终端也会变成这个,导致代码页字符集还是65001 utf-8出现乱码问题。
尽管wezterm也无法接管也无法解决这个问题就是了,我最后采用的方式就是在啊wezterm的环境变量下创建两个快捷方式term和terma 用来触发该终端的正常模式和管理员模式,通过快捷键来切换不同终端
Terminal有个致命bug,是explorer崩溃以后,会导致在托盘里的Terminal消失,只能在任务管理器里关掉。
又因为我一直用便携版的Terminal,最近的几个版本,便携版本设置为系统默认终端后会导致图形错误,我只能留在这个有bug的版本。
说实话,想溜去其他工具了,让我也去试试wezterm
1 个赞