Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek se vztahuje na: ✔️ .NET 6 SDK a novější verze
Tento článek popisuje, jak nakonfigurovat dokončování tabulátoru pro pět prostředí: PowerShell (pwsh), Bash, zsh, fish a nushell. U jiných shellů se podívejte do jejich dokumentace, jak konfigurovat dokončování příkazů.
Nativní skripty pro doplňování shellu (.NET 10+)
Počínaje rozhraním .NET 10 obsahuje .NET CLI nativní skripty pro doplňování prostředí, které běží mnohem rychleji než dynamické dokončování dostupné v dřívějších verzích. Nativní dokončování generuje skripty specifické pro prostředí, které zpracovávají statické části gramatiky rozhraní příkazového řádku přímo v prostředí a poskytují významné zlepšení výkonu.
Generování skriptů pro doplňování
Pomocí příkazu dotnet completions script vygenerujte skript pro doplňování vašeho shellu.
dotnet completions script [SHELL]
Parametr [SHELL] přijímá jednu z následujících hodnot:
bashfishnushellpwshzsh
Pokud nezadáte shell, příkaz odvodí správný shell z vašeho prostředí. Ve Windows se ve výchozím nastavení používá PowerShell (pwsh). V jiných systémech kontroluje, zda název souboru proměnná prostředí SHELL odpovídá některé z podporovaných hodnot shellu.
Možnosti dokončení
Nativní dokončování poskytují různé úrovně podpory v závislosti na příkazovém prostředí.
| Shell | Typ dokončení | Popisy v automatickém dokončování v tabulátoru |
|---|---|---|
| bash | hybridní | Ne |
| ryba | dynamic | Ne |
| NuShell | dynamic | Ne |
| PowerShell | hybridní | Ano |
| zsh | hybridní | Ano |
Typy dokončení:
-
Hybridní: Generuje kód specifický pro prostředí, který rychle zpracovává statické části gramatiky rozhraní příkazového řádku, ale vrátí se k
dotnet completepříkazu pro dynamický obsah (například ID balíčků NuGet). -
Dynamické: Všechna dokončení procházejí příkazem
dotnet complete, což může být pomalejší, ale zajišťuje komplexní pokrytí.
Konfigurace prostředí pro použití nativních dokončování
Přidejte do profilu prostředí příslušný příkaz, který povolí nativní dokončování:
PowerShell
Do profilu PowerShellu přidejte následující řádek ($PROFILE):
dotnet completions script pwsh | Out-String | Invoke-Expression
Bash
Do souboru přidejte následující řádek .bashrc :
eval "$(dotnet completions script bash)"
Zsh
Do souboru přidejte následující řádek .zshrc :
eval "$(dotnet completions script zsh)"
Ryba
Do souboru přidejte následující řádek config.fish :
dotnet completions script fish | source
Nushell
Na začátek config.nu souboru přidejte následující:
dotnet completions script nushell | save -f ~/.local/share/nushell/completions/dotnet.nu
use ~/.local/share/nushell/completions/dotnet.nu *
Skripty dynamického dokončování (všechny verze)
Pro verze .NET starší než .NET 10 nebo pokud dáváte přednost použití dynamických dokončování, můžete prostředí nakonfigurovat tak, aby používalo dotnet complete tento příkaz. Dynamické dokončování funguje odesláním aktuálního příkazového vstupu do dotnet complete příkazu a zpracováním výsledků v shellu.
Po nastavení se doplňování příkazů pomocí klávesy Tab pro rozhraní .NET CLI aktivuje tím, že do příkazového řádku zadáte dotnet příkaz a následně stisknete klávesu Tab. Aktuální příkaz se odešle do dotnet complete příkazu a výsledky zpracovává shell. Výsledky můžete otestovat bez povolení dokončování tabulátoru odesláním něčeho přímo do dotnet complete příkazu. Například:
> dotnet complete "dotnet a"
add
clean
--diagnostics
migrate
pack
Pokud tento příkaz nefunguje, ujistěte se, že je nainstalovaná sada .NET Core 2.0 SDK nebo novější. Pokud je nainstalovaný, ale tento příkaz stále nefunguje, ujistěte se, že se dotnet příkaz přeloží na verzi sady .NET Core 2.0 SDK nebo novější. Použijte příkaz dotnet --version, abyste zjistili, na kterou verzi dotnet se překládá vaše aktuální cesta. Další informace najdete v tématu Výběr verze .NET, která se má použít.
Příklady
Tady je několik příkladů, co poskytuje dokončování tabulátoru:
| Vstup | Stane se | Protože |
|---|---|---|
dotnet a⇥ |
dotnet add |
add je první podpříkaz, abecedně. |
dotnet add p⇥ |
dotnet add --help |
Doplnění pomocí tabulátoru odpovídá podřetězcům a --help je první v abecedním pořadí. |
dotnet add p⇥⇥ |
dotnet add package |
Dalším stisknutím tabulátoru se zobrazí další návrh. |
dotnet package add Microsoft⇥ |
dotnet package add Microsoft.ApplicationInsights.Web |
Výsledky se vrátí abecedně. |
dotnet reference remove ⇥ |
dotnet reference remove ..\..\src\OmniSharp.DotNet\OmniSharp.DotNet.csproj |
Dokončování tabulátoru je soubor projektu s podporou. |
PowerShell
Pokud chcete do PowerShellu přidat dokončování tabulátoru pro .NET CLI, vytvořte nebo upravte profil uložený v proměnné $PROFILE. Další informace najdete v tématu Vytvoření profilu a profilů a zásad spouštění.
Do svého profilu přidejte následující kód:
# 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
Pokud chcete do prostředí Bash pro .NET CLI přidat dokončování tabulátoru , přidejte do .bashrc souboru následující kód:
# 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
Pokud chcete do prostředí zsh pro .NET CLI přidat dokončování tabulátoru, přidejte do .zshrc souboru následující kód:
# 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
ryba
Pokud chcete přidat doplňování tabulátoru do fish shellu pro .NET CLI, přidejte následující kód do souboru config.fish.
complete -f -c dotnet -a "(dotnet complete (commandline -cp))"
NuShell
Pokud chcete do nushellu pro .NET CLI přidat dokončování tabulátoru config.nu , přidejte na začátek souboru následující:
let external_completer = { |spans|
{
dotnet: { ||
dotnet complete (
$spans | skip 1 | str join " "
) | lines
}
} | get $spans.0 | each { || do $in }
}
A pak v záznamu config vyhledejte completions část a přidejte external_completer definovaný dříve do external:
let-env config = {
# your options here
completions: {
# your options here
external: {
# your options here
completer: $external_completer # add it here
}
}
}