Posts Downloads Tags About RSS feed of posts

Led: a simple text editor

Led is a simple text editor. It was written after observing it is in the long run much easier write a custom text editor than it is to configure an existing one.

While led is written from scratch, the key ideas in it are definitely not new. Led is based on vi, but the edit operations bear more resemblence to the text editor Sam. The idea of using text from buffers also for semantic operations was borrowed from Acme. Led is also written entirely in Lisp, much like Emacs.


The editor core was recently rewritten to enable some of the less vi-ish features. Many important features have not yet been added to this version.



$ git clone
$ cd led
$ make
$ bin/led .


Buffer commands

These commands work everywhere regardless off buffer content and edit mode.

Ctrl-n: switch to next buffer

Ctrl-p: switch to previous buffer

Ctrl-h: go to first buffer

Ctrl-q: forcibly close current buffer

Command mode commands

Ctrl-f: forward one page

Ctrl-b: back one page

Ctrl-l: repaint and clear status message

Ctrl-w: write current buffer

Ctrl-x: send current selection to subprocess (if any) and paste output after selection

Enter: open selected file or expand directory contents

i: delete selection and enter insert mode

y: yank selection to copy buffer

$: move to end of current line

w: expand selection by one word

m: wait for a key and mark position

': wait for a key and jump to corresponding marked position

.: select current line, including newline if present

h: move left

j: move down

k: move up

l: move right

H: shrink selection by one letter (as in movement)

J: grow selection to next line (as in movement)

L: grow selection by one letter (as in movement)

0: go to beginnig of line

d: delete selection and place content to yank buffer

p: replace selection with content of yank buffer

u: undo command

r: redo command

>: indent selection

<: unindent selection

%: find matching paren forward

e: select parent lisp expression of current selection

W: select word to which current selection belongs

N: toggle line numbers

/: start searching, currently always from beginnig of buffer

n: find next match to last search

Q: close buffer

Inset mode

Esc: exit instert mode

Ctrl-w: write current buffer, including changes made in insert mode so far

Arrows: move buffer viewport

backspace: delete an inserted character (but stay in selection)


Having issues? Are they related to led? Send email to or file a bug at

#led #project