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
        }
    }
}