Dela via


Så här aktiverar du flikslutsättning för .NET CLI

Den här artikeln gäller för: ✔️ .NET Core 2.1 SDK och senare versioner

Den här artikeln beskriver hur du konfigurerar flikkomplettering för fem skal: PowerShell, Bash, zsh, fisk och nushell. För andra gränssnitt kan du läsa deras dokumentation om hur du konfigurerar tabbavslut.

När du har konfigurerat, aktiveras flikkomplettering för .NET CLI genom att ange ett dotnet-kommando i gränssnittet och sedan trycker du på tabbtangenten. Den aktuella kommandoraden dotnet complete skickas till kommandot och resultatet bearbetas av gränssnittet. Du kan testa resultaten utan att aktivera flikavslut genom att skicka något direkt till dotnet complete kommandot. Till exempel:

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

Om kommandot inte fungerar kontrollerar du att .NET Core 2.0 SDK eller senare är installerat. Om det är installerat men kommandot fortfarande inte fungerar kontrollerar du att dotnet kommandot matchar en version av .NET Core 2.0 SDK eller senare. Använd kommandot dotnet --version för att se vilken version av dotnet din aktuella sökväg resulterar i. Mer information finns i Välj den .NET-version som ska användas.

Exempel

Här följer några exempel på vad flikavslutningen ger:

Input Blir Eftersom
dotnet a⇥ dotnet add add är den första underkommandot, alfabetiskt.
dotnet add p⇥ dotnet add --help Tabbavslut matchar delsträngar och --help kommer först alfabetiskt.
dotnet add p⇥⇥ dotnet add package Om du trycker på fliken en andra gång visas nästa förslag.
dotnet package add Microsoft⇥ dotnet package add Microsoft.ApplicationInsights.Web Resultaten returneras alfabetiskt.
dotnet reference remove ⇥ dotnet reference remove ..\..\src\OmniSharp.DotNet\OmniSharp.DotNet.csproj Tabbavslutningen är projektfilmedveten.

PowerShell

För att lägga till flikkomplettering i PowerShell för .NET CLI, måste du skapa eller redigera profilen som lagras i variabeln $PROFILE. För mer information, se Så här skapar du din profil och Profiler och körningsprinciper.

Lägg till följande kod i din profil:

# 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

För att lägga till tabbkomplettering till ditt bash-gränssnitt för .NET CLI, lägg till följande kod i din .bashrc-fil:

# 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

Om du vill lägga till flikslut i zsh-gränssnittet för .NET CLI lägger du till följande kod i .zshrc filen:

# 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

fisk

För att lägga till kommandotab-funktionalitet i din fiskskal för .NET CLI, lägg till följande kod i din config.fish-fil:

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

nushell

Om du vill lägga till tabbavslut i ditt nushell för .NET CLI lägger du till följande i början av config.nu filen:

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

Och sedan i posten config letar du upp avsnittet completions och lägger till external_completer som definierades tidigare i external:

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