使用向上箭头访问PowerShell历史记录

时间:2012-06-12 09:14:20

标签: windows powershell

我最近切换到PowerShell,因为我的Cygwin bash在使用maven时开始给我一些无意义的编译错误。我已经找到了如何在(https://stackoverflow.com/questions/9259723/is-there-a-windows-shell-tool-can-keep-history)中保存和恢复我的命令历史记录,这似乎有用(使用“历史记录”将显示干净启动后的最近命令。)

我似乎无法使用向上箭头访问此历史记录,就像在当前会话中使用该命令一样。

有什么想法吗?

4 个答案:

答案 0 :(得分:21)

我建议杀死这个旧习惯(我知道,他们很难死)并使用专为此构建的PowerShell特定功能。它实际上非常棒。这是#* [tab],这里有2个选项(括号中的标签([tab])表示应该按下标签按钮):

#pattern_from_command[tab] 

- > Powershell循环遍历包含“pattern_from_command”的历史记录中的所有命令。

- > EG:在Powershell中:输入#echo,按tab - > Powershell循环历史中包含“echo”的所有命令(当然,如果有的话)。

#<id>[tab] 

- &GT; Powershell完成id为&lt; id&gt;的命令。

- &GT; EG:在Powershell中:输入#3,按tab - &gt; Powershell将历史记录中的第三个(3)命令写入命令​​行(虽然不直接执行它,只需按Enter键执行它)。

我知道这与你在bash中所做的不一样,但我认为值得尝试并习惯。

HTH 鲍尔泰克

答案 1 :(得分:6)

截至2013年10月,现在可以使用精彩的PSReadline模块:http://github.com/lzybkr/PSReadLine

您还需要在PowerShell会话退出时保存历史记录,并在加载PSReadline之前将其加载到profile.ps1中(请参阅http://technet.microsoft.com/en-us/library/ee156792.aspx)。当PowerShell存在时,您可以使用如下挂钩注册挂钩以保存历史记录:Powershell profile "on exit" event?。与vanilla PowerShell不同,PSReadLine允许使用向上/向下键来访问此历史缓冲区。

答案 2 :(得分:2)

你做不到。没有用于访问控制台程序历史记录的API。

答案 3 :(得分:1)

就像说@jhclark现在有可能

您在官方 GitHub 中拥有所有安装文档:https://github.com/PowerShell/PSReadLine

你必须很好地遵循整个教程并注意:

  • 如果有错误,请删除 -AllowPrerelease 参数
  • 例如在您的个人资料 Import-Module 'PSReadLine' 中添加此行 code $PROFILE 以使用 vscode 打开您的个人资料配置
  • 如果您希望一切正常,请在安装 PSReadLine 后关闭所有 shell

如果您希望 fleche 像在 Linux 上一样在历史记录中进行搜索,请启动这两行,因为我认为这是大多数人正在寻找的内容:

Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward

默认是默认配置的组合键F8SHIFT + F8

你可以看到 conf :

Get-PSReadLineKeyHandler