似乎是随机的:经过一段时间/使用我在Windows Vista上使用的任何控制台后,我无法使用命令行历史记录(或命令缓冲区,如果您愿意...),并且向上或向下箭头不再做任何事情,这意味着历史记录中基本上有0个项目。
我在Cygwin,CMD和PowerShell中看到过这种行为。
有时这种行为适用于在控制台内运行的进程 - Python,MySQL客户端等。
这是Windows中的固有问题吗?某处设置?是否有其他控制台没有这个问题?
ps - 如果您认为这与非编程相关,请参阅有关编程工具的其他问题,例如,几乎所有标记为“eclipse”的内容都涉及如何使用IDE而不是编程。
答案 0 :(得分:17)
我认为有两种方式。
1)Far Manager 是shell的不错选择。即使您不需要它的全部功能(文件/存档管理,编辑器,大量插件,宏),您也可以将它用作cmd,tcc,sh或任何其他程序,shell或命令处理器的包装器/执行器。
例如
历史记录将在会话之间保留,您可以通过 Alt + F8 访问它(按 Ctrl + Alt + F 将历史记录切换到过滤模式)。
远程2.0在注册表中存储历史记录(和设置)。
远程3.0在SQLite数据库中存储历史记录,并且可以是可移植的。
此外,远程可以从历史记录或磁盘中的文件/路径自动完成命令。还有插件(YAC)可以从别名等自动完成...
2)我最近发现了一个有趣的项目: Clink - 将Bash功能强大的命令行编辑带到Microsoft Windows'cmd.exe
这似乎是一个年轻但正在萌芽的项目,所以我创建了一个在Console Emulator中使用它的选项。
答案 1 :(得分:5)
Windows“DOS框”中有一个历史缓冲区的最大大小 - 左上角图标,右键单击,选择属性,您将看到命令历史记录的缓冲区大小默认为50。
答案 2 :(得分:4)
在PowerShell中,您可以通过MaximumHistoryCount自动变量控制历史记录的最大大小(默认为64)
PS> $ MaximumHistoryCount
答案 3 :(得分:4)
检查滚动锁键。 DOH!我意外地撞到了我,所以向上和向下箭头只是滚动窗口。
答案 4 :(得分:3)
我多年来遇到过这个问题。主要是使用bash shell中的命令行使用python。经过一些实验,今天重新发生了第1000次(或多或少),我能够通过将shell的命令历史记录设置为缓冲区大小为999,缓冲区数为999(我选择了最大的)来解决问题。每个可能的设置,任何设置都可能比我之前的设置更有效,这是50/50)。要访问命令历史记录,请右键单击shell窗口左上角的“属性”,然后选择“选项”选项卡。我不确定这些设置对shell性能的影响,但到目前为止还没有其他任何东西受到影响,命令行历史记录再一次在我以前没有工作的shell中为我工作。我意识到这个答案是类似于steve-gilham的回答,但也许给出了更多的背景。
不可否认,我的答案涉及一项有效的实验。
答案 5 :(得分:1)
控制台中的所有历史记录均由Doskey提供。它也始终可用于所有基于字符的交互式程序(例如程序调试器或文件传输程序),并为它启动的每个程序维护命令历史记录缓冲区和宏。
在DOS时代,人们可以记住执行后清除历史记录的软件。我不确定它们是错误,预期的行为,还是两者的混合。但是在this link的末尾你可以看到一些Doskey错误。
我建议任何遇到此问题的人尝试使用Doskey命令选项,看看是否可以纠正它。
答案 6 :(得分:0)
我从来没有经历过这种情况,但我想知道是否按下ALT+F7
根据DOSKEY /?
清除命令历史记录的组合{{1}}可能是原因。
答案 7 :(得分:0)
如果“突然”所有历史记录都消失了,也许新的cmd-shell会启动? 测试:
C:\Users\Guest\>doskey /history
…long history…
C:\Users\Guest\>cmd
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\Guest\>doskey /history
…no history…
C:\Users\Guest\>exit
C:\Users\Guest\>doskey /history
…old long history…
在这个例子中你会看到新的cmd-Start但是如果你试试这个:
doskey /history
…history list…
cmd echo /k
doskey /history
…no list !
你没看到
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
但是新的CMD-Shell已经启动。 所以“退出”可能有助于这种情况!
答案 8 :(得分:0)
当我在 Windows 10 上的 Rez 环境中时,这发生在我身上。
根据上面@user1769064 的回答,将缓冲区设置为 999 并使用新环境重新启动外壳,问题就消失了。可能有一个低于 999 的数字也可以使用,但还没有尝试过。
答案 9 :(得分:0)
C:\
图标。