Habilitación de la finalización con tabulación para la CLI de .NET

Este artículo se aplica a: ✔️ SDK de .NET Core 2.1 y versiones posteriores

En este artículo se describe cómo configurar la finalización con tabulación para cuatro shells: PowerShell, Bash, zsh y fish. En el caso de otros shells, consulte la documentación para saber cómo configurar la finalización con tabulación.

Una vez configurado, la finalización con tabulación de la CLI de .NET se desencadena escribiendo un dotnet comando en el shell y presionando la tecla Tab . La línea de comandos actual se envía al dotnet complete comando y el shell procesa los resultados. Puede probar los resultados sin habilitar la finalización con tabulación si envía algo directamente al comando dotnet complete. Por ejemplo:

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

Si ese comando no funciona, asegúrese de que está instalado el SDK de .NET Core 2.0 o una versión superior. Si está instalado, pero ese comando sigue sin funcionar, asegúrese de que el dotnet comando se resuelve en una versión del SDK de .NET Core 2.0 y versiones posteriores. Use el comando dotnet --version para ver en qué versión de dotnet se resuelve la ruta de acceso actual. Para obtener más información, vea Selección de la versión de .NET Core que se va a usar.

Ejemplos

Estos son algunos ejemplos de lo que proporciona la finalización con tabulación:

Entrada se convierte en porque
dotnet a⇥ dotnet add add es el primer subcomando, por orden alfabético.
dotnet add p⇥ dotnet add --help La finalización con tabulación hace coincidir las subcadenas y --help aparece primero alfabéticamente.
dotnet add p⇥⇥ dotnet add package Al presionar la tecla Tab una segunda vez aparece la siguiente sugerencia.
dotnet add package Microsoft⇥ dotnet add package Microsoft.ApplicationInsights.Web Los resultados se devuelven por orden alfabético.
dotnet remove reference ⇥ dotnet remove reference ..\..\src\OmniSharp.DotNet\OmniSharp.DotNet.csproj La finalización con tabulación es compatible con archivos de proyecto.

PowerShell

Para agregar finalización con tabulación a PowerShell para la CLI de .NET, cree o edite el perfil almacenado en la variable $PROFILE. Para obtener más información, vea Cómo crear el perfil y Los perfiles y la directiva de ejecución.

Agregue el código siguiente al perfil:

# PowerShell parameter completion shim for the dotnet CLI
Register-ArgumentCompleter -Native -CommandName dotnet -ScriptBlock {
     param($commandName, $wordToComplete, $cursorPosition)
         dotnet complete --position $cursorPosition "$wordToComplete" | ForEach-Object {
            [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
         }
 }

Bash

Para agregar finalización con tabulación al shell de bash para la CLI de .NET, agregue el código siguiente al archivo .bashrc:

# bash parameter completion for the dotnet CLI

function _dotnet_bash_complete()
{
  local cur="${COMP_WORDS[COMP_CWORD]}" IFS=$'\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

Para agregar finalización con tabulación al shell de zsh para la CLI de .NET, agregue el código siguiente al archivo .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

Para agregar la finalización con tabulación al shell de fish para la CLI de .NET, agregue el código siguiente al archivo config.fish:

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