Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makale şunlar için geçerlidir: ✔️ .NET 6 SDK ve sonraki sürümler
Bu makalede, beş farklı kabuk için sekme tamamlamanın nasıl yapılandırılacağı açıklanmaktadır: PowerShell (pwsh), Bash, zsh, fish ve nushell. Diğer kabuklar için, sekme tamamlamasının nasıl yapılandırılacağı konusunda belgelerine bakın.
Yerel kabuk tamamlama betikleri (.NET 10+)
.NET 10'dan başlayarak. .NET CLI, önceki sürümlerde kullanılabilen dinamik tamamlamalardan çok daha hızlı çalışan yerel kabuk tamamlama betikleri içerir. Yerel tamamlamalar, CLI komut dilbilgisinin statik bölümlerini kabukta doğrudan işleyerek, önemli bir performans geliştirmesi sağlayan kabuğa özgü betikler oluşturur.
Tamamlama komut dosyaları oluştur
dotnet completions script Kabuğunuz için bir tamamlama betiği oluşturmak için komutunu kullanın:
dotnet completions script [SHELL]
[SHELL] parametresi aşağıdaki değerlerden birini kabul eder:
bashfishnushellpwshzsh
Bir kabuk belirtmezseniz, komut ortamınızdan uygun kabuğu seçer. Windows'ta varsayılan olarak PowerShell (pwsh olarak kullanılır). Diğer sistemlerde ortam değişkeninin dosya adının SHELL desteklenen kabuk değerlerinden herhangi biri ile eşleşip eşleşmediğini denetler.
Tamamlama özellikleri
Yerel tamamlamalar, kullanılan komut kabuğuna bağlı olarak farklı destek seviyeleri sağlar.
| Kabuk | Tamamlama türü | Sekme tamamlamalarındaki açıklamalar |
|---|---|---|
| bash | hibrit | Hayı |
| balık | dynamic | Hayı |
| nushell | dynamic | Hayı |
| PowerShell | hibrit | Yes |
| zsh | hibrit | Yes |
Tamamlama türleri:
-
Hibrit: CLI dil bilgisinin statik bölümlerini hızlı bir şekilde işleyen, ancak dinamik içerik (NuGet paket kimlikleri gibi) için
dotnet completekomutuna geri dönen, kabuğa özgü kod oluşturur. -
Dinamik: Tüm tamamlamalar, daha yavaş olabilecek ancak kapsamlı bir kapsam sağlayan komutun üzerinden
dotnet completegeçer.
Kabukları yerel tamamlama özelliğini kullanacak şekilde yapılandırın
Yerel tamamlamaları etkinleştirmek için kabuğunuzun profiline uygun komutu ekleyin:
PowerShell
Aşağıdaki satırı PowerShell profilinize ekleyin ($PROFILE):
dotnet completions script pwsh | Out-String | Invoke-Expression
Bash
Dosyanıza .bashrc aşağıdaki satırı ekleyin:
eval "$(dotnet completions script bash)"
Zsh
Dosyanıza .zshrc aşağıdaki satırı ekleyin:
eval "$(dotnet completions script zsh)"
Balık
Dosyanıza config.fish aşağıdaki satırı ekleyin:
dotnet completions script fish | source
Nushell
Dosyanızın config.nu başına aşağıdakileri ekleyin:
dotnet completions script nushell | save -f ~/.local/share/nushell/completions/dotnet.nu
use ~/.local/share/nushell/completions/dotnet.nu *
Dinamik tamamlama betikleri (tüm sürümler)
.NET 10'dan önceki .NET sürümleri için veya dinamik tamamlamaları kullanmayı tercih ediyorsanız, kabuğunuzu dotnet complete komutunu kullanacak şekilde yapılandırabilirsiniz. Dinamik tamamlama, geçerli komut satırını dotnet complete komutuna gönderip sonuçları kabukta işleyerek çalışır.
Ayarlandıktan sonra, kabukta bir dotnet komut girilip Sekme tuşuna basıldığında .NET CLI için sekme tamamlama tetiklenir. Geçerli komut satırı dotnet complete komutuna gönderilir ve sonuçlar kabuk tarafından işlenir. Sekme tamamlama özelliğini etkinleştirmeden, dotnet complete komutuna doğrudan bir şey göndererek 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 komutunu kullanarak geçerli yolunuzun hangi dotnet sürümüne çözümlediğini görün. Daha fazla bilgi için bkz. Kullanılacak .NET sürümünü seçme.
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 ve PowerShell'i yeniden başlatın:
# 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 config kaydında, completions bölümünü bulun ve daha önce tanımlanan external_completer öğesini external öğesine ekleyin.
let-env config = {
# your options here
completions: {
# your options here
external: {
# your options here
completer: $external_completer # add it here
}
}
}
Tamamlama örnekleri
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 alfabetik olarak ilk sırada yer alır. |
dotnet add p⇥⇥ |
dotnet add package |
Sekme tuşuna ikinci kez basmak bir sonraki öneriyi getirir. |
dotnet package add Microsoft⇥ |
dotnet package add Microsoft.ApplicationInsights.Web |
Sonuçlar alfabetik olarak döndürülür. |
dotnet reference remove ⇥ |
dotnet reference remove ..\..\src\OmniSharp.DotNet\OmniSharp.DotNet.csproj |
Sekme tamamlama, proje dosyası ile uyumludur. |