Dokončování tabulátoru pro System.CommandLine
Důležité
System.CommandLine
je aktuálně ve verzi PREVIEW a tato dokumentace je určená pro verzi 2.0 beta 4.
Některé informace se týkají předběžné verze produktu, který může být podstatně změněn před vydáním. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Aplikace, které používají System.CommandLine
integrovanou podporu pro dokončování tabulátoru v určitých prostředích Pokud ho chcete povolit, musí koncový uživatel provést několik kroků jednou pro každé prostředí. Jakmile to uživatel provede, dokončení tabulátoru je automatické pro statické hodnoty v aplikaci, jako jsou například hodnoty výčtu nebo hodnoty, které definujete voláním FromAmong. Dokončování tabulátoru můžete také přizpůsobit dynamickým získáním hodnot za běhu.
Povolení dokončování pomocí tabulátoru
Na počítači, na kterém chcete povolit dokončování tabulátoru, proveďte následující kroky.
Pro .NET CLI:
- Viz Postup povolení dokončování tabulátoru.
Pro další aplikace příkazového řádku postavené na System.CommandLine
:
dotnet-suggest
Nainstalujte globální nástroj.Přidejte do profilu prostředí příslušný skript shim. Možná budete muset vytvořit soubor profilu prostředí. Skript překrytí předá požadavky na dokončení z prostředí do
dotnet-suggest
nástroje, který deleguje na příslušnouSystem.CommandLine
aplikaci.Do
bash
souboru ~/.bash_profile přidejte obsah souboru dotnet-suggest-shim.bash.Pro
zsh
přidání obsahu dotnet-suggest-shim.zsh do ~/.zshrc.Pro PowerShell přidejte do profilu PowerShellu obsah souboru dotnet-suggest-shim.ps1 . Očekávanou cestu k profilu PowerShellu najdete spuštěním následujícího příkazu v konzole:
echo $profile
Po nastavení prostředí uživatele budou dokončení fungovat pro všechny aplikace vytvořené pomocí System.CommandLine
.
Pro cmd.exe ve Windows (příkazový řádek systému Windows) neexistuje žádný mechanismus pro doplňování karet, takže není k dispozici žádný skript pro převrácené změny. V případě jiných prostředí vyhledejte problém GitHubu, který je označený Area-Completions
. Pokud problém nenajdete, můžete otevřít nový.
Získání hodnot dokončení tabulátoru za běhu
Následující kód ukazuje aplikaci, která dynamicky získává hodnoty pro dokončování tabulátoru za běhu. Kód získá seznam následujících dvou týdnů kalendářních dat za aktuálním datem. Seznam je k --date
dispozici voláním AddCompletions
:
using System.CommandLine;
using System.CommandLine.Completions;
using System.CommandLine.Parsing;
await new DateCommand().InvokeAsync(args);
class DateCommand : Command
{
private Argument<string> subjectArgument =
new ("subject", "The subject of the appointment.");
private Option<DateTime> dateOption =
new ("--date", "The day of week to schedule. Should be within one week.");
public DateCommand() : base("schedule", "Makes an appointment for sometime in the next week.")
{
this.AddArgument(subjectArgument);
this.AddOption(dateOption);
dateOption.AddCompletions((ctx) => {
var today = System.DateTime.Today;
var dates = new List<CompletionItem>();
foreach (var i in Enumerable.Range(1, 7))
{
var date = today.AddDays(i);
dates.Add(new CompletionItem(
label: date.ToShortDateString(),
sortText: $"{i:2}"));
}
return dates;
});
this.SetHandler((subject, date) =>
{
Console.WriteLine($"Scheduled \"{subject}\" for {date}");
},
subjectArgument, dateOption);
}
}
Hodnoty zobrazené při stisknutí klávesy Tab jsou k dispozici jako CompletionItem
instance:
dates.Add(new CompletionItem(
label: date.ToShortDateString(),
sortText: $"{i:2}"));
Jsou nastaveny následující CompletionItem
vlastnosti:
Label
je hodnota dokončení, která se má zobrazit.SortText
zajišťuje, aby se hodnoty v seznamu zobrazovaly ve správném pořadí. Nastaví se převodemi
na dvouciferný řetězec, aby řazení bylo založeno na hodnotě 01, 02, 03 atd. až 14. Pokud tento parametr nenastavíte, řazení je založené naLabel
hodnotě , která je v tomto příkladu ve formátu krátkého data a nebude se řadit správně.
Existují další CompletionItem
vlastnosti, například Documentation
a Detail
, ale ještě nejsou použity v System.CommandLine
.
Seznam dynamického dokončování tabulátoru vytvořený tímto kódem se také zobrazí ve výstupu nápovědy:
Description:
Makes an appointment for sometime in the next week.
Usage:
schedule <subject> [options]
Arguments:
<subject> The subject of the appointment.
Options:
--date The day of week to schedule. Should be within one week.
<2/4/2022|2/5/2022|2/6/2022|2/7/2022|2/8/2022|2/9/2022|2/10/2022>
--version Show version information
-?, -h, --help