执行git后,将重置Powershell配置文件,动态提示和ansi颜色转义码

时间:2017-06-23 10:31:02

标签: powershell

我正在尝试在Powershell中复制我的cmder动态提示。

此动态提示使用某些特定unicode字符以及背景和前景颜色的组合来生成可包含项目的提示,例如:

  • 当前目录(蓝色白色)
  • 当前git分支(绿色为黑色)
  • 前方/后方(黄色或白色黑色)
  • 特殊状态(合并,变基等 - 红色黑色)

cmder提示符可以创建奇迹,并且我使用带有代码的Microsoft.Powershell_profile.ps1脚本设法重现了大部分内容(如果不是全部的话)。

然而,在运行一些git命令(如git pull)之后,powershell提示会变得混乱。症状是突然关闭这些转义码的处理。如果我只使用cmder,则不会发生这种情况。

示例:

cmder vs powershell

从cmder运行顶部git lg(git log on one line,decorated)命令,注意提示带有颜色。

然后我切换到中间正上方的powershell,注意我在那里得到了相同的提示,只有这是从powershell配置文件脚本生成的。

然而,在再次运行git lg之后,仅从Powershell运行,转义代码的处理被禁用,现在提示完全混乱。

我的问题是:

  

我是否可以在powershell配置文件中执行任何操作,以便在生成提示之前启用此功能,或者防止这种情况发生?

这是一个非常简单的PowerShell配置文件:

function prompt {
    "" + [char]0x001b + "[39;44mTEST" + [char]0x001b + "[0m" + [char]0x000a + "> "
}

只需将其放入名为:

的文件中即可
C:\Users\<USERNAME>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

(如果文件已存在,请务必备份该文件!)

然后启动Powershell,你应该可以重现这个:

powershell ansi codes messed up

请注意,提示前的最后一行包含逐字转义码。

我尝试的事情:

  • 输出ESC c:将设备重置为原始状态。 (没有明显的影响或变化)
  • 直接运行Powershell(不是从cmder中运行),这与上面完全相同,只有Windows具有不同的初始颜色,例如蓝色背景。我的提示的颜色似乎工作正常,但特殊字符并不是预期的(分支符号和那个三角形),但在git lg之后,仍然搞砸了。 / LI>

0 个答案:

没有答案