Tabvoltooiing inschakelen voor de .NET CLI
Dit artikel is van toepassing op: ✔️ .NET Core 2.1 SDK en latere versies
In dit artikel wordt beschreven hoe u tabvoltooiing configureert voor vijf shells: PowerShell, Bash, zsh, fish en nushell. Raadpleeg voor andere shells hun documentatie over het configureren van tabvoltooiing.
Zodra de tab is ingesteld, wordt tabvoltooiing voor de .NET CLI geactiveerd door een dotnet
opdracht in de shell in te voeren en vervolgens op de Tab-toets te drukken. De huidige opdrachtregel wordt naar de dotnet complete
opdracht verzonden en de resultaten worden verwerkt door de shell. U kunt de resultaten testen zonder tabvoltooiing in te schakelen door iets rechtstreeks naar de dotnet complete
opdracht te verzenden. Voorbeeld:
> dotnet complete "dotnet a"
add
clean
--diagnostics
migrate
pack
Als deze opdracht niet werkt, controleert u of .NET Core 2.0 SDK of hoger is geïnstalleerd. Als deze is geïnstalleerd, maar deze opdracht nog steeds niet werkt, controleert u of de dotnet
opdracht wordt omgezet in een versie van .NET Core 2.0 SDK of hoger. Gebruik de dotnet --version
opdracht om te zien naar welke versie van dotnet
uw huidige pad wordt omgezet. Zie De .NET-versie selecteren die u wilt gebruiken voor meer informatie.
Voorbeelden
Hier volgen enkele voorbeelden van de voltooiing van tabbladen:
Invoer | Wordt | Omdat |
---|---|---|
dotnet a⇥ |
dotnet add |
add is de eerste subopdracht, alfabetisch. |
dotnet add p⇥ |
dotnet add --help |
Tabvoltooiing komt overeen met subtekenreeksen en --help komt eerst alfabetisch voor. |
dotnet add p⇥⇥ |
dotnet add package |
Als u nogmaals op tab drukt, wordt de volgende suggestie weergegeven. |
dotnet add package Microsoft⇥ |
dotnet add package Microsoft.ApplicationInsights.Web |
Resultaten worden alfabetisch geretourneerd. |
dotnet remove reference ⇥ |
dotnet remove reference ..\..\src\OmniSharp.DotNet\OmniSharp.DotNet.csproj |
Tabvoltooiing is projectbestandsbewust. |
Powershell
Als u tabvoltooiing wilt toevoegen aan PowerShell voor de .NET CLI, maakt of bewerkt u het profiel dat is opgeslagen in de variabele $PROFILE
. Zie Hoe u uw profiel- en profielbeleid en uitvoeringsbeleid maakt voor meer informatie.
Voeg de volgende code toe aan uw profiel:
# 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
Als u tabvoltooiing wilt toevoegen aan uw bash-shell voor de .NET CLI, voegt u de volgende code toe aan uw .bashrc
bestand:
# 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
Als u tabvoltooiing wilt toevoegen aan uw zsh-shell voor de .NET CLI, voegt u de volgende code toe aan uw .zshrc
bestand:
# 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
Vis
Als u tabvoltooiing wilt toevoegen aan uw fish shell voor de .NET CLI, voegt u de volgende code toe aan uw config.fish
bestand:
complete -f -c dotnet -a "(dotnet complete (commandline -cp))"
nushell
Als u tabvoltooiing wilt toevoegen aan uw nushell voor .NET CLI, voegt u het volgende toe aan het begin van het config.nu
bestand:
let external_completer = { |spans|
{
dotnet: { ||
dotnet complete (
$spans | skip 1 | str join " "
) | lines
}
} | get $spans.0 | each { || do $in }
}
Zoek vervolgens in de config
record de completions
sectie en voeg de external_completer
eerder gedefinieerde sectie toe aan external
:
let-env config = {
# your options here
completions: {
# your options here
external: {
# your options here
completer: $external_completer # add it here
}
}
}