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

Sie*_*ebe 10 windows powershell

我最近切换到PowerShell,因为我的Cygwin bash在使用maven时开始给我一些无意义的编译错误.我已经找到了如何保存和恢复我的命令历史记录(/sf/ask/648180641/),这似乎有效(使用"历史记录"将显示干净启动后的最近命令.

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

有任何想法吗?

Bar*_*ekB 24

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

#pattern_from_command[tab] 
Run Code Online (Sandbox Code Playgroud)

- > Powershell循环遍历包含"pattern_from_command"的历史记录中的所有命令.

- > EG:在Powershell中:键入#echo,按tab - > Powershell循环遍历历史中包含"echo"的所有命令(当然,如果有的话).

#<id>[tab] 
Run Code Online (Sandbox Code Playgroud)

- > Powershell完成id <id>的命令.

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

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

HTH Bartek

  • 但需要更多的按键,这也不是很方便. (3认同)
  • 碉堡了!碉堡了。胡说八道。这太棒了。我怎么不知道这件事。 (2认同)

Lin*_*nix 9

就像@jhclark说的,现在是可能的

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

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

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

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

Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward
Run Code Online (Sandbox Code Playgroud)

默认是组合键F8,并且SHIFT + F8是默认配置的

你可以看到conf:

Get-PSReadLineKeyHandler
Run Code Online (Sandbox Code Playgroud)


jhc*_*ark 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"事件?.与vanilla PowerShell不同,PSReadLine允许上/下键访问此历史缓冲区.


Joe*_*oey 1

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

  • 截至 2013 年 10 月,现在终于可以使用精彩的 PSReadLine 模块:https://github.com/lzybkr/PSReadLine(参见替代答案) (2认同)