Condividi tramite


Come abilitare il completamento tramite TAB per l'interfaccia della riga di comando di .NET

Questo articolo si applica a: ✔️ .NET Core 2.1 SDK e versioni successive

Questo articolo descrive come configurare il completamento tramite TAB per cinque shell: PowerShell, Bash, zsh, fish e nushell. Per altre shell, vedere la relativa documentazione su come configurare il completamento tramite TAB.

Dopo la configurazione, il completamento tramite TAB per l'interfaccia della riga di comando di .NET può essere attivato immettendo un comando dotnet nella shell e quindi premendo il tasto TAB. La riga di comando corrente viene inviata al comando dotnet complete e i risultati vengono elaborati dalla shell. Per testare i risultati senza abilitazione del completamento tramite TAB, inviare direttamente un elemento al comando dotnet complete. Ad esempio:

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

Se questo comando non funziona, assicurarsi che sia installato .NET Core 2.0 SDK o versioni successive. Se è installata la versione appropriata ma il comando non funziona, assicurarsi che il comando dotnet venga risolto in .NET Core 2.0 SDK o una versione successiva. Usare il comando dotnet --version per verificare la versione di dotnet in cui risolve il percorso corrente. Per altre informazioni, vedere Selezionare la versione di .NET da usare.

Esempi

Gli esempi seguenti visualizzano risultati del completamento tramite TAB:

Input diventa perché
dotnet a⇥ dotnet add add è il primo sottocomando in ordine alfabetico.
dotnet add p⇥ dotnet add --help Il completamento tramite TAB rileva la corrispondenza delle sottostringhe e --help viene per prima in ordine alfabetico.
dotnet add p⇥⇥ dotnet add package Se si preme TAB una seconda volta, viene visualizzato il suggerimento successivo.
dotnet add package Microsoft⇥ dotnet add package Microsoft.ApplicationInsights.Web I risultati vengono restituiti in ordine alfabetico.
dotnet remove reference ⇥ dotnet remove reference ..\..\src\OmniSharp.DotNet\OmniSharp.DotNet.csproj Il completamento tramite TAB è compatibile con i file di progetto.

PowerShell

Per aggiungere il completamento tramite TAB a PowerShell per l'interfaccia della riga di comando di .NET, creare o modificare il profilo memorizzato nella variabile $PROFILE. Per altre informazioni, vedere How to create your profile (Come creare un profilo) e Profiles and execution policy (Profili e criteri di esecuzione).

Aggiungere il codice seguente al profilo:

# 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

Per aggiungere il completamento tramite TAB alla shell bash per l'interfaccia della riga di comando di .NET, aggiungere il codice seguente al file .bashrc:

# 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

Per aggiungere il completamento tramite TAB alla shell zsh per l'interfaccia della riga di comando di .NET, aggiungere il codice seguente al file .zshrc:

# 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

fish

Per aggiungere il completamento tramite TAB alla shell fish per l'interfaccia della riga di comando di .NET, aggiungere il codice seguente al file config.fish:

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

nushell

Per aggiungere il completamento tramite TAB alla shell nushell per l'interfaccia della riga di comando di .NET, aggiungere il codice seguente al file config.nu:

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

Quindi, nel record config individuare la sezione completions e aggiungere external_completer definito in precedenza a external:

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