Jak povolit dokončování tabulátoru pro rozhraní příkazového řádku .NET
Tento článek se vztahuje na: ✔️ .NET Core 2.1 SDK a novější verze
Tento článek popisuje, jak nakonfigurovat dokončování tabulátoru pro pět prostředí: PowerShell, Bash, zsh, fish a nushell. Další prostředí najdete v dokumentaci ke konfiguraci dokončování tabulátoru.
Po nastavení se dokončení tabulátoru pro rozhraní příkazového řádku .NET aktivuje zadáním dotnet
příkazu do prostředí a následným stisknutím klávesy Tab . Aktuální příkazový řádek se odešle do dotnet complete
příkazu a výsledky jsou zpracovány prostředím. Výsledky můžete otestovat bez povolení dokončování tabulátoru odesláním něčeho přímo do dotnet complete
příkazu. Pří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ší. dotnet --version
Pomocí příkazu zjistíte, na jakou verzi dotnet
aktuální cesty se přeloží. 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 |
Dokončování tabulátoru odpovídá podřetěděným řetězcům a --help přichází jako první abecední. |
dotnet add p⇥⇥ |
dotnet add package |
Dalším stisknutím tabulátoru se zobrazí další návrh. |
dotnet add package Microsoft⇥ |
dotnet add package Microsoft.ApplicationInsights.Web |
Výsledky se vrátí abecedně. |
dotnet remove reference ⇥ |
dotnet remove reference ..\..\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
Ryby
Pokud chcete přidat doplňování tabulátoru do rybího shellu pro .NET CLI, přidejte do config.fish
souboru následující kód:
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
oddíl a přidejte external_completer
dříve definovaný oddíl do external
:
let-env config = {
# your options here
completions: {
# your options here
external: {
# your options here
completer: $external_completer # add it here
}
}
}