Share 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 flikslutningen för .NET CLI utlöses genom att ett dotnet kommando anges i gränssnittet och sedan trycka 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. dotnet --version Använd kommandot för att se vilken version av dotnet din aktuella sökväg som matchar. 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:

Indata 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 add package Microsoft⇥ dotnet add package Microsoft.ApplicationInsights.Web Resultaten returneras alfabetiskt.
dotnet remove reference ⇥ dotnet remove reference ..\..\src\OmniSharp.DotNet\OmniSharp.DotNet.csproj Tabbavslutningen är projektfilmedveten.

PowerShell

Om du vill lägga till tabbar i PowerShell för .NET CLI skapar eller redigerar du profilen som lagras i variabeln $PROFILE. Mer information finns i Så här skapar du din profil och profil och körningsprincip.

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

Lägg till följande kod .bashrc i filen om du vill lägga till tabbavslut i bash-gränssnittet för .NET CLI:

# 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

Lägg till följande kod config.fish i filen om du vill lägga till tabbavslut i fiskskalet för .NET CLI:

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

I posten config letar du upp avsnittet completions och lägger till external_completer det 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
        }
    }
}