leaf(1) Lightweight Editor of Ascii(and more) Files


leaf [-f] [-d dictionary] [+n] [filename]



is a simple console text file editor, with paragraph word-wrapping and spell checking. leaf is based on the text editor in the Cone mail reader and composer. leaf opens filename, positioning the cursor on the first line, or line #n, if specified.

This is not really the best editor for program sources. leaf is meant to be used as a quick editor for writing short notes and memos. As text is typed, words will automatically flow to wrap within a typical 80-character terminal display, even on larger display (due to leaf's heritage as an editor for E-mail messages, which are traditionally formatted to fit an 80-character display). Word wrapping is "lazy": only long text lines are wrapped. Short text lines are not folded together. Individual paragraphs are separated by blank lines of text. Press CTRL-J to optimally rejustify the paragraph under the cursor. The bottom two lines on the screen list which keys to press for other functions.

Flowed text

The -f option enables "flowed text" formatting convention. Plain text files have no explicit means for joining multiple lines into logical paragraph. Each line of text is an individual line, and a blank line marks the end of a paragraph.

In a "flowed text" formatted file, each line in a paragraph except the last one ends with a space character. This makes no visual difference, it's just a marker that this line should be merged with the next line. The last line in the paragraph does not end in a space character.

The trailing space character is logically removed from each flowed line, and all flowed lines are merged into a logical paragraph that can be adjusted to any display width. It's important to note that text written in non-ideographic languages, where individual words are separated by spaces, will have two space characters at the end of every line: the space character that separates the last word on the line from the first word on the next line, and the a second space character that marks the line as a flowed line.

Because the trailing space marking a flowed line is logically removed, without the second space character there will not be a logical space between the two words, and if the paragraph's width is adjusted for display the two words may get combined together.

The -f option puts leaf into flowed text mode, removing spaces from each flowed line of text in an opened file. A flowed line is marked on the screen with a "<" character in the right margin (or a small "next line" character on a UTF-8 display). When saving a file leaf automatically adds a trailing space to each line that's marked as flowed.

The flowed text mode stays in effect for each file opened in leaf. When opening another file, press CTRL-F to turn flowed mode on or off for the next file. This change stays in effect until it gets toggled again.

Pressing CTRL-J optimally rejustifies the text in flowed text mode. leaf heuristically determines the start and the end of the paragraph, readjusts the width of the paragraph, and marks each line as flowed, except the last paragraph line. leaf uses a unicode-based algorithm for determining whether the last character line needs a space character, in addition to the flowed space marker.


leaf is frequently used to edit plain text email message content. Because email messages assign some semantical meaning to lines of text that start with spaces or ">" characters, CTRL-J will not rejustify lines of text that begin with a ">" or a space. These lines will be considered paragraph boundaries, in addition to blank lines.

Spell checking

The -d option sets the name of the dictionary used for spell checking (overriding the default spell checking dictionary set by the DICTIONARY environment variable). +n sets the initial cursor position to line #n.


Sam Varshavchik