Bagikan melalui


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
        }
    }
}