控制台的文本颜色在 Windows 10 build 15063.296
中不起作用。
我深入研究了一下,发现自己迷路了。这是我找到的所有内容...
从几个讨论来看,似乎在最新版本的 Windows 10 中删除了对“虚拟终端序列” 或“控制字符序列” 的支持(#1 ,#2)。有些人还建议降级 git 版本(这对我不起作用)。
我试图从我的另一台机器上复制一个 cmd.exe
,版本是 10.0.10586.0
并且着色有效,但是,在进一步阅读和试验后,我我不再确定问题出在哪里。
比较 ls --color=auto
的输出
git\git-cmd.exe
, git\git-bash.exe
, windows 原生的cmd.exe
和旧的cmd。 exe
根据 this site , 对着色的支持不在命令窗口中,而是在 conhost.exe
中,这就提出了一个问题 -- 为什么它在某些控制台中有效而在某些控制台中无效?
If you start powershell.exe from cmd.exe, it will inherit the conhost settings since it’s attaching to a previously created console, not allocating a new one; this also enables escape sequences in powershell.exe.
鉴于这句话,我尝试了以下只会加深我的困惑。
我在每个 cmd 版本中运行 ls --color=auto
命令,然后尝试从较新的 cmd 运行较旧的 cmd,反之亦然,并得到以下结果。
(红色下划线是cmd v15063
,绿色下划线是cmd v10586
)
以旧换新
从新到旧
/EDIT 我做了更多的实验...
有趣/令人困惑的是 type
和 cat
的不同结果以及 ls --color=auto
与来自文件的相同内容 type
d。
Console Virtual Terminal Sequences msdn
ANSI.SYS historical documentation
最佳答案
至于现在,我通过用旧的 cmd_10.0.10586.0
替换较新的 cmd_10.0.15063.0
来“修复”它> 我从旧系统复制的。如果您运行了 Windows 升级,您可能会在 C:\Windows.old\Windows\System32\cmd.exe
中找到较旧的 cmd 版本。 (文件夹是隐藏的)
要替换系统的 cmd.exe
,您需要获取文件 Properties -> Security -> Advanced
的所有权,在顶部 Owner: TrustedInstaller (Change)
,设置为Administrators
,然后在Permissions -> Change permissions -> Administrators -> Edit -> Full control
中赋予Administrators完全权限。
关于Windows 10 控制台颜色不起作用(虚拟终端控制字符序列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44047988/