Cara mengaktifkan penyelesaian tab untuk .NET CLI
Artikel ini berlaku untuk: ✔️ .NET Core 2.1 SDK dan versi yang lebih baru
Artikel ini menjelaskan cara mengonfigurasi penyelesaian tab untuk lima shell: PowerShell, Bash, zsh, fish, dan nushell. Untuk shell lain, lihat dokumentasi mereka tentang cara mengonfigurasi penyelesaian tab.
Setelah disiapkan, penyelesaian tab untuk .NET CLI dipicu dengan memasukkan dotnet
perintah di shell lalu menekan tombol Tab . Baris perintah saat ini dikirim ke dotnet complete
perintah, dan hasilnya diproses oleh shell. Anda dapat menguji hasilnya tanpa mengaktifkan penyelesaian tab dengan mengirim sesuatu langsung ke dotnet complete
perintah . Misalnya:
> 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 diselesaikan ke versi .NET Core 2.0 SDK atau yang dotnet
lebih baru. dotnet --version
Gunakan perintah untuk melihat versi dotnet
jalur Anda saat ini. Untuk informasi selengkapnya, lihat Memilih versi .NET yang akan digunakan.
Contoh
Berikut adalah beberapa contoh penyelesaian tab apa yang disediakan:
Input | 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 datang terlebih dahulu menurut abjad. |
dotnet add p⇥⇥ |
dotnet add package |
Menekan tab untuk kedua kalinya memunculkan saran berikutnya. |
dotnet add package Microsoft⇥ |
dotnet add package Microsoft.ApplicationInsights.Web |
Hasil dikembalikan menurut abjad. |
dotnet remove reference ⇥ |
dotnet remove reference ..\..\src\OmniSharp.DotNet\OmniSharp.DotNet.csproj |
Penyelesaian tab adalah file proyek yang sadar. |
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 Anda.
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 penyelesaian tab ke shell bash Anda untuk .NET CLI, tambahkan kode berikut ke file Anda.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
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
fish
Untuk menambahkan penyelesaian tab ke shell ikan Anda untuk .NET CLI, tambahkan kode berikut ke file Andaconfig.fish
:
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 Andaconfig.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
}
}
}