Skip to content


Repository files navigation

wi - right after vi

The project was put on ice because it failed to attract interest and was mostly done for research purpose. Please look at xi which has similar design goals and is written in Rust instead.

Experimental, do not look into.

Experimental, do not look into.

Experimental, do not look into.

Bringing text based editor technology past 1200 bauds.

GoDoc Build Status Coverage Status


  • Editor for the 19.2kbps connected world.
  • Out of process plugins for today's 2Mb RAM systems.
  • Go for both program and macros.
  • Fully asynchronous processing. No hang due to I/O ever.
  • Extremely extensible. Everything can be overriden.
  • i18n ready.
  • Auto-generated help.
  • go get (Go's native distribution mechanism) for both the editor and plugins.
  • Integrated debugging and good test coverage.



Installation or updating

go get -u

Installing or updating a plugin

Plugins are standalone executables or source files that are loaded by wi. wi discovers plugins on startup by looking for wi-plugin-* / wi-plugin-*.exe and wi-plugin-*.go in the same directory ($GOPATH/bin) as the wi executable.

go get -u

*.go files are sent to go run for on-the-fly compilation at the cost of slower startup time so there's no native updating support.


  • No I/O done in the UI thread. UI must always be responsive even on a I/O saturated system.
  • Very extensible editor with sane default settings.
    • Historical reasons are not good reasons.
  • Out of process plugins. If a web browser can render web pages out of process, an editor can do the same.
  • Plugins written in the same language as the editor itself. No need to learn yet another language (vimscript? lisp? python? javascript?).
    • The only text editor with statically compiled macros!
  • Use instrinsic Go distribution mechanism to distribute plugins. Stable release is go1 branch.
  • Broad OS support, including seamless Windows support.
  • Unicode used internally.


First make sure test-only dependencies are installed with the flag -t then fetch and install pre-commit-go:

go get -t ./...
go get

Once done, you can send pull requests.

A CLA (form to be determined) may eventually be required for contribution.


Yo Dawg, I heard you like TUI editors, so we wrote one







No releases published


No packages published