Partager via


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

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

Cet article explique comment configurer la complétion de commande au moyen de la touche Tab pour cinq shells : PowerShell (pwsh), 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.

Scripts de complétion native pour l'interpréteur de commandes (.NET 10+)

À compter de .NET 10, l’interface CLI .NET inclut des scripts d’achèvement d’interpréteur de commandes natifs qui s’exécutent beaucoup plus rapidement que les achèvements dynamiques disponibles dans les versions antérieures. Les achèvements natifs génèrent des scripts spécifiques à l’interpréteur de commandes qui gèrent les parties statiques de la grammaire CLI directement dans l’interpréteur de commandes, ce qui offre une amélioration significative des performances.

Générer des scripts d’achèvement

Utilisez la dotnet completions script commande pour générer un script d’achèvement pour votre interpréteur de commandes :

dotnet completions script [SHELL]

Le [SHELL] paramètre accepte l’une des valeurs suivantes :

  • bash
  • fish
  • nushell
  • pwsh
  • zsh

Si vous ne spécifiez pas d’interpréteur de commandes, la commande déduit l’interpréteur de commandes approprié à partir de votre environnement. Sur Windows, il est défini par défaut sur PowerShell (pwsh). Sur d’autres systèmes, il vérifie si le nom de fichier de la SHELL variable d’environnement correspond à l’une des valeurs d’interpréteur de commandes prises en charge.

Fonctionnalités de complétion

Les complétions natives fournissent différents niveaux de support en fonction de l'interpréteur de commandes.

Shell Type d’achèvement Descriptions dans les saisies semi-automatiques d’onglets
bash hybride Non
poisson dynamic Non
nushell dynamic Non
PowerShell hybride Oui
zsh hybride Oui

Types d’achèvement :

  • Hybride : génère du code spécifique à l’interpréteur de commandes qui gère rapidement les parties statiques de la grammaire CLI, mais revient à la commande dotnet complete pour le contenu dynamique (par exemple, les ID de package NuGet).
  • Dynamique : toutes les achèvements passent par la dotnet complete commande, ce qui peut être plus lent, mais garantit une couverture complète.

Configurer des interpréteurs de commandes pour utiliser des complétions natives

Ajoutez la commande appropriée au profil de votre shell pour activer les complétions natives :

PowerShell

Ajoutez la ligne suivante à votre profil PowerShell ($PROFILE) :

dotnet completions script pwsh | Out-String | Invoke-Expression

Bash

Ajoutez la ligne suivante à votre .bashrc fichier :

eval "$(dotnet completions script bash)"

Zsh

Ajoutez la ligne suivante à votre .zshrc fichier :

eval "$(dotnet completions script zsh)"

Fish

Ajoutez la ligne suivante à votre config.fish fichier :

dotnet completions script fish | source

Nushell

Ajoutez ce qui suit au début de votre config.nu fichier :

dotnet completions script nushell | save -f ~/.local/share/nushell/completions/dotnet.nu
use ~/.local/share/nushell/completions/dotnet.nu *

Scripts d’achèvement dynamique (toutes les versions)

Pour les versions .NET antérieures à .NET 10, ou si vous préférez utiliser des saisies semi-automatiques dynamiques, vous pouvez configurer votre interpréteur de commandes pour utiliser la commande dotnet complete. Les achèvements dynamiques fonctionnent en envoyant la ligne de commande actuelle à la dotnet complete commande et en traitant les résultats dans l’interpréteur de commandes.

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 dotnet complete commande et les résultats sont traités par l’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, assurez-vous que le Kit de développement logiciel (SDK) .NET Core 2.0 ou version ultérieure est installé. S'il est installé mais que cette commande ne fonctionne toujours pas, assurez-vous que la commande dotnet renvoie à une version de .NET Core 2.0 SDK ou ultérieure. 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 à utiliser.

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, puis redémarrez PowerShell :

# 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 complétion de tabulation à votre CLI nushell for .NET, ajoutez ce qui suit 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 completions section et ajoutez celle external_completer qui a été 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
        }
    }
}

Exemples de complétion

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

Entrée Devient Parce que
dotnet a⇥ dotnet add add est la première sous-commande, par ordre alphabétique.
dotnet add p⇥ dotnet add --help La complétion par tabulation correspond aux sous-chaînes, et --help vient en premier dans l'ordre alphabétique.
dotnet add p⇥⇥ dotnet add package Une seconde pression sur la touche TAB fait apparaître la suggestion suivante.
dotnet package add Microsoft⇥ dotnet package add Microsoft.ApplicationInsights.Web Les résultats sont retournés par ordre alphabétique.
dotnet reference remove ⇥ dotnet reference remove ..\..\src\OmniSharp.DotNet\OmniSharp.DotNet.csproj La saisie semi-automatique via la touche TAB tient compte du fichier de projet.