让Visual Studio的终端拥有命令补全(PSReadLine)

打印 上一主题 下一主题

主题 880|帖子 880|积分 2644

假如你下载了Windows Terminal和最新版的PowerShell Core就会发现,
假如不特殊设置的话,即使我们利用的Windows Terminal拥有命令补全,Visual Studio的终端仍旧没有任何补全。
这是因为Visual Studio的终端利用的是系统自带的Windows PowerShell的模块(Modules),而不是Windows Terminal的模块,
所以看起来会有不同。
而命令补全功能是由一个名为PSReadLine的模块提供的,Windows PowerShell中只有老版本v2.0.0,而Windows Terminal中是最新的版本。
我们可以用Get-Module -ListAvailable看到这种情况:
  1. PS C:\Users\poker> Get-Module -ListAvailable
  2. ...
  3.     Directory: C:\program files\windowsapps\microsoft.powershell_7.5.0.0_x64__8wekyb3d8bbwe\Modules
  4. ModuleType Version    PreRelease Name       ...
  5. ---------- -------    ---------- ----       ...
  6. Script     2.3.6                 PSReadLine ...
  7. ...
  8.     Directory: C:\Program Files\WindowsPowerShell\Modules
  9. ModuleType Version    PreRelease Name       ...
  10. ---------- -------    ---------- ----       ...
  11. Script     2.0.0                 PSReadLine ...
  12. ...
复制代码
既然是老版本,升级模块应该就可以了吧?然而它会报错:
  1. PS C:\Users\poker> Update-Module PSReadLine
  2. Update-Module: Module 'PSReadLine' was not installed by using Install-Module, so it cannot be updated.
复制代码
解决方法

通过实验我找到了一种简单的解决方法:直接覆盖新的模块。
首先,假如Windows Terminal中也没有最新版的PSReadLine的话,可以运行Install-Module PSReadLine安装最新版本。
安装过程中若有需要信任或同意的选项,信任/同意即可。
然后根据刚刚Get-Module -ListAvailable输出的路径,一样寻常来说是:

  • Windows Terminal模块路径
    1. C:\program files\windowsapps\microsoft.powershell_7.5.0.0_x64__8wekyb3d8bbwe\Modules
    复制代码
  • Windows PowerShell模块路径
    1. C:\Program Files\WindowsPowerShell\Modules
    复制代码
分别打开之后,先关闭全部PowerShell窗口,包罗并不限于Visual Studio中的。
然后删除Windows PowerShell路径下的PSReadLine文件夹,再将Windows Terminal路径下的PSReadLine文件夹复制过来即可。
末了再次打开Visual Studio的终端,可以发现已经支持命令补全了。
注意

不要用此方法更新其他模块,尤其是PowerShellGet、PackageManagement。
因为Windows PowerShell版本较老,可能不支持新版的模块,但目前PSReadLine还没有发现不支持的情况。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

刘俊凯

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表