Delen via


Tabvoltooiing inschakelen voor de .NET CLI

Dit artikel is van toepassing op: ✔️ .NET Core 2.1 SDK en latere versies

In dit artikel wordt beschreven hoe u tabvoltooiing configureert voor vijf shells: PowerShell, Bash, zsh, fish en nushell. Raadpleeg voor andere shells hun documentatie over het configureren van tabvoltooiing.

Nadat de instelling is voltooid, wordt tab-aanvulling voor de .NET CLI geactiveerd door een dotnet opdracht in de shell in te voeren en vervolgens op de Tab-toets te drukken. De huidige opdrachtregel wordt naar de dotnet complete opdracht verzonden en de resultaten worden verwerkt door de shell. U kunt de resultaten testen zonder tabvoltooiing in te schakelen door iets rechtstreeks naar de dotnet complete opdracht te verzenden. Voorbeeld:

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

Als deze opdracht niet werkt, controleert u of .NET Core 2.0 SDK of hoger is geïnstalleerd. Als deze is geïnstalleerd, maar deze opdracht nog steeds niet werkt, controleert u of de dotnet opdracht wordt omgezet in een versie van .NET Core 2.0 SDK of hoger. Gebruik de dotnet --version opdracht om te zien naar welke versie van dotnet uw huidige pad wordt omgezet. Zie De .NET-versie selecteren die u wilt gebruiken voor meer informatie.

Voorbeelden

Hier volgen enkele voorbeelden van de voltooiing van tabbladen:

Invoer Wordt Omdat
dotnet a⇥ dotnet add add is de eerste subopdracht, alfabetisch.
dotnet add p⇥ dotnet add --help Tab-completie matcht met subtekens en --help komt eerst alfabetisch.
dotnet add p⇥⇥ dotnet add package Als u nogmaals op tab drukt, wordt de volgende suggestie weergegeven.
dotnet package add Microsoft⇥ dotnet package add Microsoft.ApplicationInsights.Web Resultaten worden alfabetisch geretourneerd.
dotnet reference remove ⇥ dotnet reference remove ..\..\src\OmniSharp.DotNet\OmniSharp.DotNet.csproj Tabvoltooiing herkent projectbestanden.

PowerShell

Als u tabvoltooiing wilt toevoegen aan PowerShell voor de .NET CLI, maakt of bewerkt u het profiel dat is opgeslagen in de variabele $PROFILE. Voor meer informatie, zie Hoe u uw profiel maakt en Profielen en uitvoeringsbeleid.

Voeg de volgende code toe aan uw profiel:

# 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

Als u tabvoltooiing wilt toevoegen aan uw bash-shell voor de .NET CLI, voegt u de volgende code toe aan uw .bashrc bestand:

# 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

Als u tabvoltooiing wilt toevoegen aan uw zsh-shell voor de .NET CLI, voegt u de volgende code toe aan uw .zshrc bestand:

# 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

vis

Als u tabvoltooiing wilt toevoegen aan uw fish shell voor de .NET CLI, voegt u de volgende code toe aan uw config.fish bestand:

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

nushell

Als u tabvoltooiing wilt toevoegen aan uw nushell voor .NET CLI, voegt u het volgende toe aan het begin van het config.nu bestand:

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

Zoek vervolgens in de config record de completions sectie en voeg de external_completer eerder gedefinieerde sectie toe aan external:

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