Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 :
bashfishnushellpwshzsh
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 completepour le contenu dynamique (par exemple, les ID de package NuGet). -
Dynamique : toutes les achèvements passent par la
dotnet completecommande, 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. |