Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Aplikace, které používají System.CommandLine, mají vestavěnou podporu pro automatické doplňování tabulátorů v některých shellech. Pokud ho chcete povolit, musí koncový uživatel provést několik kroků jednou pro každé shellové prostředí. Po dokončení je dokončení tabulátoru automatické pro statické hodnoty v aplikaci, například výčtové hodnoty nebo hodnoty definované voláním AcceptOnlyFromAmong(String[]). Dokončování tabulátoru můžete také přizpůsobit tak, že za běhu poskytnete hodnoty dynamicky.
Povolit dokončování tabulátoru
Na počítači, na kterém chcete povolit dokončování tabulátoru, postupujte takto.
Pro .NET CLI:
- Podívejte se na Jak povolit funkci automatického dokončování pomocí tabulátoru.
Pro další aplikace příkazového řádku postavené na System.CommandLine:
dotnet-suggestNainstalujte globální nástroj.Přidejte do shellového profilu příslušný skript shim. Možná budete muset vytvořit shell profilový soubor. Propojovací skript předá požadavky na dokončení z prostředí do
dotnet-suggestnástroje, který je deleguje na příslušnouSystem.CommandLineaplikaci.Přidejte obsah souboru
bashdo souboru ~/.bash_profile.Přidejte obsah
zshdo ~/.zshrc.Pro PowerShell přidejte do profilu PowerShellu obsah 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
Zaregistrujte aplikaci voláním
dotnet-suggest register --command-path $executableFilePath, kde$executableFilePathje cesta ke spustitelnému souboru aplikace.
Po nastavení prostředí uživatele a registraci spustitelného souboru 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 automatické doplňování příkazů, takže není k dispozici žádný náhražkový skript. 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 načítá hodnoty pro dokončování tabulátoru za běhu. Kód získá seznam dat pro následující dva týdny počínaje aktuálním datem. Seznam je poskytován do možnosti --date voláním CompletionSources.Add:
using System.CommandLine;
using System.CommandLine.Completions;
using System.CommandLine.Parsing;
new DateCommand().Parse(args).Invoke();
class DateCommand : Command
{
private Argument<string> subjectArgument = new("subject")
{
Description = "The subject of the appointment."
};
private Option<DateTime> dateOption = new("--date")
{
Description = "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.Arguments.Add(subjectArgument);
this.Options.Add(dateOption);
dateOption.CompletionSources.Add(ctx => {
var today = System.DateTime.Today;
List<CompletionItem> dates = new();
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.SetAction(parseResult =>
{
Console.WriteLine($"Scheduled \"{parseResult.GetValue(subjectArgument)}\" for {parseResult.GetValue(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:
-
Labelje hodnota dokončení, která se má zobrazit. -
SortTextzajišťuje, aby se hodnoty v seznamu zobrazovaly ve správném pořadí. Nastaví se převodemina 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é naLabelhodnotě , která je v tomto příkladu v krátkém formátu 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