Udostępnij za pomocą


Jak włączyć uzupełnianie poleceń dla interfejsu wiersza polecenia .NET

Ten artykuł dotyczy: ✔️ zestaw .NET 6 SDK i nowsze wersje

W tym artykule opisano sposób konfigurowania uzupełniania poleceń dla pięciu powłok: PowerShell (pwsh), Bash, zsh, fish i nushell. W przypadku innych powłok, zapoznaj się z dokumentacją dotyczącą konfigurowania dopełniania tabulatorem.

Skrypty uzupełniania powłoki natywnej (.NET 10+)

Począwszy od wersji .NET 10, CLI .NET zawiera natywne skrypty dopełniania powłoki, które działają znacznie szybciej niż dynamiczne dopełniania dostępne we wcześniejszych wersjach. Natywne automatyczne uzupełnienia generują skrypty dostosowane do powłoki, które obsługują statyczne części gramatyki CLI (interfejsu wiersza polecenia) bezpośrednio w powłoce. Zapewnia to znaczną poprawę wydajności.

Generowanie skryptów uzupełniania

Użyj polecenia , dotnet completions script aby wygenerować skrypt ukończenia dla powłoki:

dotnet completions script [SHELL]

Parametr [SHELL] akceptuje jedną z następujących wartości:

  • bash
  • fish
  • nushell
  • pwsh
  • zsh

Jeśli nie określisz powłoki, polecenie wywnioskuje poprawną powłokę ze środowiska. W systemie Windows wartość domyślna to PowerShell (pwsh). W innych systemach sprawdza, czy nazwa SHELL pliku zmiennej środowiskowej jest zgodna z dowolnymi obsługiwanymi wartościami powłoki.

Możliwości uzupełniania

Uzupełnienia natywne zapewniają różne poziomy obsługi w zależności od powłoki:

Shell Typ ukończenia Opisy w uzupełnieniach zakładek
bash hybryda Nie.
ryba dynamic Nie.
nushell dynamic Nie.
PowerShell hybryda Tak
zsh hybryda Tak

Typy uzupełniania:

  • Hybrid: generuje kod specyficzny dla shell, który szybko obsługuje statyczne części gramatyki CLI, ale przełącza się z powrotem na dotnet complete polecenie dla dynamicznej zawartości (np. identyfikatorów pakietów NuGet).
  • Dynamiczny: wszystkie uzupełnienia przechodzą przez dotnet complete polecenie, co może być wolniejsze, ale zapewnia kompleksowe pokrycie.

Konfiguracja powłok w celu wykorzystania uzupełniania natywnego

Dodaj odpowiednie polecenie do profilu powłoki, aby włączyć funkcję natywnego uzupełniania:

PowerShell

Dodaj następujący wiersz do profilu programu PowerShell ($PROFILE):

dotnet completions script pwsh | Out-String | Invoke-Expression

Bash

Dodaj następujący wiersz do .bashrc pliku:

eval "$(dotnet completions script bash)"

Zsh

Dodaj następujący wiersz do .zshrc pliku:

eval "$(dotnet completions script zsh)"

Ryba

Dodaj następujący wiersz do config.fish pliku:

dotnet completions script fish | source

NuShell

Dodaj następujące elementy na początku config.nu pliku:

dotnet completions script nushell | save -f ~/.local/share/nushell/completions/dotnet.nu
use ~/.local/share/nushell/completions/dotnet.nu *

Skrypty uzupełniania dynamicznego (wszystkie wersje)

pl-PL: W przypadku wersji platformy .NET wcześniejszych niż .NET 10 lub jeśli wolisz używać uzupełniania dynamicznego, możesz skonfigurować powłokę tak, aby korzystała z polecenia dotnet complete. Ukończenia dynamiczne działają poprzez wysyłanie bieżącego wiersza polecenia do polecenia dotnet complete i przetwarzanie wyników w powłoce.

Po skonfigurowaniu uzupełnianie poleceń po naciśnięciu Tab w interfejsie wiersza poleceń .NET jest wyzwalane przez wprowadzenie polecenia dotnet w powłoce, a następnie naciśnięcie Tab. Bieżący wiersz polecenia jest wysyłany do polecenia dotnet complete, a wyniki są przetwarzane przez powłokę. Można przetestować wyniki bez włączania uzupełniania poleceń z użyciem klawisza Tab, wysyłając coś bezpośrednio do polecenia dotnet complete. Na przykład:

> dotnet complete "dotnet a"
add
clean
--diagnostics
migrate
pack

Jeśli to polecenie nie działa, upewnij się, że jest zainstalowany zestaw .NET Core 2.0 SDK lub nowszy. Jeśli jest on zainstalowany, ale to polecenie nadal nie działa, upewnij się, że polecenie dotnet odnosi się do pakietu .NET Core SDK w wersji 2.0 lub nowszej. dotnet --version Użyj polecenia , aby zobaczyć, jaka wersja bieżącej dotnet ścieżki jest rozpoznawana. Aby uzyskać więcej informacji, zobacz Wybieranie wersji platformy .NET do użycia.

Przykłady

Oto kilka przykładów tego, co oferuje uzupełnianie za pomocą Tab:

Dane wejściowe Staje się Ponieważ
dotnet a⇥ dotnet add add jest pierwszym podpoleceniem, alfabetycznie.
dotnet add p⇥ dotnet add --help Uzupełnianie przy pomocy tabulatora dopasowuje podciągi, a --help jest pierwsze w porządku alfabetycznym.
dotnet add p⇥⇥ dotnet add package Naciśnięcie Tab po raz drugi powoduje wyświetlenie następnej sugestii.
dotnet package add Microsoft⇥ dotnet package add Microsoft.ApplicationInsights.Web Wyniki są zwracane alfabetycznie.
dotnet reference remove ⇥ dotnet reference remove ..\..\src\OmniSharp.DotNet\OmniSharp.DotNet.csproj Uzupełnianie kart jest uwzględniane w pliku projektu.

PowerShell

Aby dodać uzupełnianie poleceń do programu PowerShell dla .NET CLI, utwórz lub edytuj profil przechowywany w zmiennej $PROFILE. Aby uzyskać więcej informacji, zobacz Jak utworzyć profil i Profile i Zasady Wykonywania.

Dodaj następujący kod do profilu:

# 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

Aby dodać uzupełnianie poleceń do powłoki bash dla CLI platformy .NET, dodaj następujący kod do pliku .bashrc.

# 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

Aby dodać uzupełnianie poleceń za pomocą klawisza Tab do powłoki zsh dla .NET CLI, dodaj następujący kod do pliku .zshrc.

# 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

Aby dodać uzupełnianie poleceń do powłoki fish dla interfejsu wiersza polecenia platformy .NET, dodaj następujący kod do pliku config.fish.

complete -f -c dotnet -a "(dotnet complete (commandline -cp))"

nushell

Aby dodać automatyczne uzupełnianie do programu NuShell dla platformy .NET CLI, dodaj poniższy kod na początku pliku:

let external_completer = { |spans|
    {
        dotnet: { ||
            dotnet complete (
                $spans | skip 1 | str join " "
            ) | lines
        }
    } | get $spans.0 | each { || do $in }
}

Następnie w rekordzie config znajdź sekcję completions i dodaj wcześniej zdefiniowaną external_completer do elementu external:

let-env config = {
    # your options here
    completions: {
        # your options here
        external: {
            # your options here
            completer: $external_completer # add it here
        }
    }
}