是否可以异步更新PowerShell提示符?

jos*_*hls 6 powershell

我想在PowerShell提示符中包含Mercurial/Git repo状态.有时这会prompt()大大减慢功能,导致漫长的等待直到你可以开始输入shell.我想知道,是否有可能更新提示异步?

理想情况下它会:

  1. Write-Host 当前目录(典型提示)
  2. 在后台开始收集回购状态.
  3. 收集回购状态后,假设prompt尚未再次调用,请将回购状态插入提示中.

有没有人这样做过?

Sta*_*ing 5

不是本身.

您无法异步更新提示,因为提示只返回文本,并且只要顶级命令完成,就会在主机中调用它.

您可以重写提示以执行诸如检查数据源或异步更新的变量之类的操作.因此,在命令运行时,提示不会继续改变,但它不会挂起一段时间,因为它只是查找数据.

更棘手的是,它进入了试图在事后查看执行结果的游戏.除非将它们分配给某些东西,否则PowerShell不会保留它们.所以要做到这一点,必须覆盖Out-Default(只适用于ISE,PowerGUI等,而不是powershell.exe).压倒这一点并不是那么难,但它需要知道很多PowerShell voodoo,即使是我令人印象深刻的标准.

好的方面来说,我显然已经考虑了很多,并且有一个模块可以做很多事情,我只是确定我要用它做什么以及它是否保留在自己的模块中加入我们构建的其他模块之一.

我会在外出时更新,但这个路线图应该有很大帮助.

简短的回答是你不能更新提示异步,但你可以快速做到这一点,并且这样做所需的技巧打开了许多冷却器门.

希望这可以帮助