Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo aplica-se a: ✔️ .NET 6 SDK e versões posteriores
Este artigo descreve como configurar o preenchimento automático de guia para cinco shells: PowerShell (pwsh), Bash, zsh, fish e nushell. Para outros shells, consulte sua documentação sobre como configurar o preenchimento de guias.
Scripts nativos de autocompletar para shell (.NET 10+)
A partir do .NET 10, a CLI do .NET inclui scripts nativos de conclusão de shell que são executados muito mais rápido do que as completações dinâmicas disponíveis em versões anteriores. As completações nativas geram scripts específicos do shell que manipulam as partes estáticas da gramática da interface de linha de comandos (CLI) diretamente no shell, o que proporciona uma melhoria significativa de desempenho.
Gerar scripts de conclusão
Use o dotnet completions script comando para gerar um script de conclusão para seu shell:
dotnet completions script [SHELL]
O [SHELL] parâmetro aceita um dos seguintes valores:
bashfishnushellpwshzsh
Se você não especificar um shell, o comando inferirá o shell correto do seu ambiente. No Windows, o padrão é PowerShell (pwsh). Em outros sistemas, ele verifica se o SHELL nome do arquivo da variável de ambiente corresponde a algum dos valores de shell suportados.
Capacidades de conclusão
As completações nativas fornecem diferentes níveis de suporte, dependendo do shell:
| Shell | Tipo de acabamento | Descrições em preenchimentos de separadores |
|---|---|---|
| bash | híbrido | Não |
| peixes | dynamic | Não |
| Nushell | dynamic | Não |
| PowerShell | híbrido | Yes |
| zsh | híbrido | Yes |
Tipos de conclusão:
-
Híbrido: gera código específico do shell que lida com partes estáticas da gramática da CLI rapidamente, mas retorna ao
dotnet completecomando para conteúdo dinâmico (como IDs de pacote NuGet). -
Dinâmico: Todas as finalizações passam pelo
dotnet completecomando, que pode ser mais lento, mas garante uma cobertura abrangente.
Configurar os shells para utilizar as completações nativas
Adicione o comando apropriado ao perfil do shell para habilitar os completamentos nativos:
PowerShell
Adicione a seguinte linha ao seu perfil do PowerShell ($PROFILE):
dotnet completions script pwsh | Out-String | Invoke-Expression
Bash
Adicione a seguinte linha ao seu .bashrc ficheiro:
eval "$(dotnet completions script bash)"
Zsh
Adicione a seguinte linha ao seu .zshrc ficheiro:
eval "$(dotnet completions script zsh)"
Peixe
Adicione a seguinte linha ao seu config.fish ficheiro:
dotnet completions script fish | source
Nushell
Adicione o seguinte ao início do ficheiro config.nu :
dotnet completions script nushell | save -f ~/.local/share/nushell/completions/dotnet.nu
use ~/.local/share/nushell/completions/dotnet.nu *
Scripts de conclusão dinâmica (todas as versões)
Para versões do .NET anteriores ao .NET 10, ou se preferir usar completações dinâmicas, você pode configurar seu shell para usar o dotnet complete comando. As completações dinâmicas funcionam enviando a linha de comando atual para o dotnet complete comando e processando os resultados no shell.
Uma vez configurado, o preenchimento da guia para a CLI do .NET é acionado inserindo um dotnet comando no shell e pressionando a tecla Tab . A linha de comando atual é enviada para o dotnet complete comando e os resultados são processados pelo shell. Você pode testar os resultados sem habilitar o preenchimento da guia enviando algo diretamente para o dotnet complete comando. Por exemplo:
> dotnet complete "dotnet a"
add
clean
--diagnostics
migrate
pack
Se esse comando não funcionar, verifique se o SDK do .NET Core 2.0 ou posterior está instalado. Se estiver instalado, mas esse comando ainda não funcionar, certifique-se de que o dotnet comando é resolvido para uma versão do SDK do .NET Core 2.0 ou posterior. Use o dotnet --version comando para ver qual versão do dotnet seu caminho atual está resolvendo. Para obter mais informações, consulte Selecione a versão do .NET a ser usada.
Exemplos
Aqui estão alguns exemplos do que o preenchimento de guias fornece:
| Entrada | Torna-se | Porque |
|---|---|---|
dotnet a⇥ |
dotnet add |
add é o primeiro subcomando, por ordem alfabética. |
dotnet add p⇥ |
dotnet add --help |
O preenchimento de tabulação corresponde a substrings e --help vem primeiro em ordem alfabética. |
dotnet add p⇥⇥ |
dotnet add package |
Pressionar tab uma segunda vez traz a próxima sugestão. |
dotnet package add Microsoft⇥ |
dotnet package add Microsoft.ApplicationInsights.Web |
Os resultados são retornados em ordem alfabética. |
dotnet reference remove ⇥ |
dotnet reference remove ..\..\src\OmniSharp.DotNet\OmniSharp.DotNet.csproj |
A conclusão da guia reconhece o arquivo do projeto. |
PowerShell
Para adicionar o preenchimento de guias ao PowerShell para a CLI do .NET, crie ou edite o perfil armazenado na variável $PROFILE. Para obter mais informações, consulte Como criar seu perfil e Perfis e política de execução.
Adicione o seguinte código ao seu perfil:
# 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
Para adicionar o preenchimento de guias ao shell bash para a CLI do .NET, adicione o seguinte código ao arquivo .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
Para adicionar o preenchimento de guias ao shell zsh para a CLI do .NET, adicione o seguinte código ao arquivo .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
peixes
Para adicionar o preenchimento de guias ao seu shell fish para a CLI do .NET, adicione o seguinte código ao seu ficheiro config.fish:
complete -f -c dotnet -a "(dotnet complete (commandline -cp))"
Nushell
Para adicionar o auto-completar de abas ao seu nushell para .NET CLI, adicione o seguinte ao início do seu ficheiro config.nu :
let external_completer = { |spans|
{
dotnet: { ||
dotnet complete (
$spans | skip 1 | str join " "
) | lines
}
} | get $spans.0 | each { || do $in }
}
Depois, no config registro, localize a seção completions e adicione o external_completer que foi definido anteriormente em external:
let-env config = {
# your options here
completions: {
# your options here
external: {
# your options here
completer: $external_completer # add it here
}
}
}