问题描述
Windows下的原生powershell没有自动补全的功能,用着很不舒服,故此提供一个根据历史输入补全,以及git TAP自动补全的功能。具体效果如下:
- TAP自动补全路径和git命令
- 方向键补全历史输入
- 全局变量的自动补全
解决方案
安装oh-my-posh, posh-git 和 Readline
用管理员身份打开powershell,运行以下命令
Install-Module -Name PowerShellGet -Force
winget install JanDeDobbeleer.OhMyPosh -s winget
PowerShellGet\Install-Module posh-git -Scope CurrentUser -Force
Install-Module PSReadLine
修改配置
首先用记事本打开powershell的配置文件,如果没有配置文件该命令会自动生成
notepad.exe $PROFILE
然后在文件中加入下列内容并保存
#Tab键会出现自动补全菜单
Set-PSReadLineKeyHandler -Key Tab -Function MenuComplete
# 上下方向键箭头,搜索历史中进行自动补全
Set-PSReadlineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadlineKeyHandler -Key DownArrow -Function HistorySearchForward
# git的自动补全
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/jandedobbeleer.omp.json" | Invoke-Expression
Import-Module posh-git
到此为止以及完成的powershell的自动补齐的部署
但是oh-my-posh的默认主题我不是很喜欢,故此提供修改主题的方法
主题修改
oh-my-posh已经预装了许多的主题,可以通过修改配置的方式来修改主题,这个网站 中含有预装主题的在线预览。这些主题可以在以下目录中找到
C:\Users\<UserName>\AppData\Local\Programs\oh-my-posh\themes
选中中意的主题后打开配置文件
notepad.exe $PROFILE
在配置文件中添加
# 设置默认主题
oh-my-posh init pwsh --config $env:POSH_THEMES_PATH\sonicboom_light.omp.json | Invoke-Expression
其中,sonicboom_light.omp.json
可以变换。
版本信息
软件 | 版本 |
---|---|
操作系统 | windows11 22H2 |
powershell | 5.1.22621.1037 |
oh-my-posh | v14 |
PSReadLine | 2.2.6 |
posh-git | 1.1.0 |