Jan 122018

Even these days, I still spend too much time on the command line. My
friends still make fun of my MacOS desktop when they see that I run a
full screen terminal, and the main program that I am running there is
the Midnight Commander:

Every once in a while I write an interactive application, and I want
to have full bash-like command line editing, history and search. The
Unix world used to have GNU readline as a C library, but I wanted
something that worked on both Unix and Windows with minimal

Almost 10 years ago I wrote myself a C# library to do this, it works
on both Unix and Windows and it was the library that has been used by
Mono’s interactive C# shell for the last decade or so.

This library used to be called getline.cs, and it was part
of a series of single source file libraries that we distributed with

The idea of distributing libraries that were made up of a
single source file did not really catch on. So we have modernized
our own ways and now we publish these single-file libraries as NuGet
packages that you can use.

You can now add an interactive command line shell with NuGet by
installing the
Mono.Terminal NuGet
package into your application.

We also moved the single library from being part of the gigantic Mono
repository into its own repository.

The GitHub page has more information on the key bindings available,
how to use the history and how to add code-completion (even including
a cute popup).

The library is built entirely on top of System.Console, and is
distributed as a .NET Standard library which can run on your choice of
.NET runtime (.NET Core, .NET Desktop or Mono).

Check the GitHub project page
for more information.

Miguel de Icaza: Interactive Line Editing in .NET
Source: Planet Gnome