Micro is a concise, stand-alone, dependency free, *NIX cross-platform CLI editor written in pure C, and built from scratch!
Micro is inspired by the likes of GNU Nano and the ever infamous Vi/m and other POSIX compliant CLI editors.
Micro's welcome screen:
You can also see Micro in action via the asciinema screencast below:
-
Microis *NIX cross-platform - it can run anywhere where a *NIX terminal can aka (Linux/macOS/BSD derivatives) - essentially any POSIX compliant OS with a terminal. -
Supports syntax highlighting (currently only
.c,.h,.cppand.ccfiles support syntax highlighting), keyword searching, save and save-as functionality. -
Screen size adaptable - supports any terminal screen size, and has resizing functionality.
-
Dependency free and extremely portable - no external libraries required other than a
Ccompiler, and the C Standard Library.
Micro can be complied via the included Makefile, simply type:
$ makeThen pass in a file name argument (or no argument to open Micro blank) to view the file:
$ ./micro <filename>| Functionality | Key-Combination |
|---|---|
| To exit | Ctrl + q |
| To force quit | Ctrl + q twice |
| To save | Ctrl + s |
| To save-as (from blank editor) | Ctrl + s then enter filename then Enter |
| To abort save | Esc |
| To search for keyword | Ctrl + f then input keyword then Enter |
| To go to next matching keyword | Ctrl + f then input keyword then navigate via arrow keys |
| To abort search | Esc |
| To navigate | Arrow keys to move |
A lot of the heavy lifting in terms of logic and terminal manipulation was done via the use of VT100 escape sequences. The VT100 docs https://vt100.net/docs/vt100-ug/, and ANSI Escape Codes Wikipedia page https://en.wikipedia.org/wiki/ANSI_escape_code were used as reference.
In addition, the screencast of the terminal was done using asciinema.
Micro is licensed licenced under the BSD 3-Clause licence. For more information, check out LICENCE.
Currently, Micro has enough functionality to match a basic text editor such as Windows Notepad and the like. Micro is in a state where dogfooding (though not as polished as modern editors and IDE's) is possible.
This project was an exercise to build a non-trivial project in C that has accomplished everything that I set out to do. As such, I have no further plans to implement any new features for the time being.
- Need to add comments

