如何為 .NET Core CLI 啟用 TAB 自動補全功能
Intro
在 Linux 下經常可以發現有些目錄/文件名,以及有些工具可以命令輸入幾個字母之后按 TAB 自動補全,最近發現其實 dotnet cli 也可以,從.NET Core 2.0 SDK 開始,NET Core CLI 支持 tab 自動補全。你如果已經裝了 dotnet Core Sdk,但是不知道版本,可以在命令行中輸入 dotnet --info
來查看版本信息。
使用示例
下面是 tab 自動補全提供的一些示例:
輸入 | 將變為 | 因為 |
---|---|---|
dotnet a⇥ |
dotnet add |
add 是第一項子命令,按字母排序。 |
dotnet add p⇥ |
dotnet add --help |
Tab 自動補全匹配子字符串,--help 首先按字母順序排列。 |
dotnet add p⇥⇥ |
dotnet add package |
第二次按 Tab 將顯示下一條建議。 |
dotnet add package Microsoft⇥ |
dotnet add package Microsoft.ApplicationInsights.Web |
結果按字母順序返回。 |
dotnet remove reference ⇥ |
dotnet remove reference ..\..\src\OmniSharp.DotNet\OmniSharp.DotNet.csproj |
Tab 自動補全是可識別的項目文件。 |
啟動 TAB 自動補全功能
Powershell
要將 tab 自動補全添加到適用於 .NET Core CLI 的 PowerShell,請創建或編輯存儲在變量 $PROFILE
中的配置文件。 有關詳細信息,請參閱如何創建配置文件和配置文件和執行策略。
在 Powershell 中執行 notepad $profile
命令,會打開 $profile
配置文件,如果不能保存請嘗試用管理員模式的powershell中執行。
將以下代碼添加到配置文件中:
# PowerShell parameter completion shim for the dotnet CLI
Register-ArgumentCompleter -Native -CommandName dotnet -ScriptBlock {
param($commandName, $wordToComplete, $cursorPosition)
dotnet complete --position $cursorPosition "$wordToComplete" | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
}
}
如果想看 $profile
配置文件,可以打開 %USERPROFILE%\Documents\WindowsPowerShell
目錄,
在這個目錄下會有一個 Microsoft.PowerShellISE_profile.ps1
的文件,這就是上面的配置文件
Bash
要將 tab 自動補全添加到適用於 .NET Core CLI 的 bash shell,請將以下代碼添加到 .bashrc
文件:
vi ~/.bashrc
# bash parameter completion for the dotnet CLI
_dotnet_bash_complete()
{
local word=${COMP_WORDS[COMP_CWORD]}
local completions
completions="$(dotnet complete --position "${COMP_POINT}" "${COMP_LINE}")"
COMPREPLY=( $(compgen -W "$completions" -- "$word") )
}
complete -f -F _dotnet_bash_complete dotnet
使用一下
實際使用的效果就如上面的示例一般,如輸入一個 dotnet a
,然后按一下 TAB 鍵,命令就會自動補充為 dotnet add
,其他的命令就自己去嘗試一下吧~~
如此好用的功能還不快快啟用~