다음을 통해 공유


.NET CLI에 대해 탭 완성을 사용하도록 설정하는 방법

이 문서는 .NET Core 2.1 SDK 이상 버전에 적용됩니다 ✔️.

이 문서에서는 PowerShell, Bash, zsh, fish 및 nushell의 5개 셸에 대한 탭 완성을 구성하는 방법을 설명합니다. 다른 셸의 경우 탭 완성을 구성하는 방법에 대한 설명서를 참조하세요.

설정이 완료되면, 셸에서 dotnet 명령을 입력하고 Tab 키를 누르면 .NET CLI의 탭 완성 기능이 작동됩니다. 현재 명령줄이 dotnet complete 명령으로 전송되고 결과는 셸에서 처리됩니다. 명령어로 직접 항목을 보내면 탭 완성을 활성화하지 않고도 결과를 테스트할 수 있습니다. 다음은 그 예입니다.

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

해당 명령이 작동하지 않는 경우 .NET Core 2.0 SDK 이상이 설치되어 있는지 확인합니다. 설치되어 있지만 해당 명령이 여전히 작동하지 않는 경우 명령이 dotnet .NET Core 2.0 SDK 이상으로 확인되는지 확인합니다. dotnet --version 명령을 사용하여 현재 경로가 dotnet의 어떤 버전을 가리키는지 확인합니다. 자세한 내용은 사용할 .NET 버전 선택을 참조하세요.

예시

다음은 탭 완성에서 제공하는 몇 가지 예입니다.

입력 된다 왜냐하면
dotnet a⇥ dotnet add add 는 사전순으로 첫 번째 하위 명령입니다.
dotnet add p⇥ dotnet add --help 탭 완성은 부분 문자열을 일치시키고 --help가 사전순으로 먼저 나타납니다.
dotnet add p⇥⇥ dotnet add package 탭을 두 번 누르면 다음 제안이 표시됩니다.
dotnet package add Microsoft⇥ dotnet package add Microsoft.ApplicationInsights.Web 결과는 사전순으로 반환됩니다.
dotnet reference remove ⇥ dotnet reference remove ..\..\src\OmniSharp.DotNet\OmniSharp.DotNet.csproj 탭 완성은 프로젝트 파일을 인식하여 작동합니다.

PowerShell

.NET CLI용 PowerShell 에 탭 완성을 추가하려면 변수 $PROFILE에 저장된 프로필을 만들거나 편집합니다. 자세한 내용은 프로필을 만드는 방법프로필 및 실행 정책을 참조하세요.

프로필에 다음 코드를 추가합니다.

# 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 셸

.NET CLI에 대한 bash 셸에 탭 완성을 추가하려면 파일에 다음 코드를 추가합니다 .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

.NET CLI의 zsh 셸에 탭 완성을 추가하려면 파일에 다음 코드를 추가합니다 .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

물고기

.NET CLI의 fish 셸에 탭 완성을 추가하려면 config.fish 파일에 다음 코드를 추가하십시오.

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

nushell

.NET CLI용 nushell 에 탭 완성을 추가하려면 파일의 시작 부분에 다음을 추가합니다 config.nu .

let external_completer = { |spans|
    {
        dotnet: { ||
            dotnet complete (
                $spans | skip 1 | str join " "
            ) | lines
        }
    } | get $spans.0 | each { || do $in }
}

그런 다음, 레코드에서 completions 섹션을 찾아 앞에서 정의한 external_completerexternal에 추가합니다.

let-env config = {
    # your options here
    completions: {
        # your options here
        external: {
            # your options here
            completer: $external_completer # add it here
        }
    }
}