Sdílet prostřednictvím


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. U jiných shellů se podívejte do jejich dokumentace, jak konfigurovat dokončování příkazů.

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