如何為 .NET CLI 啟用 Tab 鍵自動完成
本文適用於: ✔️ .NET Core 2.1 SDK 與更新版本
本文描述如何為五個殼層設定 Tab 鍵自動完成:PowerShell、Bash、zsh、fish 和 nushell。 針對其他殼層,請參閱其有關如何設定 Tab 鍵自動完成的文件。
設定後,只要在殼層中輸入 dotnet
命令,然後按 Tab 鍵,即會觸發 .NET CLI 的 Tab 鍵自動完成。 目前的命令列會傳送至 dotnet complete
命令,並由殼層處理結果。 您可以直接傳送某些內容至 dotnet complete
命令來測試結果,而不啟用 tab 鍵自動完成。 例如:
> dotnet complete "dotnet a"
add
clean
--diagnostics
migrate
pack
如果該命令無法運作,請確定已安裝 .NET Core 2.0 SDK 或更新版本。 如果已安裝,但該命令仍無法運作,請確定 dotnet
命令會解析為 .NET Core 2.0 SDK 版本或更新版本。 使用 dotnet --version
命令來查看目前路徑將解析為哪個 dotnet
版本。 如需詳細資訊,請參閱選取要使用的 .NET 版本。
範例
以下是 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 鍵自動完成會感知專案檔。 |
PowerShell
如果要將 Tab 鍵自動完成新增到 .NET CLI 的 PowerShell,請建立或編輯儲存在變數 $PROFILE
中的設定檔。 如需詳細資訊,請參閱如何建立設定檔和設定檔與執行原則。
將下列程式碼新增至您的設定檔:
# PowerShell parameter completion shim for the dotnet CLI
Register-ArgumentCompleter -Native -CommandName dotnet -ScriptBlock {
param($wordToComplete, $commandAst, $cursorPosition)
dotnet complete --position $cursorPosition "$commandAst" | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
}
}
Bash
如果要將 Tab 鍵自動完成新增到 .NET CLI 的 bash 殼層,請將下列程式碼新增到您的 .bashrc
檔案:
# bash parameter completion for the dotnet CLI
function _dotnet_bash_complete()
{
local cur="${COMP_WORDS[COMP_CWORD]}" IFS=$'\n' # On Windows you may need to use use IFS=$'\r\n'
local candidates
read -d '' -ra candidates < <(dotnet complete --position "${COMP_POINT}" "${COMP_LINE}" 2>/dev/null)
read -d '' -ra COMPREPLY < <(compgen -W "${candidates[*]:-}" -- "$cur")
}
complete -f -F _dotnet_bash_complete dotnet
zsh
如果要將 Tab 鍵自動完成新增到 .NET CLI 的 zsh 殼層,請將下列程式碼新增到您的 .zshrc
檔案:
# zsh parameter completion for the dotnet CLI
_dotnet_zsh_complete()
{
local completions=("$(dotnet complete "$words")")
# If the completion list is empty, just continue with filename selection
if [ -z "$completions" ]
then
_arguments '*::arguments: _normal'
return
fi
# This is not a variable assignment, don't remove spaces!
_values = "${(ps:\n:)completions}"
}
compdef _dotnet_zsh_complete dotnet
fish
如果要將 Tab 鍵自動完成新增到 .NET CLI 的 fish 殼層,請將下列程式碼新增到您的 config.fish
檔案:
complete -f -c dotnet -a "(dotnet complete (commandline -cp))"
nushell
如果要將 Tab 鍵自動完成新增到 .NET CLI 的 nushell,請將下列程式碼新增到您的 config.nu
檔案開頭:
let external_completer = { |spans|
{
dotnet: { ||
dotnet complete (
$spans | skip 1 | str join " "
) | lines
}
} | get $spans.0 | each { || do $in }
}
然後在 config
記錄中,找到 completions
區段,並將先前定義的 external_completer
新增到 external
:
let-env config = {
# your options here
completions: {
# your options here
external: {
# your options here
completer: $external_completer # add it here
}
}
}