目前我在 Cygwin 中使用 Bash。使用 Bash,我可以输入以下命令:
$ date
Thu, Apr 23, 2020 7:51:43 PM
$ echo Sunday
Sunday
然后,如果我按两次向上,我会得到这个,正如预期的那样:
$ date
如果我想取消,我可以按下两次,或者 Ctrl + C。取消后,如果我再次按下向上,它会给我最新的结果,如预期的那样:
$ echo Sunday
现在与命令提示符对比。我可以输入这些命令:
C:\> where calc
C:\Windows\System32\calc.exe
C:\> where notepad
C:\Windows\System32\notepad.exe
然后,如果我按两次向上,我会得到这个,正如预期的那样:
C:\> where calc
但是如果我想取消,我不能按下两次。它只允许您按下一次,以便显示最新的命令:
C:\> where notepad
作为一种解决方法,您可以按 Esc。但是如果你按向上,你就不会再得到最新的结果了。因为它没有让你一直向下滚动,所以你得到了这个:
C:\> where calc
Ctrl + C 似乎也有同样的问题。我不希望 shell 试图变得聪明,并记住历史中的位置。Windows 是否可以通过注册表或其他方式更改此行为?
当从 Unix(如终端或其端口(如 Cygwin 或 git bash 等))返回时,命令提示符可能会感觉有点僵硬。
除了尝试了解它的工作原理并调整它的不同工作流程之外,我不相信您可以做任何事情。
不过,可能会帮助您的是按 F7 在弹出窗口中查看您的历史记录。
您也可以尝试使用键盘上的 Page Up 和 Page Down 来分别进入历史记录中的第一个或最后一个命令。
Windows 命令提示符历史悠久。它的大部分功能都与DOS中的相同,后者可以追溯到 40 年前(!)。
微软放弃了进一步开发命令提示符,并打算在未来用新的 Windows Terminal替换它。你可以测试这个新产品,因为它的历史处理一定会更好。
另一种可能性是使用命令提示符的附加组件来添加类似 Linux 的历史处理,即Clink 项目:
命令提示符的另一个著名替代方案是 ConEmu:
Cmder 项目建立在 ConEmu 代码之上 ,并带有 Clink 的增强功能。它的 Git for Windows版本带有一个在 PATH 中准备好的许多 Linux 命令的 Windows 端口。
较新版本的 PowerShell 没有这个问题,所以我切换了 shell。