Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git执行后重置Powershell配置文件、动态提示和ansi颜色转义码_Powershell - Fatal编程技术网

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

git执行后重置Powershell配置文件、动态提示和ansi颜色转义码,powershell,Powershell,我正在尝试在Powershell中复制我的动态提示 此动态提示使用某些特定unicode字符以及背景和前景颜色的组合来生成可包含项目的提示,例如: 当前目录(蓝白相间) 当前git分支(绿底黑) 前/后(黄色或白色上的黑色) 特殊状态(合并、重设基础等-红底黑) cmder提示符效果非常好,我已经使用Microsoft.Powershell\u profile.ps1脚本和代码成功地复制了大部分(如果不是全部的话)命令 但是,在运行一些git命令(如git pull)后,powershell

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

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

  • 当前目录(蓝白相间)
  • 当前git分支(绿底黑)
  • 前/后(黄色或白色上的黑色)
  • 特殊状态(合并、重设基础等-红底黑)
cmder提示符效果非常好,我已经使用
Microsoft.Powershell\u profile.ps1
脚本和代码成功地复制了大部分(如果不是全部的话)命令

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

例如:

顶部的
git lg
(git log on one line,修饰)命令是从cmder运行的,请注意,提示符返回时带有颜色

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

但是,在再次从Powershell运行
git lg
后,转义码的处理被禁用,提示现在变得完全混乱

我的问题是:

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

下面是一个非常简单的powershell配置文件:

function prompt {
    "" + [char]0x001b + "[39;44mTEST" + [char]0x001b + "[0m" + [char]0x000a + "> "
}
只需将其放入名为:

C:\Users\<USERNAME>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
C:\Users\\Documents\WindowsPowerShell\Microsoft.PowerShell\u profile.ps1
(如果文件已经存在,请确保对其进行备份!)

然后启动Powershell,您应该能够复制以下内容:

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

我尝试过的事情:

  • 输出:将设备重置为其原始状态。(无明显影响或变化)
  • 直接运行Powershell(而不是从cmder内部运行),其工作原理与上面完全相同,只是窗口具有不同的初始颜色,例如蓝色背景。我的提示符的颜色似乎很好,虽然特殊字符没有,但这是意料之中的(分支符号和三角形),但在
    git lg
    之后,仍然是一团糟

如果从Windows的“开始”菜单而不是CMD提示符启动PowerShell,问题是否会重现?是的,只有转义字符变成了一个小方框,而不是带有问号的方框,但除此之外,结果是相同的。您见过该模块吗?我认为它涵盖了您使用cmder的所有功能。它看起来像是
git
正在禁用
cmder
,并使用默认的
conhost
,它不支持ANSI颜色。在没有任何其他处理程序的情况下,
CMD
和PowerShell(非ISE)都使用
conhost
作为控制台处理程序。是的,但请注意,如果我从“开始”菜单、CMD或cmder中运行PowerShell,ansi颜色确实有效,直到我执行一些git命令为止。这与我尝试启动Powershell的所有方式相同。如果从Windows“开始”菜单而不是CMD提示符启动Powershell,问题是否会重现?是的,只有转义字符变成了一个小方框,而不是带有问号的方框,但除此之外,结果是相同的。您看到该模块了吗?我认为它涵盖了您使用cmder的所有功能。它看起来像是
git
正在禁用
cmder
,并使用默认的
conhost
,它不支持ANSI颜色。在没有任何其他处理程序的情况下,
CMD
和PowerShell(非ISE)都使用
conhost
作为控制台处理程序。是的,但请注意,如果我从“开始”菜单、CMD或cmder中运行PowerShell,ansi颜色确实有效,直到我执行一些git命令为止。这对于我尝试启动Powershell的所有方式都是一样的。