"jed is a text editor that makes Emacs look like a space shuttle and MS Word like a snail" —Peter Bengtsson
Jed is a rockin' text editor, created by John E. Davis. It combines all the power of Emacs with some (God forbid!) user-friendliness, and support for powerful additions.
Run it just like you'd expect: jed [options] [filename(s)]. If the filename exists, it's loaded into the main buffer; if not, it will be created and your buffer saved to it. If you call it without a filename, you get a scratch buffer and are prompted for a filename when you want to save it. Some of the more useful options are -help (guess what that does), -l filename (load filename as S-Lang code), and -e emulatename (emulate another editor, e.g. emacs or ide).
The first thing you'll notice upon starting it up is a toolbar-like menu across the top of the screen. The menu is accessible with the F10 key, M-m, or even point-and-click-like if you're using GPM on Linux. It gives you easy access to cut-and-paste, search, buffer/window and help functions.
The second-to-last line is the "status line", which by default contains some flags about the current document, the version of Jed you're running, the "mode" you're running under (more about those later), the filename you're working on (relative to wherever you fired up Jed from), the type of syntax highlighting (if any), where you are in the document (a percentage, or "top" or "bot"), and finally the current time.
The very last line is the "mini-buffer", which will show you various messages (including command keystrokes as you type 'em). It's also where Jed will prompt you for things like filenames and buffer names (it even has tab completion and history).
The key shortcuts for your favorite commands depend on the mode you're running under: the default is Emacs; CUA uses standard Windows keybindings; IDE is like Wordstar and some Borland editors. Here's a list of the more useful keystrokes you might want (the prefix "M-" means "Meta", usually Esc or Alt; ^ is Ctrl):
(command) (Emacs) (IDE) (CUA)
quit jed ^X^C ^Kx M-Q
quit minibuffer ^G ^G ^G
open file ^X^F ^Ke / F3 ^O
insert file ^Xi ^Ki M-I
save ^X^S ^Kd / F2 ^S
save as ^X^W ^Ks ??
close file ^Xk ^Kq / M-F3 ??
change buffer ^Xb ^Kp / F6 ??
go to line ^[g ^Qi M-x goto_line_cmd
undo ^_ ^U ^Z
redo ^G^Xu ^G^U ^G^Z
search ^S ^Qf ^F
replace M-% ^Qa ^R
begin block ^@ / ^-spc ^Kb Shift-arrow
cut block ^W ^Ky ^X
copy block M-W ^Kh ^C
paste block ^Y ^Kc ^V
shell command ^[! / M-! M-! M-!
modes and S-Lang
The real power of Jed lies in S-Lang: you can write programs (called "modes") that Jed will interact with. Perhaps the most common example is syntax highlighting: anyone can write a .sl file to define how Jed should behave (i.e. how it should color key words, and maybe some special keybindings or tab/newline behavior) with certain file types. (Jed comes with a nice fat list of support for various languages, and there are many more available online. If someone yells at me enough, I might learn what's what with S-Lang and make a noding mode...one step closer to the Integrated Noding Environment!)
There are many, many modes available. calendar is a neat one that dives you a month-view of a month of your choosing. mail and mail_send let you send mail. (Run a mode by typing M-x modename; if your modename is not found you can exit the prompt with ^G.)
Another neat mode is auto_compression_mode — it can read/write .gz, .Z, and .bz2 files, automatically uncompressing them for reading and recompressing for writing. To enable this mode either type M-x auto_compression_mode for the current session, or add auto_compression_mode (); to ~/.jedrc to enable it by default.
The built-in ispell support is neat, too — stick your cursor somewhere in a word you're unsure about, and type M-$. If you've spelled the word correctly, it'll just say "Correct" in the mini-buffer; otherwise it will pop up a new buffer with suggestions and let you pick one to replace it with.
Fortunately for us absent-minded folk, Jed automagically saves your files after 300 keypresses, and stores backups in filename~ upon saving (can even be configured to preserve and number multiple backups).
After using Jed for a while, you'll probably notice the cursor jumping around when you type ")", "}" or "]". This is pretty useful: it shows you the open parenthesis/brace/bracket that you're closing. It will even alert you if you type a closing mark that has no opener. (Very handy for all programming languages that aren't Python.) You can continue typing, too; no need to wait for the cursor to jump back to where your closing mark is. (If it bugs you, turn it off by adding BLINK = 0; to ~/.jedrc.)
Add a "Recent files" option to the File menu! Just stick () = evalfile ("recent.sl"); into ~/.jedrc. You can further add/delete things from the menu by editing popups.sl (located somewhere like /usr/share/jed/lib).
The other thing you'll notice is that, by default, the home, end, and delete keys do not work. Naturally, this is intolerable, but because of the chewy goodness behind Jed, you can customize it to your heart's content. To add bindings for these useful functions, add this to ~/.jedrc:
setkey ("delete_char_cmd", "^[[3~");
setkey ("beg_of_line", "^[OH");
setkey ("eol_cmd", "^[OF");
(The first value is the function to bind to; M-x <tab> will show you a list of them (^G to get back out). The second quoted value is the actual value of the key/keycombo to bind to; hit backtick (`) and then the key/combo to see what its value is.)
Finally, the backtick (`) inserts literal characters. To insert a plain old backtick, just hit it twice.
The latest version is 0.99-16 (and has been for quite some time); it's pre-1.0 for lack of proper documentation. I don't see this as a very big problem, though, since it's user-friendly enough that most people won't ever need to look at any documentation. Hooray for good design!
Jed's official web site is http://www.jedsoft.org/jed/. There is also an official wiki at http://www.jedsoft.org/wiki/wiki.pl,
This writeup only barely scratches the surface of the stuff you can do with Jed. For an excellent and organized manual, see http://profs.sci.univr.it/~gonzato/jed/jed-quickref.html.
Finally, a nearly-complete list of features:2
- pull-down menus
- mouse support
- multiple windows/buffers
- mini-buffer completion and history
- directory/buffer manager
- 'modes' for editing program sources or markup languages like LaTeX or HTML
- recovery of lost files
- file locking
- loading of compressed files
- folding support
- 8-bit characters and mute-key support
- abbreviations and completion
- shell and compiler interface
- numbered backups
- RCS support
- matching parenthesis highlighting/moving to
- filtering of regions of text
- editing of binary files
- info and man page reader
- incremental search
- ispell word or automatic on the whole buffer
- mail and rmail
- 'occur' search
- plain and regular expression search and replace
- replace across several buffers
- block sorting
- Windows-like cut and paste
- rectangular cut and paste
- editable tab positions
- tab/space conversion
- reformatting of paragraphs
- CR/LF independence
- key codes
- VMS help
- mime filtering
This writeup is dedicated to my good friend Lex, who A) convinced me to start using Linux, B) told me to shut up and use Slackware, and C) made me aware of the benefits of Jed over pico. Thanks, Lex.
References used in this writeup: the jed homepage (1); that excellent reference manual by Guido Gonzato (2); personal experience. The opening quote is from Peter Bengtsson's blog, www.peterbe.com (8 May 2004).