Jak włączyć uzupełnianie kart dla interfejsu wiersza polecenia platformy .NET

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

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

Po skonfigurowaniu ukończenie karty dla interfejsu wiersza polecenia platformy .NET jest wyzwalane przez wprowadzenie dotnet polecenia w powłoce, a następnie naciśnięcie klawisza Tab . Bieżący wiersz polecenia jest wysyłany do dotnet complete polecenia, a wyniki są przetwarzane przez powłokę. Wyniki można przetestować bez włączania uzupełniania kart, wysyłając coś bezpośrednio do dotnet complete polecenia. 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 dotnet polecenie jest rozpoznawane jako wersja zestawu .NET Core 2.0 SDK lub nowszego. 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 zapewnia uzupełnianie kart:

Dane wejściowe Staje się Ponieważ
dotnet a⇥ dotnet add add jest pierwszym podpolecenia, alfabetycznie.
dotnet add p⇥ dotnet add --help Uzupełnianie tabulacji pasuje do podciągów i --help jest najpierw alfabetycznie.
dotnet add p⇥⇥ dotnet add package Naciśnięcie klawisza Tab po raz drugi powoduje wyświetlenie następnej sugestii.
dotnet add package Microsoft⇥ dotnet add package Microsoft.ApplicationInsights.Web Wyniki są zwracane alfabetycznie.
dotnet remove reference ⇥ dotnet remove reference ..\..\src\OmniSharp.DotNet\OmniSharp.DotNet.csproj Uzupełnianie kart jest uwzględniane w pliku projektu.

PowerShell

Aby dodać uzupełnianie kart do programu PowerShell dla interfejsu wiersza polecenia platformy .NET, 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 karty do powłoki bash dla interfejsu wiersza polecenia platformy .NET, dodaj następujący kod do .bashrc pliku:

# 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 karty do powłoki zsh dla interfejsu wiersza polecenia platformy .NET, dodaj następujący kod do .zshrc pliku:

# 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

Ryb

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

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

nushell

Aby dodać uzupełnianie karty do programu NuShell dla interfejsu config.nu wiersza polecenia platformy .NET, dodaj następujący 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 zdefiniowaną external_completer wcześniej sekcję do externalelementu :

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