Provided by: jupp_3.1.40-1_amd64 bug

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 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 improvements.  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 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.  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 interpreted by many communication programs, 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 /etc/jupp/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 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/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 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 extremes.

       -columns nnn
              Sets the number of screen columns.

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

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

       -keepup
              Normally  the  column number and control-key prefix fields of the status 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 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.

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

       -orphan
              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 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 duplicated 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..

       -linums
              Line numbers are displayed before each line.

       -rdonly
              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  filename
       extension.   Programs  (.c,  .h or .p extension) 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
       beginning 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
       previous 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 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  history  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 particular 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 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 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 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 overtype 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.  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  normally 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 character 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 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 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 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 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 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 searching.  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 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 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 substring 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 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
              parenthesis.

       \+     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 replacement 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 - \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 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 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
       highlighted 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.
       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 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.

   Windows
       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
       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  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 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 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 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 recording 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 constants, 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 window, 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 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 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 pathname 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 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
       commands,  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 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 being 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 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
              complain 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 /etc/jupp/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-online.de).

BUGS

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

                                                                                                          JOE(1)