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