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

FreeBSD Manual Pages

  
 
  

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

NAME
     joe - Joe's Own Editor

SYNTAX
     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 ]...

DESCRIPTION
     JOE  is a powerful ASCII text screen editor.  It has a "mode-less" user in-
     terface 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	improve-
     ments.   JMACS  is  a GNU EMACS imitation.  RJOE is a restricted version 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 editor with
     an "rc" appended gives the name of JOE's initialisation file, which  deter-
     mines 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.  See main.c (contains more detailed exceptions).
     I have no plans for turning JOE into a  commercial  or  shareware	product.
     Check  the source code for exact authorship and licencing information.  JOE
     is available over the Internet  from  http://joe-editor.sf.net/.	JUPP  is
     available at http://mirbsd.de/jupp.

USAGE
     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 options, 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	anything
     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 all).

     Once  you	are  in the editor, you can type in text and use special control
     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 following
     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 inter-
     preted by many communication programs, including telnet and  kermit.   Usu-
     ally 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 be-
     havior defaults by copying  JOE's	initialisation	file  (usually	/usr/lo-
     cal/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 di-
     rectory 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 eMail and News, you need to set
     the  EDITOR  and  VISUAL environment variables in your shell initialisation
     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  speci-
	    fied directory instead of in each file's original directory.

     -baud nnn
	    Set  the baud rate for the purposes of terminal screen optimisation.
	    Joe inserts delays for baud rates below 19200,  which  bypasses  tty
	    buffering  so  that  typeahead  will  interrupt  the  screen output.
	    Scrolling commands will not be used for 38400 baud.  This is  useful
	    for  X-Window  terminals  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  ex-
	    tremes.

     -columns nnn
	    Sets the number of screen columns.

     -csmodeContinued  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.

     -dopadding
	    Joe usually assumes that there is some kind of flow control  between
	    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 commands.

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

     -force This  option  makes  sure  that the last line of the file has a line
	    feed when it is saved.

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

     -keepupNormally the column number and control-key prefix fields of the sta-
	    tus  lines	are on a one second delay to reduce CPU consumption, but
	    with this option they are updated after each keystroke.

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

     -lines nnn
	    Sets the number of screen lines.

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

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

     -nobackups
	    This option prevents backup files.

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

     -nosta This  option eliminates the topmost 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.

     -orphanWhen 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 nnnThis 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 addi-
     tion, the NOXON, BAUD, LINES, COLUMNS and DOPADDING options may  be  speci-
     fied with environment variables.  See the section Environment variables be-
     low.

     The  following options may be specified before each filename on the command
     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.

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

     -autoindent
	    When you hit Return on an indented line, the indentation  is  dupli-
	    cated onto the new line.

     -overwrite
	    Typing  overwrites	existing  characters instead of inserting before
	    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..

     -linumsLine numbers are displayed before each line.

     -rdonlyThe 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 de-
     pending on the filename extension.  Programs (.c, .h or .p extension)  usu-
     ally  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 beginning of the sec-
     ond 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 previous line (up),
     and ^N to move to the next line (down).  The right and left arrow keys sim-
     ply 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 cur-
     sor is on or ^J to delete just from the cursor to the end of the line.

     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  relative  to  the
     screen.  Hit ^K U or ^K V to move the cursor to the beginning 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  temporarily
     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 his-
     tory of places with ^K- and ^K =, in the same way you can step through  the
     history of changes with the "undo" and "redo" commands.

     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 particu-
     lar edit session, you can hit ^C to exit the editor without saving 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 con-
     tains 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  automati-
     cally  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  for-
     matted  like  some word processors.  Instead, if you need a paragraph to be
     reformatted, hit ^K J.  This command "fills in" the paragraph that the cur-
     sor 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  or
     a line beginning with a period (".").  Lines can be indented by tab, any of
     the !#$%&)*+,-./:;=>?@\]^_|}~ characters or spaces.

     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.

   Overtype mode
     Sometimes it's tiresome to have to delete old text before or after you  in-
     sert  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  ta-
     ble.   When this occurs, you can put the editor in overtype mode with ^T T.
     When the editor is in this mode, the characters you type in replace  exist-
     ing  characters,  in  the way an idealised typewriter would.  Additionally,
     Backspace simply moves left instead of deleting the character to the  left,
     when  it's not at the end or beginning of a line.	Overtype 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 overtype mode, hit ^@.  This inserts
     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  nor-
     mally see have numbers in the range of 32 to 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 charac-
     ter in the range @ A B C ... X Y Z [ ^ ] \ _ to get the number 0 to 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  dis-
     plays 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 as-is mode (described later)
     to have these passed untranslated to the terminal.

   Prompts
     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 di-
     rectory.

     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 status 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 section 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
     eMail 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 return to the editor.

   Searching for text
     Hit  ^K  F to have the editor search forwards or backwards for a text frag-
     ment (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 searching.
	    Normally uppercase and lowercase letters are considered to	be  dif-
	    ferent.

     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 further
	    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  re-
	    place  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 oc-
	    currences 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 let-
	    ter.  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 expression.
	    For example, if you search for malloc(\c), then JOE  will  find  all
	    function calls to malloc, even if there was a ) within the parenthe-
	    sis.

     \+     This  finds  zero or more of the character which immediately follows
	    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	replace-
     ment 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 words.

     \0 - \9These 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 string.

     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 so:

     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:

     Address:\*,\*,\*,\*\$

     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:

     Address:\3,\2,\0,\1

     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.

   Blocks
     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  high-
     lighted.	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 highlighted text.  ^K W, writes the  high-
     lighted 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.  Another  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 accidentally hit ^K
     Y without noticing...).  If it really bothers you, however, 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-indent  mode
     enabled.	When  auto-indent mode is enabled and you hit Return, 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 pro-
     gram  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.

   Windows
     You  can  edit more than one file at the same time or edit two or more dif-
     ferent 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 windows,  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 win-
     dows  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 commands.

   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 key-
     strokes 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 execute  one  iteration
     of the keystrokes.

     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 keystrokes needed to position the cursor
     on the next line, we can repeatedly use this macro without having	to  move
     the cursor ourselves, something you should always keep in mind when record-
     ing a macro.

     If  you  find that the macro you are recording itself has a repeated set of
     keystrokes 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.

   Repeat
     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,	deleting
     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, overtype mode (^T T) is also useful.  When
     overtype 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.
     Overtype 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  (functions,  defined  con-
     stants,  etc.),  load the file where the symbol is defined into the current
     window and position the cursor to	where  the  symbol  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  win-
     dow,  you	probably  want to split the window first with ^K O, to have both
     the original file and the definition file loaded.

   Shell windows
     Hit ^K ' to run a command shell in one of JOE's windows.  When  the  cursor
     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  charac-
     ters,  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 com-
     puter 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 be-
     cause of a modem communicating with the computer at a different  rate  than
     it's communicating over the phone line), you can put a numeric value in the
     BAUD  environment	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  path-
     name  of a shell executable that accepts the -i (interactive) and -c (run a
     command) arguments of the Korn Shell; otherwise, /bin/sh is used.

     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 character
     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 system  supports  such,
     otherwise the LC_ALL, LC_CTYPE and LANG environment variables (if they con-
     tain  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 termi-
     nal 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  hand-
     shaking  or if your terminal is fast enough to always keep up with the com-
     puter output and you wish to map ^S/^Q to edit commands, you  can	set  the
     environment  variable NOXON to have JOE attempt to turn off ^S/^Q handshak-
     ing.  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 environment variable DOPADDING to have JOE
     slow  down  the output by interspersing PAD characters between the terminal
     screen update sequences.

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

     !command
	    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 jhallen@world.std.com to send the file be-
	    ing edited to me.

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

     filename,START,SIZE
	    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 hexa-
	    decimal  (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 com-
	    mands:  quota  -v | joe - | mail root, if you want to complain about
	    your low quota.

THE JOERC FILE
     ^T options, the help screens and the key-sequence to editor  command  bind-
     ings  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.

ACKNOWLEDGMENTS
     JOE  was written by Joseph H. Allen.  If you have bug reports or questions,
     eMail them to jhallen@world.std.com.  Larry  Foard  (entropy@world.std.com)
     and  Gary	Gray (ggray@world.std.com) also helped with the creation of JOE.
     Thorsten "mirabilos" Glaser (tg@mirbsd.org) created JUPP,	and  the  16-bit
     MS-DOS  version  of  JUPP 2.8 was compiled by Andreas Totlis (atotlis@t-on-
     line.de).

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

									  JOE(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=joe&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help