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.

Zodra de tab is ingesteld, wordt tabvoltooiing 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 Tabvoltooiing komt overeen met subtekenreeksen en --help komt eerst alfabetisch voor.
dotnet add p⇥⇥ dotnet add package Als u nogmaals op tab drukt, wordt de volgende suggestie weergegeven.
dotnet add package Microsoft⇥ dotnet add package Microsoft.ApplicationInsights.Web Resultaten worden alfabetisch geretourneerd.
dotnet remove reference ⇥ dotnet remove reference ..\..\src\OmniSharp.DotNet\OmniSharp.DotNet.csproj Tabvoltooiing is projectbestandsbewust.

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. Zie Hoe u uw profiel- en profielbeleid en uitvoeringsbeleid maakt voor meer informatie.

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