Sven Guckes 1995-2015

Latest change: Fr Jun 26 21:00:00 CEST 2015

PICO - the PIne COmposer - a simple editor

PICO means "very small" and also stands for "PIne COmposer" (or "Pine Internal COmposer"), ie it is a text editor (composer) that ships with the Unix/DOS newsreader "PINE".

PICO is designed to be a "simple editor", ie only the bare minimum of commands and simply to use. Very good for beginners who wish to write emails and posts.

The editor "Nano" is an OpenSource project/program to replace PICO. See my article about from pico to nano [2000-01-27] and nano's homepage at

PICO - Overview

On this page: Separate pages:

PICO - Command Analysis

Historic Fact

PICO commands derived from MicroEmacs-3.6 (so the manual says).

Command Set

PICO does not have many commands - you can learn them within an hour or so. But these commands are the commands you would definitely need to edit a text.

PICO's commands are one-key only, ie there are no commands where you have to issue a sequence of two or more keys.


PICO is always in "insert mode", ie all letters are never interpreted as commands but inserted into the text. This is less confusing to a beginner than modal editors where letters can be interpreted as commands depending on the mode.

Half the commands are "jump commands" that move the cursor. This is really basic stuff - you should get use to these within minutes.

top line (version, filename, modified)

The line at the top of the screen shows the version number ("UW PICO(tm) 2.9") the filename, and an indicator to show that editing has changed the copy of the file you are working on ("Modified").

edit area

The edit area are all lines except the first and the last three.

info line
The third last line is reserved for messages and prompts.
After cancelling a command with ^C you get the message "[ Cancelled ]".
Atfer using ^O to write out the edited text to a file you get the prompt for the file name: "File Name to write : filename".

help lines
The last two lines are reserved for help on the vailable commands. Therefore you need not look for a manual to be able to use it.
The standard help lines look like this: ^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos ^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text^T To Spell

From the manual: "The editor has five basic features: paragraph justification, searching, block cut/paste, a spelling checker, and a file browser."

^J ("Justify")
paragraph justification

^T ("To Spell")
Spell Checking, Spelling Checker

PICO (mis)features

Misfeatures and pet peeves.
Inconsistency of Commands [2000-11-16]
Chris Allegretta
In replace mode (-b), if you replace with "" (don't enter anything),
PICO assumes you are replacing with the null string!
In EVERY OTHER MODE a blank string means "default" or "cancel".

word wrap [1999-12-13]
PICO automatically wraps words onto the next line - or not. This settings depends on the initial setting with option "-w". You cannot change this from within the running PICO. No way.
That's the reason why NANO now has "toggles". :-)

version number not from command line [1997-03-05]
PICO displays the version number on screen after startup - but you cannot request this information on the command line. It would be nice if PICO had an option for that, preferably both "-v" and the long option name "--version".
nano-0.8.8 does is perfetcly:
$nano -V
 nano version 0.8.8 by Chris Allegretta (compiled 16:53:56, Mar 18 2000)
 Email:   Web:

no override/quote/escape command [1997-03-05]
You cannot "override" command characters (ie characters that are interpreted as command). Example: ^L - it always get interpreted as a command. Therefore you cannot enter it to your texts. [Vi has ^V to override special characters in insert mode, eg ^D and ^T.]

Command "write" changes current filename
Fact: The command to "write" the current buffer to a file is ^O (control-o).
Problem: Assume you are editing the file named "X". Writing the current buffer to a different file Y will also cause PICO to change the current filename to Y. So when you want to make a backup of the current contents of the buffer to some other file Y then PICO will retain the filename Y and you must remember to switch back to the file X when you write again. This is annoying when you are writing a mail, ie some temporary file and write a copy to some other file, as it can happen that you continue to edit the copy but not the temp file which you then send off.
Workaround: Start PICO with the option 't', ie pico -t.

maximum line length forces wrap [1998-10-23]
PICO cannot read lines over 255 characters in length without wrapping. This is not affected by the -w flag. But I was told that with pine-4.03 this limitation has been fixed.


Jump to End
Q: How do you jump to the end of the buffer?
A: To jump to the end of the buffer use the command CTRL-W CTRL-V.
Search :
^G Get Help  ^Y FirstLine ^T LineNumber^O End of Par
^C Cancel    ^V LastLine  ^W Start of P

Q: Does PICO have an "undo" command?
A: Yes, use ^U to undo the last operation (insert/delete).

Startup Options [1997-03-29]
Q: Someone mentioned the startup option "-k". But this isn't mentioned in my manual about pico. What does it do?
-k  Causes "Cut Text" command to remove characters from the cursor position
    to the end of the line rather than remove the entire line.

Q: How can I suspend Pico?
A: You can suspend PICO with ^Z - but only if PICO was started allowing this (option "-.").
Q: How do I return to PICO after I had it suspended?
A: Use the command "fg" ("foreground") to exit the shell and return to PICO.

Spell checking
Q: How can I make the spell checker check only the current word?
A: The spell checker cannot be applied to parts of the text (eg the current word).
Q: How can I make the spell checker skip quoted text (when sending a reply)?
A: The spell checker does not skip quoted text.
[Yes, this is really frustrating.]

Quick Jumps
Q: How can I jump around in the file without having to move the cursor line by line?
A: To jump quickly to another position of the file use the search command - ^W.

Quick save and exit
Q: Is there a way to save and quit PICO without having to answer questions?
A: Start PICO with the option '-t' - then you can save and quit with ^X.

ANSI / color
Q: Which characters do I have to insert to my text to make it appear as bold/underline/invers or in color on the monitor of the recipient of my text (mail)?
A: Well, this all depends on the monitor (terminal) of the recipient. You would to exactly know which kind it is and what "language" it understands. Besides, you would have to make sure that the characters inside the text will not be misinterpreted by all programs that transport your mail. This is usually impossible to know. Furthermore, if you post such a thing then you are asking for trouble - the control codes certainly never fit all terminals. It actually makes some terminals lock up and even force a reboot of some computers. So this is "unneccessary, annoying and generally unwanted". In short: Don't do it!

Feature Extension [1998-01-01]
Q: How can I add features to pico? How about a goto-line command? Or "substitution" (aka "search and replace")?
A: PICO is supposed to be "as small as possible". Adding features would totally defeat its purpose. If all requested features had been added to pico, its name now would be "kilo" or "mega". Or "emacs". ;-)
Q: But why couldn't you just add [this little feature]? It addds very little to the code and could be sooo helpful!
A: There are many editors about with just a little more than pico. Try them!

"Justify" (Text Reformatting) [1999-03-03]
Q: Can pico reformat quoted text?
A: Yes, pico preserves the quotation indentation of quoted text. But this is limited to text quoted with ">" and the first level of quotation *only*.
Q: How can I reformat text that has been quoted more than once?
Q: How can I reformat text with other quote indentation?
A: Use another editor, eg vim. [See also the page on "text reformatting with Vim".]
Q: How about enhancing pico so that it can "justify" several levels of quoted text?
A: Yes - that's a good idea. Tell the developers! Or use Vim.

Q: Why can't I use the command ^^ (control-^)?
A: You are probably using a terminal program that swallos this character (eg NCSATelnet-2.6). Either upgrade to a version which fixes this problem (eg NCSATelnet-2.7b4) or use this workaround: Enter ESC-ESC-^ instead. Actually, this is a special case of a general workaround:
From the manual: "As a work-around for communications programs that swallow certain control characters, you can emulate a control key by pressing ESCAPE twice, followed by the desired control character, e.g. "ESC ESC c" would be equivalent to entering a ctrl-c."

Pico Distribution/Download

a) pine requires the pico libraries,
b) there is no separate pico distribution, and
c) the default make files build both pine and (stand alone) pico.
Summary: You have to download the pine distribution file to install pico. Yes, the distribution of pine-4.10 compressed with GNU zip is about 2.7Mb. I think that's too much to download for installing a simple editor. ;-) But that's why there are precompiled versions of pico (and pine) on the UW server with compressed binaries.

PICO Distribution -> PINE Home Page
PICO is distributed with the newsreader PINE. The following page tells where to get sources and binaries of PINE (which include PICO):
Binaries for DOS: (DJGPP) [1999-07-26] 228 Kb    Thu Sep 25 00:00:00 1997 185 Kb    Thu Jun 25 00:00:00 1998
Binaries for Unix: [1997-01-06,1998-05-14]

PICO - Links

NANO [2000-01-09,2001-01-07]
aka [old]
An OpenSource project to replace PICO.
Author: Chris Allegretta

PICO HomePage

My page that explains why Vi is better than PICO. With examples to illustrate some of VI's concepts.

About the PICO editor [2000-12-05,2001-01-07]
Author: Allin Cottrell [December 1995]
A very short intro to editing with pico.

PICO Tutorial
Author: "NCSU Computing Center" (are these humans?)

PICO Commands [1997-01-16]
An overview of the commands available in PICO.

(Swedish) HowTo - Introduktion till Pico [2001-01-28]

PICO and Netscape Gold [2003-05-29]
"Last modified: Tue, 04 Mar 1997 20:05:20 GMT"

[made with Pico(tm) 10^-12] created with Vim
Created:       Wed May  8 00:00:00 MET 1996
Latest change: Fr Jun 26 21:00:00 CEST 2015
exit Send feedback on this page to
Sven Guckes