Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Dit artikel is van toepassing op: ✔️ .NET 6 SDK en latere versies
In dit artikel wordt beschreven hoe u tabvoltooiing configureert voor vijf shells: PowerShell (pwsh), Bash, zsh, fish en nushell. Raadpleeg voor andere shells hun documentatie over het configureren van tabvoltooiing.
Systeemeigen shell-autocompletiescripts (.NET 10+)
Vanaf .NET 10 bevat de .NET CLI systeemeigen shell-voltooiingsscripts die veel sneller worden uitgevoerd dan de dynamische voltooiingen die beschikbaar zijn in eerdere versies. Systeemeigen voltooiingen genereren shellspecifieke scripts die de statische onderdelen van de CLI-grammatica rechtstreeks in de shell verwerken, wat een aanzienlijke prestatieverbetering biedt.
Voltooiingsscripts genereren
Gebruik de dotnet completions script opdracht om een voltooiingsscript voor uw shell te genereren:
dotnet completions script [SHELL]
De [SHELL] parameter accepteert een van de volgende waarden:
bashfishnushellpwshzsh
Als u geen shell opgeeft, wordt met de opdracht de juiste shell afgeleid uit uw omgeving. In Windows wordt standaard PowerShell (pwsh) gebruikt. Op andere systemen wordt gecontroleerd of de bestandsnaam van de SHELL omgevingsvariabele overeenkomt met een van de ondersteunde shellwaarden.
Voltooiingsmogelijkheden
Systeemeigen voltooiingen bieden verschillende ondersteuningsniveaus, afhankelijk van de shell:
| Shell | Voltooiingstype | Beschrijvingen in tab-aanvullingen |
|---|---|---|
| bash | hybride | Nee. |
| vis | dynamic | Nee. |
| nushell | dynamic | Nee. |
| PowerShell | hybride | Yes |
| zsh | hybride | Yes |
Voltooiingstypen:
-
Hybride: genereert shellspecifieke code die statische onderdelen van de CLI-grammatica snel verwerkt, maar terugvalt naar de
dotnet completeopdracht voor dynamische inhoud (zoals NuGet-pakket-id's). -
Dynamisch: Alle voltooiingen gaan door de
dotnet completeopdracht, wat langzamer kan zijn, maar zorgt voor uitgebreide dekking.
Shells configureren voor het gebruik van systeemeigen voltooiingen
Voeg de juiste opdracht toe aan het profiel van uw shell om systeemeigen voltooiingen in te schakelen:
PowerShell
Voeg de volgende regel toe aan uw PowerShell-profiel ($PROFILE):
dotnet completions script pwsh | Out-String | Invoke-Expression
Bash (een Unix-shell en programmeertaal)
Voeg de volgende regel toe aan uw .bashrc bestand:
eval "$(dotnet completions script bash)"
Zsh
Voeg de volgende regel toe aan uw .zshrc bestand:
eval "$(dotnet completions script zsh)"
Vis
Voeg de volgende regel toe aan uw config.fish bestand:
dotnet completions script fish | source
Nushell
Voeg het volgende toe aan het begin van het config.nu bestand:
dotnet completions script nushell | save -f ~/.local/share/nushell/completions/dotnet.nu
use ~/.local/share/nushell/completions/dotnet.nu *
Scripts voor dynamische voltooiing (alle versies)
Voor .NET-versies vóór .NET 10 of als u dynamische voltooiingen wilt gebruiken, kunt u de shell configureren voor gebruik van de dotnet complete opdracht. Dynamische voltooiingen werken door de huidige opdrachtregel naar de dotnet complete opdracht te verzenden en de resultaten in de shell te verwerken.
Nadat de instelling is voltooid, wordt tab-aanvulling 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 |
Tab-completie matcht met subtekens en --help komt eerst alfabetisch. |
dotnet add p⇥⇥ |
dotnet add package |
Als u nogmaals op tab drukt, wordt de volgende suggestie weergegeven. |
dotnet package add Microsoft⇥ |
dotnet package add Microsoft.ApplicationInsights.Web |
Resultaten worden alfabetisch geretourneerd. |
dotnet reference remove ⇥ |
dotnet reference remove ..\..\src\OmniSharp.DotNet\OmniSharp.DotNet.csproj |
Tabvoltooiing herkent projectbestanden. |
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. Voor meer informatie, zie Hoe u uw profiel maakt en Profielen en uitvoeringsbeleid.
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
}
}
}