奇怪的 Powershell "interactive" 行为

Strange Powershell "interactive" behavior

有时,在 Powershell 中使用某些命令时,控制台会设置为某种 "interactive mode",这使得它的行为方式对我来说完全无法使用,因此我必须重新启动控制台。我不确定这是 Powershell 中的错误还是我不知道的功能。

这是一种重现它的方法(然而,这并不是它发生的唯一方法):

现在,控制台处于这种奇怪的模式。当我开始打字时,控制台像往常一样接受一些输入的字符,但某些按键似乎让控制台显示前一个 git reflog 命令的片段。

这是一个例子:在一个新的 powershell 控制台中,我执行了上述步骤。然后我输入了abcdefghijklmn。这是此控制台现在的样子:

如您所见,字符 jl 被视为一些打印 git reflog 部分的命令输出到控制台 window,但 低于 提示。

这是错误还是功能?还有其他人遇到这些问题吗?

说明

less(默认 Git 寻呼机)不会将 Ctrl+C 解释为退出命令。您可以打开一个新的控制台 window,其中 less 将是唯一附加到它的应用程序:start git reflog 以验证这一点。

当您按下 Ctrl+C 并且 less 不是附加到当前控制台 window 的唯一应用程序时,然后 Ctrl +C 被 shell(PowerShell 或 CMD)接收,并且 shell 要求用户提供更多输入。你可以在任务管理器中看到,当你按下 Ctrl+C 后,less 仍然是 运行,虽然 shell 为你打印了一个新提示.所以现在你有两个应用程序竞争单个控制台 window 输入缓冲区:第一个应用程序将接收一些密钥,而第二个应用程序将接收其他密钥。

解决方案

您需要多次键入 qEnter 以确保 less 将收到其 q .