有时,在Powershell中使用某些命令时,控制台会被设置为某种“交互模式”,这使得它的行为方式对我来说完全无法使用,因此我必须重新启动控制台。我不确定它是Powershell中的错误还是我不了解的功能。
这是一种重现它的方法(但是,到目前为止这不是它发生的唯一方式):
git reflog
。HEAD
个职位的列表,其中大部分时间都是最后一次提交的列表。cls
清除控制台屏幕。现在,控制台处于这种奇怪的模式。当我开始输入时,控制台像往常一样接受一些键入的字符,但是一些键按下似乎让控制台显示先前git reflog
命令的片段。
以下是一个示例:在一个全新的PowerShell控制台中,我执行了上述步骤。然后我输入了abcdefghijklmn
。这就是这个控制台现在看的东西:
正如您所看到的,字符 j 和 l 被视为一些命令,它们将git reflog
输出的部分打印到控制台窗口,但低于提示。
这是一个错误还是一个功能?有其他人有这些问题吗?
答案 0 :(得分:2)
less
(默认Git寻呼机)不会将 Ctrl + C 解释为退出命令。您可以打开一个新的控制台窗口,其中less
将是唯一附加到其上的应用程序:start git reflog
来验证。当您按 Ctrl + C 并且less
不是唯一连接到当前控制台窗口的应用程序时,shell会收到 Ctrl + C (PowerShell或CMD),shell要求用户提供更多输入。您可以在任务管理器中看到按 Ctrl + C 后,less
仍在运行,尽管shell会为您打印一个新提示。所以现在你有两个应用程序竞争单个控制台窗口输入缓冲区:第一个应用程序将接收一些键,而第二个应用程序接收其他键。您需要多次输入 q 和 Enter 以确保less
将收到q
。