Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
JOE(1)			    General Commands Manual			JOE(1)

       joe - Joe's Own Editor

       joe [global-options] [ [local-options] filename ]...

       jstar [global-options] [	[local-options]	filename ]...

       jmacs [global-options] [	[local-options]	filename ]...

       rjoe [global-options] [ [local-options] filename	]...

       jpico [global-options] [	[local-options]	filename ]...

       jupp [global-options] [ [local-options] filename	]...

       JOE  is a powerful ASCII-text screen editor.  It	has a "mode-less" user
       interface which is similar to many user-friendly	PC editors.  Users  of
       Micro-Pro's  WordStar or	Borland's "Turbo" languages will feel at home.
       JOE is a	full featured UNIX screen-editor though, and has many features
       for editing programs and	text.

       JOE also	emulates several other editors.	 JSTAR is a close imitation of
       WordStar	with many "JOE"	extensions.  JPICO is a	close imitation	of the
       Pine  mailing  system's	PICO  editor, but with many extensions and im-
       provements.  JMACS is a GNU-EMACS imitation.  RJOE is a restricted ver-
       sion  of	 JOE, which allows you to edit only the	files specified	on the
       command line.

       Although	JOE is actually	six different editors, it still	requires  only
       one executable, but one with six	different names.  The name of the edi-
       tor with	an "rc"	appended gives the name	of JOE's initialisation	 file,
       which determines	the personality	of the editor.

       JUPP is free software; you can distribute it and/or modify it under the
       terms of	the GNU	General	Public License,	Version	1, as published	by the
       Free  Software Foundation.  (main.c contains more detailed exceptions.)
       I have no plans for turning JOE into a commercial or  share-ware	 prod-
       uct.   See  the source code for exact authorship	and licencing informa-
       tion.   JOE  is	available  over	 the  Internet	from   http://joe-edi-  JUPP is available at

       To  start  the editor, type joe followed	by zero	or more	names of files
       you want	to edit.  Each file name may be	preceded  by  a	 local	option
       setting	(see the local options table which follows).  Other global op-
       tions, which apply to the editor	as a whole, may	also be	placed on  the
       command	line (see the global options table which follows).  If you are
       editing a new file, you can either give the name	of the new  file  when
       you  invoke the editor, or in the editor	when you save the new file.  A
       modified	syntax for file	names is provided to allow you to edit program
       output,	standard  input/output,	 or sections of	files or devices.  See
       the section Filenames below for details.

       On cygwin32 systems, the	special	option -CYGhack	is  replaced  by  any-
       thing  that  comes  past	 it (and separating whitespace)	on the command
       line as one option (to work around a Cygwin bug as it cannot  correctly
       be  passed  a UNC pathname with spaces as one argument from Explorer at

       Once you	are in the editor, you can type	in text	and use	 special  con-
       trol-character  sequences  to perform other editing tasks.  To find out
       what the	control-character sequences are, read the  rest	 of  this  man
       page or type ^K H for help in the editor.

       Now for some obscure computer-lore:

       The  ^ means that you hold down the Control key while pressing the fol-
       lowing key (the same way	the Shift key works for	uppercase letters).  A
       number  of  control-key sequences are duplicated	on other keys, so that
       you don't need to press the control key:	ESC will work in place of  ^[,
       Del  will  work in place	of ^?, Backspace will work in place of ^H, Tab
       will work in place of ^I, Return	or Enter will work in place of ^M  and
       Linefeed	will work in place of ^J.  Some	keyboards may give you trouble
       with some control keys.	^_, ^^ and ^@ can usually be  entered  without
       pressing	shift (I.E., try ^-, ^6	and ^2).  Other	keyboards may reassign
       these to	other keys.  Try: ^., ^, and ^/.  ^SPACE can usually  be  used
       in  place  of ^@.  ^\ and ^] are	interpreted by many communication pro-
       grams, including	telnet and kermit.  Usually you	just hit the key twice
       to get it to pass through the communication program.

       Once  you  have typed ^K	H, the first help window appears at the	top of
       the screen.  You	can continue to	enter and edit	text  while  the  help
       window  is on.  To page through other topics, hit ^[, and ^[. (that is,
       ESC , and ESC .).  Use ^K H to dismiss the help window.

       You can customise the keyboard layout, the help screens and a number of
       behavior	  defaults  by	copying	 JOE's	initialisation	file  (usually
       /usr/local/etc/joe/joerc) to .joerc in your home	directory and then  by
       modifying  it.	See the	section	joerc below.  The filename is actually
       .namerc where name is the argv[0] the editor is called with.

       Custom syntax files are loaded from .jupp/syntax/name.jsf in your  home
       directory  and  .jupp/charmaps/name holds custom	charmaps (name here is
       the name	of the syntax or charmap).

       To have JOE used	as your	default	editor for e-mail and News,  you  need
       to  set	the EDITOR and VISUAL environment variables in your shell ini-
       tialisation file	(.cshrc	or .profile) to	refer to JOE (the  joe	binary
       usually resides as /usr/local/bin/joe).

       There  are  a  number  of other obscure invocation parameters which may
       have to be set, particularly if your terminal screen is not updating as
       you think it should.  See the section Environment variables below.

Command	Line Options
       The following global options may	be specified on	the command line:

       -asis  Characters with codes above 127 will be sent to the terminal as-
	      is, instead of as	inverse	of the corresponding  character	 below
	      128.  If this does not work, check your terminal server.

       -backpath path
	      If  this	option	is  given,  backup files will be stored	in the
	      specified	directory instead of in	each  file's  original	direc-

       -baud nnn
	      Set  the baud rate for the purposes of terminal screen optimisa-
	      tion.  Joe inserts delays	for baud rates below 19200, which  by-
	      passes tty buffering so that typeahead will interrupt the	screen
	      output.  Scrolling commands will not be  used  for  38400	 baud.
	      This  is	useful for X-terms and other console ttys which	really
	      aren't going over	a serial line.

       -beep  Joe will beep on command errors and when the  cursor  goes  past

       -columns	nnn
	      Sets the number of screen	columns.

	      Continued	 search	 mode: a search	immediately following a	search
	      will repeat the previous search instead  of  prompting  for  new
	      string.  This is useful for the the ^[S and ^[R commands and for
	      when joe is trying to be emacs.

	      Joe usually assumes that there is	some kind of flow control  be-
	      tween it and the tty.  If	there isn't, this option will make joe
	      output extra ^@s to the tty as specified by the  termcap	entry.
	      The extra	^@s allow the terminal to catch	up after long terminal

       -exask This option makes	^KX verify the file name that  it's  about  to

       -force This  option  makes  sure	 that  the last	line of	the file has a
	      line-feed	which it's saved.

       -help  The editor will start with the help screen on if this option  is

	      Normally	the column number and control-key prefix fields	of the
	      status lines are on a one	second delay to	 reduce	 CPU  consump-
	      tion,  but  with	this  option  they are updated after each key-

	      The block	highlighting will go away after	any block  command  if
	      this option is given.

       -lines nnn
	      Sets the number of screen	lines.

	      Text  between  ^KB  and  the  cursor  is	highlighted  (use with
	      -lightoff	and a modified joerc file to  have  drop-anchor	 style
	      block selection).

       -mid   If  this	option is set and the cursor moves off the window, the
	      window will be scrolled so that the cursor  is  in  the  center.
	      This  option  is	forced	on  slow  terminals  which  don't have
	      scrolling	commands.

	      This option prevents backup files.

	      This option prevent the copyright	notice	from  being  displayed
	      when the editor starts.

       -nosta This  option eliminates the top-most status line.	 It's nice for
	      when you only want to see	your text on the screen	or  if	you're
	      using a vt52.

       -noxon Attempt  to  turn	off ^S/^Q processing.  This is useful for when
	      joe is trying to be WordStar or EMACS.

	      When this	option is active, extra	files on the command line will
	      be placed	in orphaned buffers instead of in extra	windows.  This
	      is useful	for when joe is	trying to be emacs.

       -pg nnn
	      This specifies the number	 of  lines  to	keep  after  PgUp/PgDn
	      (^U/^V).	If -1 is given,	half the window	is kept.

       -skiptop	nnn
	      Don't  use the top nnn lines of the screen.  Useful for when joe
	      is used as a BBS editor.

       Each of these options may be specified in the joerc file	as  well.   In
       addition,  the NOXON, BAUD, LINES, COLUMNS and DOPADDING	options	may be
       specified with environment  variables.	See  the  section  Environment
       variables below.

       The following options may be specified before each filename on the com-
       mand line:

       +nnn   The cursor starts	on the specified line.

       -crlf  Joe uses CR-LF as	the end	of line	sequence instead of  just  LF.
	      This is for editing MS-DOS or VMS	files.

       -hex   Sets the buffer to hex edit mode.

	      Joe wraps	the previous word when you type	past the right margin.

	      When  you	hit Return on an indented line,	the indentation	is du-
	      plicated onto the	new line.

	      Typing overwrites	existing characters instead of	inserting  be-
	      fore them.

       -lmargin	nnn
	      Sets the left margin.

       -rmargin	nnn
	      Sets the right margin.

       -tab nnn
	      Sets the tab width.

       -indentc	nnn
	      Sets  the	indentation character for ^K, and ^K. (32 for SPACE, 9
	      for TAB).

       -istep nnn
	      Sets the indentation step	for ^K,	and ^K..

	      Line numbers are displayed before	each line.

	      The file is read only.

       -keymap name
	      Use an alternate section of the joerc file for the key  sequence
	      bindings.	  For  example,	 joe,  jstar,  rjoe  and  jupp support
	      -keymap cua to make ^Z, ^X, ^C and ^V do the same	 thing	as  in
	      contemporary GUI editors.

       These options can also be specified in the joerc	file.  They can	be set
       depending on the	file-name extension.  Programs (.c, .h	or  .p	exten-
       sion)  usually  have  autoindent	enabled.  Wordwrap is enabled on other
       files, but rc files have	it disabled.

Editing	Tasks
   Basic Editing
       When you	type characters	into the editor, they  are  normally  inserted
       into the	file being edited (or appended to the file if the cursor is at
       the end of the file).  This is the normal operating mode	of the editor.
       If  you	want to	replace	some existing text, you	have to	delete the old
       text before or after you	type in	the replacement	text.	The  Backspace
       key  can	 be used for deleting text: move the cursor to right after the
       text you	want to	delete and hit Backspace a number of times.

       Hit the Enter or	Return key to insert a line-break.   For  example,  if
       the  cursor  was	 in  the middle	of a line and you hit Return, the line
       would be	split into two lines with the cursor appearing at  the	begin-
       ning  of	 the second line.  Hit Backspace at the	beginning of a line to
       eliminate a line-break.

       Use the arrow keys to move around the file.  If your  keyboard  doesn't
       have arrow keys (or if they don't work for some reason),	use ^F to move
       forwards	(right), ^B to move backwards (left), ^P to move to the	previ-
       ous  line  (up),	and ^N to move to the next line	(down).	 The right and
       left arrow keys simply move forwards or backwards one  character	 at  a
       time  through  the  text:  if you're at the beginning of	a line and you
       press left-arrow, you will end up at the	end of the previous line.  The
       up and down arrow keys move forwards and	backwards by enough characters
       so that the cursor appears in the same column that it  was  in  on  the
       original	line.

       If  you	want  to  indent  the text you enter, you can use the TAB key.
       This inserts a special control character	 which	makes  the  characters
       which  follow  it begin at the next TAB STOP.  TAB STOPS	normally occur
       every 8 columns,	but this can be	changed	with the ^T D command.	Python
       programmers often set TAB STOPS on every	4 columns.

       If for some reason your terminal	screen gets messed up (for example, if
       you receive a mail notice from biff), you can have the  editor  refresh
       the screen by hitting ^R.

       There are many other keys for deleting text and moving around the file.
       For example, hit	^D to delete the character the cursor is on instead of
       deleting	backwards like Backspace.  ^D will also	delete a line-break if
       the cursor is at	the end	of a line.  Type ^Y to delete the entire  line
       the cursor is on	or ^J to delete	just from the cursor to	the end	of the

       Hit ^A to move the cursor to the	beginning of the line it's on.	Hit ^E
       to  move	the cursor to the end of the line.  Hit	^U or ^V for scrolling
       the cursor up or	down 1/2 a screen's worth.  "Scrolling"	means that the
       text  on	the screen moves, but the cursor stays at the same place rela-
       tive to the screen.  Hit	^K U or	^K V to	move the cursor	to the	begin-
       ning or the end of the file.  Look at the help screens in the editor to
       find even more delete and movement commands.

       If you make a mistake, you can hit ^_ to	"undo" it.  On most  keyboards
       you  hit	just ^-	to get ^_, but on some you might have to hold both the
       Shift and Control keys down at the same time to get it.	If you	"undo"
       too  much, you can "redo" the changes back into existence by hitting ^^
       (type this with just ^6 on most keyboards).

       If you were editing in one place	within the file, and you  then	tempo-
       rarily  had  to	look or	edit some other	place within the file, you can
       get back	to the original	place by hitting ^K -.	This command  actually
       returns	you  to	the last place you made	a change in the	file.  You can
       step through a history of places	with ^K	- and ^K =, in	the  same  way
       you  can	step through the history of changes with the "undo" and	"redo"

       When you	are done editing the file, hit ^K X to exit the	 editor.   You
       will  be	 prompted for a	file name if you hadn't	already	named the file
       you were	editing.

       When you	edit a file, you actually edit only a copy of the file.	 So if
       you  decide that	you don't want the changes you made to a file during a
       particular edit session,	you can	hit ^C to exit the editor without sav-
       ing them.

       If  you	edit a file and	save the changes, a "backup" copy of that file
       is created in the current directory, with a ~  appended	to  the	 name,
       which contains the original version of the file.

   Word	wrap and formatting
       If you type past	the right edge of the screen in	a C language or	PASCAL
       file, the screen	will scroll to the right to follow the cursor.	If you
       type past the right edge	of the screen in a normal file (one whose name
       doesn't end in .c, .h or	.p), JOE will automatically wrap the last word
       onto  the  next	line  so  that	you don't have to hit Return.  This is
       called word-wrap	mode.  Word-wrap can be	turned on or off with the ^T W
       command.	 JOE's initialisation file is usually set up so	that this mode
       is automatically	turned on for all non-program files.  See the  section
       below on	the joerc file to change this and other	defaults.

       Aside  for  Word-wrap  mode, JOE	does not automatically keep paragraphs
       formatted like some word-processors.  Instead, if you need a  paragraph
       to  be  reformatted,  hit  ^K J.	 This command "fills in" the paragraph
       that the	cursor is in, fitting as many words in a line as is  possible.
       A paragraph, in this case, is a block of	text separated above and below
       by a blank line.

       The margins which JOE uses for paragraph	formatting and	word-wrap  can
       be set with the ^T L and	^T R commands.	If the left margin is set to a
       value other than	1, then	when you start typing at the  beginning	 of  a
       line, the cursor	will immediately jump to the left margin.

       If you want to center a line within the margins,	use the	^K A command.

   Over-type mode
       Sometimes  it's tiresome	to have	to delete old text before or after you
       insert new text.	 This happens, for example, when you  are  changing  a
       table and you want to maintain the column position of the right side of
       the table.  When	this occurs, you can put the editor in over-type  mode
       with ^T T.  When	the editor is in this mode, the	characters you type in
       replace existing	characters, in the way an idealised typewriter	would.
       Also,  Backspace	simply moves left instead of deleting the character to
       the left, when it's not at the end or beginning of a  line.   Over-type
       mode is not the natural way of dealing with text	electronically,	so you
       should go back to insert-mode as	soon as	possible by typing ^T T	again.

       If you need to insert while you're in over-type mode, hit ^@.  This in-
       serts a single SPACE into the text.

   Control and Meta characters
       Each character is represented by	a number.  For example,	the number for
       'A' is 65 and the number	for '1'	is 49.	All of	the  characters	 which
       you normally see	have numbers in	the range of 32	- 126 (this particular
       arbitrary assignment between characters and numbers is called the ASCII
       character  set).	  The  numbers	outside	 of this range,	from 0 to 255,
       aren't usually displayed, but sometimes have  other  special  meanings.
       The number 10, for example, is used for the line-breaks.	 You can enter
       these special, non-displayed control characters by first	hitting	`  and
       then  hitting  a	 character in the range	@ A B C	... X Y	Z [ ^ ]	\ _ to
       get the number 0	- 31, and ? to get 127.	 For example, if you hit `  J,
       you'll  insert a	line-break character, or if you	hit ` I, you'll	insert
       a TAB character (which does the same thing the TAB key does).  A	useful
       control	character  to enter is 12 (` L), which causes most printers to
       advance to the top of the page.	You'll notice that JOE	displays  this
       character  as an	underlined L.  You can enter the characters above 127,
       the meta	characters, by first hitting ^\.  This adds 128	 to  the  next
       (possibly  control)  character  entered.	 JOE displays characters above
       128 in inverse-video.  Some foreign languages, which have more  letters
       than  English,  use the meta characters for the rest of their alphabet.
       You have	to put the editor in ASIS mode (described later) to have these
       passed untranslated to the terminal.

       If  you	hit  TAB at any	file name prompt, joe will attempt to complete
       the name	you entered as much as possible.  If it	couldn't complete  the
       entire  name, because there are more than one possible completions, joe
       beeps.  If you hit TAB again, joe list the completions.	 You  can  use
       the  arrow  keys	to move	around this directory menu and press RETURN or
       SPACE to	select an item.	 If you	press the first	letter of one  of  the
       directory  entries,  it will be selected, or if more than one entry has
       the same	first letter, the cursor will jump between those entries.   If
       you  select a subdirectory or .., the directory name is appended	to the
       prompt and the new directory is loaded into  the	 menu.	 You  can  hit
       Backspace to go back to the previous directory.

       Most  prompts record a history of the responses you give	them.  You can
       hit up and down arrow to	step through these histories.

       Prompts are actually single line	windows	with no	status	line,  so  you
       can  use	 any  editing command that you normally	use on text within the
       prompts.	 The prompt history is actually	just other lines of  the  same
       "prompt	file".	 Thus  you  can	can search backwards though the	prompt
       history with the	normal ^K F command if you want.

       Since prompts are windows, you can also switch out of them  with	 ^K  P
       and ^K N.

   Where am I?
       Hit  ^K	SPACE  to  have	JOE report the line number, column number, and
       byte number on the last line of the screen.  The	number associated with
       the character the cursor	is on (its ASCII code) is also shown.  You can
       have the	line number and/or column number always	displayed on the  sta-
       tus  line  by  setting  placing the appropriate escape sequences	in the
       status line setup strings.  Edit	the joerc file for details.

   File	operations
       You can hit ^K D	to save	the current file (possibly under  a  different
       name  from  what	 the  file  was	called originally).  After the file is
       saved, you can hit ^K E to edit a different file.

       If you want to save only	a selected section of the file,	see  the  sec-
       tion on Blocks below.

       If  you want to include another file in the file	you're editing,	use ^K
       R to insert it.

   Temporarily suspending the editor
       If you need to temporarily stop the editor and go back  to  the	shell,
       hit  ^K	Z.   You might want to do this to stop whatever	you're editing
       and answer an e-mail message or read this man page, for	example.   You
       have to type fg or exit (you'll be told which when you hit ^K Z)	to re-
       turn to the editor.

   Searching for text
       Hit ^K F	to have	the editor search forwards or  backwards  for  a  text
       fragment	(string) for you.  You will be prompted	for the	text to	search
       for.  After you hit Return, you are prompted to enter options.  You can
       just  hit  Return  again	to have	the editor immediately search forwards
       for the text, or	you can	enter one or more of these options:

       b      Search backwards instead of forwards.

       i      Treat uppercase and lower	case letters as	the same when  search-
	      ing.  Normally uppercase and lowercase letters are considered to
	      be different.

       nnn    (where nnn is a number) If you enter a number, JOE searches  for
	      the  Nth	occurrence  of	the text.  This	is useful for going to
	      specific places in files structured in some regular manner.

       r      Replace text.  If	you enter the r	option,	then you will be  fur-
	      ther  prompted for replacement text.  Each time the editor finds
	      the search text, you will	be prompted as to whether you want  to
	      replace  the  found  search text with the	replacement text.  You
	      hit: y to	replace	the text and then find the next	occurrence,  n
	      to  not replace this text, but to	then find the next occurrence,
	      l	to replace the text and	then stop searching, r to replace  all
	      of the remaining occurrences of the search text in the remainder
	      of the file without asking for confirmation (subject to the  nnn
	      option above), or	^C to stop searching and replacing.

       You can hit ^L to repeat	the previous search.

   Regular Expressions
       A number	of special character sequences may be entered as search	text:

       \*     This  finds  zero	 or more characters.  For example, if you give
	      A\*B as the search text, JOE will	try to find an A  followed  by
	      any number of characters and then	a B.

       \?     This finds exactly one character.	 For example, if you give A\?B
	      as the search text, JOE will find	AXB, but not AB	or AXXB.

       \^ \$  These match the beginning	and end	of a line.   For  example,  if
	      you give \^test\$, then JOE with find test on a line by itself.

       \< \>  These  match  the	 beginning and end of a	word.  For example, if
	      you give \<\*is\*\>, then	joe will find whole words  which  have
	      the sub-string is	within them.

       \[...] This  matches  any  single  character  which  appears within the
	      brackets.	 For example, if \[Tt]his is  entered  as  the	search
	      string, then JOE finds both This and this.  Ranges of characters
	      can be entered within the	brackets.  For example,	 \[A-Z]	 finds
	      any  uppercase  letter.	If  the	 first	character given	in the
	      brackets is ^, then JOE tries to find any	character not given in
	      the the brackets.

       \c     This  works  like	 \*, but matches a balanced C-language expres-
	      sion.  For example, if you search	for malloc(\c),	then JOE  will
	      find  all	function calls to malloc, even if there	was a )	within
	      the parenthesis.

       \+     This finds zero or more of the character which immediately  fol-
	      lows  the	 \+.   For  example, if	you give \[ ]\+\[ ], where the
	      characters within	the brackets are both SPACE and	TAB, then  JOE
	      will find	whitespace.

       \\     Matches a	single \.

       \n     This finds the special end-of-line or line-break character.

       A  number  of  special character	sequences may also be given in the re-
       placement string:

       \&     This gets	replaced by the	text which matched the search  string.
	      For  example,  if	 the  search  string was \<\*\>, which matches
	      words, and you give "\&",	then joe will put quote	 marks	around

       \0 - \9
	      These  get  replaced with	the text which matched the Nth \*, \?,
	      \+, \c, \+, or \[...] in the search string.

       \\     Use this if you need to put a \ in the replacement string.

       \n     Use this if you need to put  a  line-break  in  the  replacement

       Some examples:

       Suppose	you  have  a list of addresses,	each on	a separate line, which
       starts with "Address:" and has each element separated by	commas.	  Like

       Address:	S. Holmes, 221b	Baker St., London, England

       If you wanted to	rearrange the list, to get the country first, then the
       city, then the person's name, and then the address, you could do	this:

       Type ^K F to start the search, and type:


       to match	"Address:", the	four comma-separated elements,	and  then  the
       end  of	the line.  When	asked for options, you would type r to replace
       the string, and then type:


       To shuffle the information the way you want it. After  hitting  return,
       the search would	begin, and the sample line would be changed to:

       Address:	England, London, S. Holmes, 221b Baker St.

       If  you	want to	move, copy, save or delete a specific section of text,
       you can do it with highlighted blocks.  First, move the cursor  to  the
       start of	the section of text you	want to	work on, and press ^K B.  Then
       move the	cursor to the character	just after the end  of	the  text  you
       want  to	 affect	 and  press  ^K	K.  The	text between the ^K B and ^K K
       should become highlighted.  Now you can move your cursor	 to  someplace
       else  in	 your  document	 and  press  ^K	M to move the highlighted text
       there.  You can press ^K	C to make a copy of the	highlighted  text  and
       insert it to where the cursor is	positioned.  ^K	Y to deletes the high-
       lighted text.  ^K W, writes the highlighted text	to a file.

       A very useful command is	^K /, which filters a block of text through  a
       unix command.  For example, if you select a list	of words with ^K B and
       ^K K, and then type ^K /	sort, the list of words	will be	 sorted.   An-
       other  useful unix command for ^K /, is tr.  If you type	^K / tr	a-z A-
       Z, then all of the letters in the highlighted block will	 be  converted
       to uppercase.

       After  you  are finished	with some block	operations, you	can just leave
       the highlighting	on if you don't	mind it	(of course,  if	 you  acciden-
       tally  hit  ^K  Y without noticing...).	If it really bothers you, how-
       ever, just hit ^K B ^K K, to turn the highlighting off.

   Indenting program blocks
       Auto-indent mode	toggled	with the ^T I command.	The joerc is  normally
       set  up so that files with names	ending with .p,	.c or .h have auto-in-
       dent mode enabled.  When	auto-indent mode is enabled and	 you  hit  Re-
       turn,  the cursor will be placed	in the same column that	the first non-
       SPACE/TAB character was in on the original line.

       You can use the ^K , and	^K . commands to shift a block of text to  the
       left or right.  If no highlighting is set when you give these commands,
       the program block the cursor is located in will be selected,  and  will
       be  moved  by subsequent	^K , and ^K . commands.	 The number of columns
       these commands shift by can be set through a ^T option.

       You can edit more than one file at the same time	or edit	 two  or  more
       different  places of the	same file.  To do this,	hit ^K O, to split the
       screen into two windows.	 Use ^K	P or ^K	N to move the cursor into  the
       top  window or the lower	window.	 Use ^K	E to edit a new	file in	one of
       the windows.  A window will go away when	you save the file with ^K X or
       abort  the  file	with ^C.  If you abort a file which exists in two win-
       dows, one of the	window goes away, not the file.

       You can hit ^K O	within a window	to create even more windows.   If  you
       have  too  many	windows	on the screen, but you don't want to eliminate
       them, you can hit ^K I.	This will show only the	window the  cursor  is
       in, or if there was only	one window on the screen to begin with,	try to
       fit all hidden windows on the screen.  If there are more	 windows  than
       can fit on the screen, you can hit ^K N on the bottom-most window or ^K
       P on the	top-most window	to get to them.

       If you gave more	than one file name to JOE on the  command  line,  each
       file will be placed in a	different window.

       You  can	 change	 the height of the windows with	the ^K G and ^K	T com-

   Keyboard macros
       Macros allow you	to record a series of keystrokes and replay them  with
       the  press  of  two keys.  This is useful to automate repetitive	tasks.
       To start	a macro	recording, hit ^K [ followed by	a number from 0	to  9.
       The  status line	will display (Macro n recording...).  Now, type	in the
       series of keystrokes that you want to be	able to	repeat.	 The  commands
       you  type  will have their usual	effect.	Hit ^K ] to stop recording the
       macro.  Hit ^K followed by the number you recorded the macro in to exe-
       cute one	iteration of the key-strokes.

       For example, if you want	to put "**" in front of	a number of lines, you
       can type:

       ^K [ ^A ** <down	arrow> ^K ]

       Which starts the	macro recording, moves the cursor to the beginning  of
       the  line,  inserts "**", moves the cursor down one line, and then ends
       the recording. Since we included	the key-strokes	needed to position the
       cursor  on the next line, we can	repeatedly use this macro without hav-
       ing to move the cursor ourselves, something you should always  keep  in
       mind when recording a macro.

       If  you find that the macro you are recording itself has	a repeated set
       of key-strokes in it, you can record a macro within the macro, as  long
       as  you	use a different	macro number.  Also you	can execute previously
       recorded	macros from within new macros.

       You can use the repeat command, ^K \, to	repeat a macro,	or  any	 other
       edit  command  or even a	normal character, a specified number of	times.
       Hit ^K \, type in the number of times you want the command repeated and
       press Return.  The next edit command you	now give will be repeated that
       many times.

       For example, to delete the next 20 lines	of text, type:

       ^K  20<return>^Y

   Rectangle mode
       Type ^T X to have ^K B and ^K K select rectangular  blocks  instead  of
       stream-of-text blocks.  This mode is useful for moving, copying,	delet-
       ing or saving columns of	text.  You can also  filter  columns  of  text
       with  the ^K / command- if you want to sort a column, for example.  The
       insert file command, ^K R is also effected.

       When rectangle mode is selected,	over-type mode is also useful (^T  T).
       When  over-type mode is selected, rectangles will replace existing text
       instead of getting inserted before it.  Also the	delete	block  command
       (^K  Y)	will clear the selected	rectangle with SPACEs and TABs instead
       of deleting it.	Over-type mode is especially  useful  for  the	filter
       block  command (^K /), since it will maintain the original width	of the
       selected	column.

   Tag search
       If you are editing a large C program with many source  files,  you  can
       use  the	 ctags	program	to generate a tags file.  This file contains a
       list of program symbols and the files and positions where  the  symbols
       are  defined.   The  ^K ; command can be	used to	lookup a symbol	(func-
       tions, defined constants, etc.),	load the file where the	symbol is  de-
       fined into the current window and position the cursor to	where the sym-
       bol is defined.	^K ; prompts you for the symbol	you want, but uses the
       symbol the cursor was on	as a default.  Since ^K	; loads	the definition
       file into the current window, you probably want	to  split  the	window
       first with ^K O,	to have	both the original file and the definition file

   Shell windows
       Hit ^K '	to run a command shell in one of JOE's windows.	 When the cur-
       sor  is	at  the	end of a shell window (use ^K V	if it's	not), whatever
       you type	is passed to the shell instead of the window.  Any output from
       the  shell  or  from  commands executed in the shell is appended	to the
       shell window (the cursor	will follow this output	if it's	at the end  of
       the shell window).  This	command	is useful for recording	the results of
       shell commands- for example the output of make, the result of  grepping
       a  set  of files	for a string, or directory listings from FTP sessions.
       Besides typeable	characters, the	keys ^C, Backspace, DEL, Return	and ^D
       are passed to the shell.	 Type the shell	exit command to	stop recording
       shell output.  If you press ^C in a shell window, when  the  cursor  is
       not at the end of the window, the shell is killed.

Environment variables
       For  JOE	 to  operate correctly,	a number of other environment settings
       must be correct.	 The throughput	(baud rate) of the connection  between
       the  computer and your terminal must be set correctly for JOE to	update
       the screen smoothly and allow typeahead to  defer  the  screen  update.
       Use  the	 stty nnn command to set this.	You want to set	it as close as
       possible	to actual throughput of	the connection.	 For example,  if  you
       are  connected  via  a  1200 baud modem,	you want to use	this value for
       stty.  If you are connected via 14.4k modem, but	 the  terminal	server
       you  are	connected to connects to the computer a	9600 baud, you want to
       set your	speed as 9600 baud.  The special baud rate of 38400 or extb is
       used  to	indicate that you have a very-high speed connection, such as a
       memory mapped console or	an X-window terminal emulator.	If  you	 can't
       use  stty to set	the actual throughput (perhaps because of a modem com-
       municating with the computer at a different rate	than it's  communicat-
       ing over	the phone line), you can put a numeric value in	the BAUD envi-
       ronment variable	instead	(use setenv BAUD 9600 for  csh	or  BAUD=9600;
       export BAUD for sh).

       The  SHELL  or  EXECSHELL  environment variable must be set to the full
       pathname	of a shell executable that accepts the -i (interactive)	and -c
       (run  a	command)  arguments  of	 the Korn Shell; otherwise, /bin/sh is

       The TERM	environment variable must be  set  to  the  type  of  terminal
       you're  using.	If the size (number of lines/columns) of your terminal
       is different from what is reported in the TERMCAP  or  TERMINFO	entry,
       you  can	 set this with the stty	rows nn	cols nn	command, or by setting
       the LINES and COLUMNS environment variables.

       The xterm-xfree86 terminal allows automatic entering and	leaving	of the
       bracketed paste mode.

       The  JOETERM  environment  variable  may	be set to override the regular
       TERM environment	variable for specifying	your terminal type.

       JOE uses	two character maps for its operation: the terminal I/O charac-
       ter  map,  which	determines how characters are sent to the terminal and
       whether the %a/%A message specifiers use	UCS, and  the  file  encoding,
       which  can be specified per file	using the -encoding option and changed
       with the	^T E command, and which	defaults to the	terminal I/O character
       map, which, in turn, is determined from the current locale, if the sys-
       tem supports such, otherwise the	LC_ALL,	LC_CTYPE and LANG  environment
       variables  (if they contain a period, only the part after it and	before
       an optional "at sign" is	used); on cygwin32 before 1.7.2, the  codepage
       is  used	 instead  if the POSIX locale environment variables are	empty;
       the environment variable	JOECHARMAP can be used to manually  force  one
       overriding  all	methods	described above, and can be used together with
       -encoding to specify a different	default	file character map.

       JOE normally expects that flow control between the  computer  and  your
       terminal	 to  use  ^S/^Q	 handshaking (I.E., if the computer is sending
       characters too fast for your terminal, your terminal sends ^S  to  stop
       the output and ^Q to restart it).  If the flow control uses out-of-band
       or hardware handshaking or if your terminal is fast  enough  to	always
       keep up with the	computer output	and you	wish to	map ^S/^Q to edit com-
       mands, you can set the environment variable NOXON to have  JOE  attempt
       to  turn	off ^S/^Q handshaking.	If the connection between the computer
       and your	terminal uses no handshaking and your  terminal	 is  not  fast
       enough  to keep up with the output of the computer, you can set the en-
       vironment variable DOPADDING to have JOE	slow down the output by	inter-
       spersing	PAD characters between the terminal screen update sequences.

       Wherever	 JOE  expects you to enter a file name,	whether	on the command
       line or in prompts within the editor, you may also type:

	      Read or write data to or from a shell command.  For example, use
	      joe  '!ls'  to  get  a copy of your directory listing to edit or
	      from within the editor use ^K D !mail  to
	      send the file being edited to me.

	      Use  this	 to  have JOE append the edited	text to	the end	of the
	      file "filename."

	      Use this to access a fixed section of a file or  device.	 START
	      and  SIZE	may be entered in decimal (ex.:	123) octal (ex.: 0777)
	      or hexadecimal (ex.: 0xFF).  For example,	use joe	/dev/fd0,508,2
	      to edit bytes 508	and 509	of the first floppy drive in Linux.

       -      Use this to get input from the standard input or to write	output
	      to the standard output.  For example, you	can put	joe in a  pipe
	      of  commands:  quota -v |	joe - |	mail root, if you want to com-
	      plain about your low quota.

The joerc file
       ^T options, the help screens and	the  key-sequence  to  editor  command
       bindings	 are  all defined in JOE's initialisation file.	 If you	make a
       copy of this file (which	normally resides in  /usr/local/etc/joe/joerc)
       to  $HOME/.joerc, you can customise these settings to your liking.  The
       syntax of the initialisation file should	be fairly obvious,  and	 there
       are further instruction in it.

       JOE  was	 written by Joseph H. Allen.  If you have bug reports or ques-
       tions,  e-mail  them  to	  Larry	  Foard	  (en-  and  Gary	Gray ( also	helped
       with the	creation of JOE.  Thorsten "mirabilos" Glaser  (
       created JUPP, and the 16-bit MS-DOS version of JUPP 2.8 was compiled by
       Andreas Totlis (

       This manual page	describes only the JOE flavour;	documentation for JUPP
       is especially missing.


Name | Syntax | Description | Usage | Command Line Options | Editing Tasks | Environment variables | Filenames | The joerc file | Acknowledgments | Bugs

Want to link to this manual page? Use this URL:

home | help