Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Эта статья относится к: ✔️ пакету SDK для .NET 6 и более поздних версий
В этой статье описывается настройка завершения вкладки для пяти оболочк: PowerShell (pwsh), Bash, zsh, fish и nushell. Сведения о настройке завершения вкладки см. в документации по другим оболочкам.
Скрипты завершения встроенной оболочки (.NET 10+)
Начиная с .NET 10, интерфейс командной строки .NET включает собственные скрипты завершения оболочки, которые выполняются гораздо быстрее, чем динамические завершения, доступные в более ранних версиях. Собственные завершения создают сценарии, предназначенные для конкретного интерпретатора командной строки, которые обрабатывают статические части грамматики CLI непосредственно в этом интерпретаторе, обеспечивая значительное улучшение производительности.
Создание скриптов завершения
Используйте команду dotnet completions script, чтобы создать скрипт завершения для вашей оболочки.
dotnet completions script [SHELL]
Параметр [SHELL] принимает одно из следующих значений:
bashfishnushellpwshzsh
Если вы не укажете оболочку, команда определяет правильную оболочку на основе вашей среды. В Windows по умолчанию используется PowerShell (pwsh). В других системах проверяет, соответствует ли имя файла переменной SHELL среды любым из поддерживаемых значений оболочки.
Возможности завершения
Собственные завершения обеспечивают различные уровни поддержки в зависимости от оболочки:
| Оболочка | Тип завершения | Описания в завершениях вкладок |
|---|---|---|
| bash | гибрид | нет |
| рыба | dynamic | нет |
| nushell | dynamic | нет |
| PowerShell | гибрид | Да |
| zsh | гибрид | Да |
Типы завершения:
-
Гибрид: создает код, специфичный для оболочки, который быстро обрабатывает статические части грамматики CLI, но использует команду
dotnet completeдля обработки динамического содержимого, например, идентификаторов пакетов NuGet. -
Динамический: все завершения проходят команду
dotnet complete, которая может быть медленнее, но обеспечивает комплексное покрытие.
Настройте оболочки для использования собственных завершений.
Добавьте соответствующую команду в профиль оболочки, чтобы включить встроенные завершения.
PowerShell
Добавьте следующую строку в профиль PowerShell ($PROFILE):
dotnet completions script pwsh | Out-String | Invoke-Expression
Bash
Добавьте в файл следующую строку .bashrc :
eval "$(dotnet completions script bash)"
Zsh
Добавьте в файл следующую строку .zshrc :
eval "$(dotnet completions script zsh)"
Fish
Добавьте в файл следующую строку config.fish :
dotnet completions script fish | source
Nushell
Добавьте следующее в начало config.nu файла:
dotnet completions script nushell | save -f ~/.local/share/nushell/completions/dotnet.nu
use ~/.local/share/nushell/completions/dotnet.nu *
Скрипты динамического завершения (все версии)
Для версий .NET до .NET 10 или, если вы предпочитаете использовать динамические завершения, можно настроить оболочку для использования dotnet complete команды. Динамические завершения работают, отправляя текущую командную строку dotnet complete в команду и обрабатывая результаты в оболочке.
После настройки завершение вкладки для интерфейса командной строки .NET активируется путем ввода dotnet команды в оболочке и нажатия клавиши TAB . Текущая командная строка отправляется команде dotnet complete, а результаты обрабатываются оболочкой. Вы можете протестировать результаты без включения завершения вкладки, отправив что-то непосредственно в 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".
Примеры
Ниже приведены некоторые примеры завершения вкладки:
| Ввод | превращается в | Потому что |
|---|---|---|
dotnet a⇥ |
dotnet add |
add — первая подкоманда в алфавитном порядке. |
dotnet add p⇥ |
dotnet add --help |
Завершение табуляции соответствует подстрокам и --help выполняется в алфавитном порядке. |
dotnet add p⇥⇥ |
dotnet add package |
При нажатии клавиши tab во второй раз выводится следующее предложение. |
dotnet package add Microsoft⇥ |
dotnet package add Microsoft.ApplicationInsights.Web |
Результаты возвращаются в алфавитном порядке. |
dotnet reference remove ⇥ |
dotnet reference remove ..\..\src\OmniSharp.DotNet\OmniSharp.DotNet.csproj |
Завершение вкладки — это файл проекта, который учитывается. |
PowerShell
Чтобы добавить автозавершение в PowerShell для .NET CLI, создайте или измените профиль, хранящийся в переменной $PROFILE. Дополнительные сведения см. в разделах How to create your profile (Как создать свой профиль) и Profiles and execution policy (Профили и политика выполнения).
Добавьте следующий код в профиль:
# 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
Чтобы добавить завершение вкладки в оболочку Bash для .NET CLI, добавьте в файл следующий код .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
Чтобы добавить автодополнение для оболочки zsh в .NET CLI, добавьте следующий код в ваш файл .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 для .NET CLI, добавьте следующий код в файл config.fish.
complete -f -c dotnet -a "(dotnet complete (commandline -cp))"
nushell
Чтобы добавить завершение вкладки в nushell для .NET CLI, добавьте следующее в начало config.nu файла:
let external_completer = { |spans|
{
dotnet: { ||
dotnet complete (
$spans | skip 1 | str join " "
) | lines
}
} | get $spans.0 | each { || do $in }
}
А затем в записи config найдите раздел completions и добавьте ранее заданный external_completer в external:
let-env config = {
# your options here
completions: {
# your options here
external: {
# your options here
completer: $external_completer # add it here
}
}
}