目前我使用 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。但是,如果按 Up,您将无法再获得最新的结果。由于它不允许您一直向下滚动,因此您会看到以下内容:
C:\> where calc
Ctrl + C 似乎也有同样的问题。我不希望 shell 变得聪明,并记住历史记录中的位置。Windows 是否有一些选项可以更改此行为,使用注册表或其他什么?
答案1
从类 Unix 终端或其端口(如 Cygwin 或 git bash 等)返回时,命令提示符可能会感觉有点僵硬。
我不相信你能对此做任何事情,除了尝试了解它的工作原理并适应其不同的工作流程。
不过,按 F7 可能会在弹出窗口中查看您的历史记录。
您还可以尝试使用键盘上的 Page Up 和 Page Down 分别转到历史记录中的第一个或最后一个命令。
答案2
Windows 命令提示符历史悠久。其大部分功能与 Windows 命令提示符相同。操作系统,其历史可以追溯到四十年前(!)。
微软放弃了进一步开发命令提示符,并打算在未来用新的命令提示符代替它。 Windows 终端。你可以测试一下这个新产品,因为它的历史记录处理肯定会更好。
另一种可能性是使用命令提示符的附加组件来添加类似 Linux 的历史记录处理,Clink 项目:
Clink 将原生的 Windows shell
cmd.exe
与 GNU Readline 库强大的命令行编辑功能相结合,提供了丰富的完成、历史记录和行编辑功能。
命令提示符的另一个众所周知的替代方案是 康埃穆:
ConEmu-Maximus5 旨在成为方便、全面、快速和可靠的终端窗口,您可以在其中托管为 WinAPI(cmd、powershell、far)或 Unix PTY(cygwin、msys、wsl bash)开发的任何控制台应用程序。
这 康德 该项目基于 ConEmu 代码构建,并借助 Clink 进行了增强。其 适用于 Windows 的 Git版本附带了适用于 Windows 的移植版,其中已在 PATH 中准备好许多 Linux 命令。
答案3
较新版本的 PowerShell 没有这个问题,因此我切换了 shell。