Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini berlaku untuk: ✔️ .NET 6 SDK dan versi yang lebih baru
Artikel ini menjelaskan cara mengonfigurasi penyelesaian tab untuk lima shell: PowerShell (pwsh), Bash, zsh, fish, dan nushell. Untuk shell lain, lihat dokumentasi mereka tentang cara mengonfigurasi penyelesaian tab.
Skrip penyelesaian shell asli (.NET 10+)
Dimulai dengan .NET 10, .NET CLI menyertakan skrip penyelesaian shell asli yang berjalan jauh lebih cepat daripada penyelesaian dinamis yang tersedia dalam versi sebelumnya. Penyelesaian asli menghasilkan skrip khusus shell yang menangani bagian statis tata bahasa CLI langsung di shell, memberikan peningkatan performa yang signifikan.
Hasilkan skrip penyelesaian
Gunakan perintah dotnet completions script untuk menghasilkan skrip penyelesaian untuk shell Anda.
dotnet completions script [SHELL]
Parameter [SHELL] menerima salah satu nilai berikut:
bashfishnushellpwshzsh
Jika Anda tidak menentukan shell, perintah akan memilih shell yang tepat dari lingkungan Anda. Di Windows, defaultnya adalah PowerShell (pwsh). Pada sistem lain, ini memeriksa apakah nama SHELL file variabel lingkungan cocok dengan salah satu nilai shell yang didukung.
Kemampuan penyelesaian
Kompletasi bawaan menyediakan dukungan tingkat berbeda tergantung pada shell.
| Shell | Jenis penyelesaian | Deskripsi dalam penyelesaian tab |
|---|---|---|
| bash | hibrida | Tidak. |
| ikan | dynamic | Tidak. |
| nushell | dynamic | Tidak. |
| PowerShell | hibrida | Yes |
| zsh | hibrida | Yes |
Jenis penyelesaian:
: Menghasilkan kode khusus shell yang menangani bagian statis tata bahasa CLI dengan cepat, tetapi kembali ke perintah untuk konten dinamis (seperti ID paket NuGet). -
Dinamis: Semua penyelesaian melalui
dotnet completeperintah, yang mungkin lebih lambat tetapi memastikan cakupan komprehensif.
Mengonfigurasi shell untuk menggunakan penyelesaian bawaan
Tambahkan perintah yang sesuai ke profil shell Anda untuk mengaktifkan penyelesaian otomatis bawaan:
PowerShell
Tambahkan baris berikut ke profil PowerShell Anda ($PROFILE):
dotnet completions script pwsh | Out-String | Invoke-Expression
Bash (sebuah bahasa shell dan bahasa perintah untuk Unix)
Tambahkan baris berikut ke file Anda .bashrc :
eval "$(dotnet completions script bash)"
Zsh
Tambahkan baris berikut ke file Anda .zshrc :
eval "$(dotnet completions script zsh)"
Ikan
Tambahkan baris berikut ke file Anda config.fish :
dotnet completions script fish | source
Nushell
Tambahkan yang berikut ini ke awal file Anda config.nu :
dotnet completions script nushell | save -f ~/.local/share/nushell/completions/dotnet.nu
use ~/.local/share/nushell/completions/dotnet.nu *
Skrip penyelesaian dinamis (semua versi)
Untuk versi .NET sebelum .NET 10, atau jika Anda lebih suka menggunakan penyelesaian dinamis, Anda dapat mengonfigurasi shell untuk menggunakan dotnet complete perintah . Penyelesaian dinamis berfungsi dengan mengirim baris perintah saat ini ke dotnet complete perintah dan memproses hasilnya di shell.
Setelah disiapkan, pelengkapan tab untuk .NET CLI dipicu dengan mengetikkan sebuah perintah di shell dan menekan tombol dotnet. Baris perintah saat ini dikirim ke perintah dotnet complete, dan hasilnya diproses oleh shell. Anda dapat menguji hasilnya tanpa mengaktifkan penyelesaian tab dengan mengirim sesuatu langsung ke perintah dotnet complete. Contohnya:
> dotnet complete "dotnet a"
add
clean
--diagnostics
migrate
pack
Jika perintah tersebut tidak berfungsi, pastikan .NET Core 2.0 SDK atau yang lebih baru diinstal. Jika diinstal tetapi perintah tersebut masih tidak berfungsi, pastikan bahwa perintah tersebut mengarah ke versi dotnet .NET Core 2.0 SDK atau yang lebih baru. Gunakan perintah dotnet --version untuk melihat versi dotnet yang ditentukan oleh jalur Anda saat ini. Untuk informasi selengkapnya, lihat Memilih versi .NET yang akan digunakan.
Contoh
Berikut adalah beberapa contoh tentang apa yang disediakan oleh fitur penyelesaian otomatis dengan tab:
| Masukan | Menjadi | Karena |
|---|---|---|
dotnet a⇥ |
dotnet add |
add adalah sub perintah pertama, menurut abjad. |
dotnet add p⇥ |
dotnet add --help |
Penyelesaian tab cocok dengan substring, dan --help muncul terlebih dahulu secara alfabetis. |
dotnet add p⇥⇥ |
dotnet add package |
Menekan tab untuk kedua kalinya memunculkan saran berikutnya. |
dotnet package add Microsoft⇥ |
dotnet package add Microsoft.ApplicationInsights.Web |
Hasil dikembalikan menurut abjad. |
dotnet reference remove ⇥ |
dotnet reference remove ..\..\src\OmniSharp.DotNet\OmniSharp.DotNet.csproj |
Penyelesaian otomatis tab memahami struktur file proyek. |
PowerShell
Untuk menambahkan penyelesaian tab ke PowerShell untuk .NET CLI, buat atau edit profil yang disimpan dalam variabel $PROFILE. Untuk informasi selengkapnya, lihat Cara membuat profil dan Profil serta kebijakan eksekusi.
Tambahkan kode berikut ke profil Anda:
# 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
Untuk menambahkan fitur pelengkapan otomatis tab pada shell bash Anda untuk .NET CLI, tambahkan kode berikut ke dalam file .bashrc Anda:
# 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
Untuk menambahkan penyelesaian tab ke shell zsh Anda untuk .NET CLI, tambahkan kode berikut ke file Anda .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
ikan
Untuk menambahkan penyelesaian tab ke fish shell Anda untuk .NET CLI, tambahkan kode berikut ke dalam file config.fish Anda:
complete -f -c dotnet -a "(dotnet complete (commandline -cp))"
nushell
Untuk menambahkan penyelesaian tab ke nushell Anda untuk .NET CLI, tambahkan yang berikut ini ke awal file Anda config.nu :
let external_completer = { |spans|
{
dotnet: { ||
dotnet complete (
$spans | skip 1 | str join " "
) | lines
}
} | get $spans.0 | each { || do $in }
}
Dan kemudian dalam config catatan, temukan bagian completions dan tambahkan external_completer yang ditentukan sebelumnya ke external:
let-env config = {
# your options here
completions: {
# your options here
external: {
# your options here
completer: $external_completer # add it here
}
}
}