11

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

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

有任何想法吗?

4

4 回答 4

23

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

#pattern_from_command[tab] 

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

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

#<id>[tab] 

-> Powershell 使用 id <id> 完成命令。

-> EG:在 Powershell 中:键入 #3,按 Tab -> Powershell 将历史记录中的第三 (3) 个命令写入命令​​行(虽然不直接执行,但只需按 enter 即可执行)。

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

于 2012-06-12T13:26:58.827 回答
7

截至 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? . 与普通 PowerShell 不同,PSReadLine 允许上/下键访问此历史缓冲区。

于 2013-10-25T16:12:46.637 回答
3

就像说@jhc​​lark现在有可能

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

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

  • -AllowPrerelease如果您有错误,请删除arg
  • 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
于 2021-03-13T19:16:57.243 回答
1

你不能。没有用于访问控制台程序历史的 API。

于 2012-06-12T10:24:53.007 回答