PrettyPrompt
A cross-platform command line prompt that provides syntax highlighting, autocompletion, history and more! It's Console.ReadLine()
on steroids.
Features
- User Experience (UX) features:
- Syntax highlighting support via ANSI escape sequences. Supports both the terminal color palette and full RGB colors.
- Autocompletion menu, with extended documentation tooltips
- Multi-line input
- Word-wrapping
- History navigation, optionally persistent across sessions, with history filtering (similar to PSReadLine's
HistorySearchBackward
). - Unsurprising keybindings: Home, End, Ctrl-L to clear screen, Ctrl-C to cancel current line, Ctrl+Space to open autocomplete menu, and more.
- Cross platform copy/paste: Ctrl-Shift-C for copy, Ctrl-V or Shift-Insert for pasting.
- Works "in-line" on the command line; it doesn't take over the entire terminal window.
- Developer Experience (DX) features:
- Provides a
CancellationToken
for each prompt result, so the end-user of your application can cancel long running tasks via Ctrl-C. - Supports registering callbacks for key presses, to customize application behavior.
- Optionally detects incomplete lines and converts Enter to a "soft newline" (Shift-Enter).
- Fast rendering—PrettyPrompt only renders the diff of what changed, so the screen doesn't flicker as text is redrawn.
- Provides a
Installation
PrettyPrompt can be installed from nuget by running the following command:
dotnet add package PrettyPrompt
Usage
A simple read-eval-print-loop looks like this:
var prompt = new Prompt();
while (true)
{
var response = await prompt.ReadLineAsync("> ");
if (response.IsSuccess) // false if user cancels, i.e. ctrl-c
{
if (response.Text == "exit") break;
Console.WriteLine("You wrote " + response.Text);
}
}
The Prompt
constructor takes optional configuration options for enabling syntax highlighting, autocompletion, and soft-newline configuration.
For a more complete example, see the project in the examples
directory.
If you have the dotnet example
global tool installed, run the following command in the repository root:
dotnet example FruitPrompt
Building from source
This application target .NET 5, and can be built with either Visual Studio or the normal dotnet build
command line tool.