.NET CLI için sekme tamamlamayı etkinleştirme

Bu makale şunlar için geçerlidir: ✔️ .NET Core 2.1 SDK ve sonraki sürümleri

Bu makalede beş kabuk için sekme tamamlamanın nasıl yapılandırıldığı açıklanır: PowerShell, Bash, zsh, fish ve nushell. Diğer kabuklar için, sekme tamamlamayı yapılandırma hakkındaki belgelerine bakın.

Ayarlandıktan sonra, kabukta bir dotnet komut girilip Sekme tuşuna basılarak .NET CLI için sekme tamamlama tetikler. Geçerli komut satırı komuta gönderilir dotnet complete ve sonuçlar kabuk tarafından işlenir. Doğrudan komuta bir şey dotnet complete göndererek sekme tamamlama özelliğini etkinleştirmeden sonuçları test edebilirsiniz. Örneğin:

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

Bu komut işe yaramazsa .NET Core 2.0 SDK veya üstünün yüklü olduğundan emin olun. Yüklüyse ancak bu komut hala çalışmıyorsa, komutun dotnet .NET Core 2.0 SDK veya sonraki bir sürümüne çözümlendiğinden emin olun. dotnet --version Geçerli yolunuzun hangi sürümüne dotnet çözümlediğini görmek için komutunu kullanın. Daha fazla bilgi için bkz . Kullanılacak .NET sürümünü seçme.

Örnekler

Sekme tamamlamanın sağladığı bazı örnekler aşağıda verilmiştir:

Giriş Olur Çünkü
dotnet a⇥ dotnet add add alfabetik olarak ilk alt komut.
dotnet add p⇥ dotnet add --help Sekme tamamlama alt dizelerle eşleşir ve --help önce alfabetik olarak gelir.
dotnet add p⇥⇥ dotnet add package Sekme tuşuna ikinci kez basmak bir sonraki öneriyi getirir.
dotnet add package Microsoft⇥ dotnet add package Microsoft.ApplicationInsights.Web Sonuçlar alfabetik olarak döndürülür.
dotnet remove reference ⇥ dotnet remove reference ..\..\src\OmniSharp.DotNet\OmniSharp.DotNet.csproj Sekme tamamlama, proje dosyasının farkındadır.

PowerShell

.NET CLI için PowerShell'e sekme tamamlama eklemek için değişkeninde $PROFILEdepolanan profili oluşturun veya düzenleyin. Daha fazla bilgi için bkz . Profilinizi oluşturma ve Profiller ve yürütme ilkesi.

Profilinize aşağıdaki kodu ekleyin:

# 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 için bash kabuğunuza sekme tamamlama eklemek için dosyanıza .bashrc aşağıdaki kodu ekleyin:

# 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 için zsh kabuğunuza sekme tamamlama eklemek için dosyanıza .zshrc aşağıdaki kodu ekleyin:

# 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

Balık

.NET CLI için fish shell'inize sekme tamamlama eklemek için dosyanıza config.fish aşağıdaki kodu ekleyin:

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

nushell

.NET CLI için nushell'inize sekme tamamlama eklemek için, dosyanızın config.nu başına aşağıdakileri ekleyin:

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

Ardından kayıtta config bölümünü bulun completions ve daha önce tanımlanan öğesini öğesine ekleyin:external_completerexternal

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