1:joe

From Linux Man Pages

Jump to: navigation, search

Contents

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

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 five different editors, it still requires only one executable, but one with five differ-
      ent  names.   The  name  of  the  editor with an "rc" appended gives the name of JOE's initialization file, which
      determines the personality of the editor.
 
      JOE is free software;  you can distribute it and/or modify it under the terms of the GNU General  Public  License
      as  published  by  the Free Software Foundation.  I have no plans for turning JOE into a commercial or share-ware
      product.  JOE is available over the Internet from www.sourceforge.net/projects/joe-editor.

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  fol-
      lows).   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.
 
      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 pro-
      gram.
 
      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 customize the keyboard layout, the help screens and a number of behavior defaults by copying  JOE's  ini-
      tialization  file  (usually  /etc/joe/joerc)  to .joerc in your home directory and then by modifying it.  See the
      section joerc below.
 
      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  initialization  file  (.cshrc  or  .profile)  to refer to JOE (joe 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 corre-
             sponding 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 optimization.  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-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 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 which it's 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 key-stroke.
 
      -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 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.
 
      -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.
 
      The JOETERM environment variable may be set to override the regular TERM environment variable for specifying your
      terminal type.
 
      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.
 
      -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.
 
      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 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.  PASCAL and C 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 char-
      acter 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 initial-
      ization  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 sep-
      arated 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 exam-
      ple, 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 char-
      acters you type in replace existing characters, in the way an idealized 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 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 -  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 charac-
      ter (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 lan-
      guages, 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.

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  nor-
      mally 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 origi-
      nally).  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 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 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 let-
             ters 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, r to replace all of the remaining occur-
             rences 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 expression.  For example, if you search for mal-
             loc(\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 accidently 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  fol-
      lowed by the number you recorded the macro in to execute 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 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 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.


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 / com-
      mand- 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,  rectan-
      gles 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 (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 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.
 
      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 environ-
      ment 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 com-
      puter, you can set the environment variable DOPADDING to have JOE slow down the output by interspersing PAD char-
      acters 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 initializa-
      tion  file.   If you make a copy of this file (which normally resides in /etc/joe/joerc) to $HOME/.joerc, you can
      customize these setting to your liking.  The syntax of the initialization 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, e-mail 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.

CATEGORY

Personal tools