Включение заполнения клавишей TAB для .NET CLI

Эта статья относится к следующему. ✔️ SDK для .NET Core 2.1 и более поздних версий

В этой статье описывается, как включить автодополнение клавишей TAB для четырех оболочек: PowerShell, Bash, zsh и fish. Сведения о том, как настроить заполнение нажатием клавиши TAB в других оболочках, см. в соответствующей документации.

После настройки автодополнение можно активировать нажатием клавиши TAB для .NET CLI, введя в командной строке dotnet и нажав клавишу TAB. Текущая командная строка будет передана команде dotnet complete, а оболочка обработает результаты. Вы можете проверить результаты без активации автодополнения клавишей TAB, передав что-либо непосредственно команде dotnet complete. Пример:

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

Если команда не сработала, убедитесь, что установлен пакет SDK для .NET Core 2.0 или более поздней версии. Если он установлен, но команда все равно не работает, проверьте, что команда dotnet разрешается как минимум в версию пакета SDK для .NET Core 2.0. Воспользуйтесь командой dotnet --version, чтобы узнать, к которой версии dotnet указывает текущий путь. Дополнительные сведения см. в статье Выбор версии .NET для использования.

Примеры

Ниже приведено несколько примеров возможностей, которые предоставляет автодополнение клавишей TAB:

Входные данные becomes because
dotnet a⇥ dotnet add add является первой подкомандой в алфавитном порядке.
dotnet add p⇥ dotnet add --help При автодополнении клавишей TAB подстроки сопоставляются и первой по алфавиту является --help.
dotnet add p⇥⇥ dotnet add package После второго нажатия клавиши TAB подставляется следующее предложение.
dotnet add package Microsoft⇥ dotnet add package Microsoft.ApplicationInsights.Web Результаты возвращаются в алфавитном порядке.
dotnet remove reference ⇥ dotnet remove reference ..\..\src\OmniSharp.DotNet\OmniSharp.DotNet.csproj Автодополнение клавишей TAB зависит от файла проекта.

PowerShell

Чтобы добавить автодополнение клавишей TAB для .NET CLI в PowerShell, создайте или измените профиль, хранящийся в переменной . Дополнительные сведения см. в разделах How to create your profile (Как создать свой профиль) и Profiles and execution policy (Профили и политика выполнения).

Добавьте в свой профиль представленный ниже код:

# 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

Чтобы добавить автодополнение клавишей TAB для .NET CLI в bash, добавьте в свой файл представленный ниже код:

# 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

Чтобы добавить автодополнение клавишей TAB для .NET CLI в zsh, добавьте в свой файл представленный ниже код:

# zsh parameter completion for the dotnet CLI

_dotnet_zsh_complete()
{
  local completions=("$(dotnet complete "$words")")

  reply=( "${(ps:\n:)completions}" )
}

compctl -K _dotnet_zsh_complete dotnet

fish

Чтобы добавить автодополнение клавишей TAB для .NET CLI в fish, добавьте в свой файл следующий код:

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