Comment activer la saisie semi-automatique via la touche TAB pour l’interface CLI .NET

Cet article s’applique à : ✔️ SDK .NET Core 2.1 et versions ultérieures

Cet article explique comment configurer la saisie semi-automatique via la touche TAB pour cinq interpréteurs de commandes : PowerShell, Bash, zsh, fish et nushell. Pour d’autres interpréteurs de commandes, reportez-vous à leur documentation sur la configuration de la saisie semi-automatique via la touche TAB.

Une fois activée, la saisie semi-automatique via la touche TAB dans l’interface CLI .NET Core se déclenche en tapant une commande dotnet dans l’interpréteur de commandes, puis en appuyant sur la touche Tab. La ligne de commande actuelle est envoyée à la commande dotnet complete, et les résultats sont traités par votre interpréteur de commandes. Vous pouvez tester les résultats sans activer la saisie semi-automatique via la touche TAB en envoyant une instruction directement à la commande dotnet complete. Par exemple :

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

Si cette commande ne fonctionne pas, vérifiez que le kit SDK .NET Core 2.0 ou version ultérieure est installée. S’il est installé mais que cette commande ne fonctionne toujours pas, vérifiez que la commande dotnet correspond à la version 2.0 ou ultérieure du SDK .NET Core. Utilisez la commande dotnet --version pour afficher la version de dotnet correspondant à votre chemin d’accès actuel. Pour plus d’informations, consultez Sélectionner la version .NET Core à utiliser.

Exemples

Voici quelques exemples de saisie semi-automatique via la touche TAB :

Entrée devient car
dotnet a⇥ dotnet add add est la première sous-commande, par ordre alphabétique.
dotnet add p⇥ dotnet add --help La saisie semi-automatique renvoie des sous-chaînes et --help s’affiche en premier, par ordre alphabétique.
dotnet add p⇥⇥ dotnet add package Une seconde pression sur la touche TAB fait apparaître la suggestion suivante.
dotnet add package Microsoft⇥ dotnet add package Microsoft.ApplicationInsights.Web Les résultats s’affichent par ordre alphabétique.
dotnet remove reference ⇥ dotnet remove reference ..\..\src\OmniSharp.DotNet\OmniSharp.DotNet.csproj La saisie semi-automatique via la touche TAB tient compte du fichier de projet.

PowerShell

Pour ajouter la saisie semi-automatique via la touche TAB à PowerShell pour l’interface CLI .NET Core, créez ou modifiez le profil stocké dans la variable $PROFILE. Pour plus d’informations, consultez Création de votre profil et Profils et stratégie d’exécution.

Ajoutez le code suivant à votre 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

Pour ajouter la saisie semi-automatique via la touche TAB à votre interpréteur de commandes bash pour l’interface CLI .NET, ajoutez le code suivant à votre fichier .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

Pour ajouter la saisie semi-automatique via la touche TAB à votre interpréteur de commandes zsh pour l’interface CLI .NET, ajoutez le code suivant à votre fichier .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

poisson

Pour ajouter la saisie semi-automatique via la touche TAB à votre interpréteur de commandes fish pour l’interface CLI .NET, ajoutez le code suivant à votre fichier config.fish :

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

nushell

Pour ajouter la saisie semi-automatique via la touche TAB à votre nushell pour l’interface CLI .NET, ajoutez le code suivant au début de votre fichier config.nu :

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

Puis, dans l’enregistrement config, recherchez la section completions et ajoutez la valeur external_completer définie précédemment à external :

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