Ex/Edit Command Summary (Version 2.0)

      Ex and edit are text editors, used for creating and modifying files of text on the UNIX computer system. Edit is a variant of ex with features designed to make it less complicated to learn and use. In terms of command syntax and effect the editors are essentially identical, and this command summary applies to both.

      The summary is meant as a quick reference for users already acquainted with edit or ex. Fuller explanations of the editors are available in the documents Edit: A Tutorial (a self-teaching introduction) and the Ex Reference Manual (the comprehensive reference source for both edit and ex). Both of these writeups are available in the Computing Services Library.

      In the examples included with the summary, commands and text entered by the user are printed in boldface to distinguish them from responses printed by the computer.

The Editor Buffer

      In order to perform its tasks the editor sets aside a temporary work space, called a buffer, separate from the user's permanent file. Before starting to work on an existing file the editor makes a copy of it in the buffer, leaving the original untouched. All editing changes are made to the buffer copy, which must then be written back to the permanent file in order to update the old version. The buffer disappears at the end of the editing session.

Editing: Command and Text Input Modes

      During an editing session there are two usual modes of operation: command mode and text input mode. (This disregards, for the moment, open and visual modes, discussed below.) In command mode, the editor issues a colon prompt (:) to show that it is ready to accept and execute a command. In text input mode, on the other hand, there is no prompt and the editor merely accepts text to be added to the buffer. Text input mode is initiated by the commands append, insert, and change, and is terminated by typing a period as the first and only character on a line.

Line Numbers and Command Syntax

      The editor keeps track of lines of text in the buffer by numbering them consecutively starting with 1 and renumbering as lines are added or deleted. At any given time the editor is positioned at one of these lines; this position is called the current line. Generally, commands that change the contents of the buffer print the new current line at the end of their execution.

      Most commands can be preceded by one or two line-number addresses which indicate the lines to be affected. If one number is given the command operates on that line only; if two, on an inclusive range of lines. Commands that can take line-number prefixes also assume default prefixes if none are given. The default assumed by each command is designed to make it convenient to use in many instances without any line-number prefix. For the most part, a command used without a prefix operates on the current line, though exceptions to this rule should be noted. The print command by itself, for instance, causes one line, the current line, to be printed at the terminal.

      The summary shows the number of line addresses that can be prefixed to each command as well as the defaults assumed if they are omitted. For example, (.,.) means that up to 2 line-numbers may be given, and that if none is given the command operates on the current line. (In the address prefix notation, ``.'' stands for the current line and ``$'' stands for the last line of the buffer.) If no such notation appears, no line-number prefix may be used.

      Some commands take trailing information; only the more important instances of this are mentioned in the summary.

Open and Visual Modes

      Besides command and text input modes, ex and edit provide on some CRT terminals other modes of editing, open and visual. In these modes the cursor can be moved to individual words or characters in a line. The commands then given are very different from the standard editor commands; most do not appear on the screen when typed. An Introduction to Display Editing with Vi provides a full discussion.

Special Characters

      Some characters take on special meanings when used in context searches and in patterns given to the substitute command. For edit, these are ``^'' and ``$'', meaning the beginning and end of a line, respectively. Ex has the following additional special characters: . & * [ ] ~
To use one of the special characters as its simple graphic representation rather than with its special meaning, precede it by a backslash (\). The backslash always has a special meaning.

     Name        Abbr           Description                      Examples
(.)append        a     Begins text input mode, adding   :a
                       lines to the buffer after  the   Three lines of text
                       line specified. Appending con­   are added to the buffer
                       tinues until  ``.''  is  typed   after the current line.
                       alone  at  the  beginning of a   .
                       new line, followed by  a  car­   :
                       riage  return. 0a places lines
                       at  the   beginning   of   the
                       buffer.
(.,.)change      c     Deletes  indicated line(s) and   :5,6c
                       initiates text input  mode  to   Lines 5 and 6 are
                       replace  them  with  new  text   deleted and replaced by
                       which follows.   New  text  is   these three lines.
                       terminated  the  same  way  as   .
                       with append.                     :
(.,.)copy addr   co    Places a copy of the specified   :8,12co 25
                       lines after the line indicated   Last line copied is printed
                       by addr.  The example places a   :
                       copy  of  lines  8 through 12,
                       inclusive, after line 25.
(.,.)delete      d     Removes lines from the  buffer   :13,15d
                       and  prints  the  current line   New current line is printed
                       after the deletion.              :

edit file      e        Clears  the  editor buffer and   :e ch10
edit! file     e!       then copies into it the  named   No write since last change
                        file,  which  becomes the cur­   :e! ch10
                        rent file.  This is a  way  of   "ch10" 3 lines, 62 characters
                        shifting  to  a different file   :
                        without  leaving  the  editor.
                        The  editor  issues  a warning
                        message  if  this  command  is
                        used   before  saving  changes
                        made to the  file  already  in
                        the  buffer; using the form e!
                        overrides   this    protective
                        mechanism.
file name      f        If followed by a name, renames   :f ch9
                        the current file to name.   If   "ch9" [Modified] 3 lines ...
                        used  without name, prints the   :f
                        name of the current file.        "ch9" [Modified] 3 lines ...
                                                         :
(1,$)global    g        global/pattern/commands          :g/nonsense/d
(1,$)global!   g! or v  Searches  the  entire   buffer   :
                        (unless  a  smaller  range  is
                        specified by line-number  pre­
                        fixes)  and  executes commands
                        on every line with an  expres­
                        sion  matching  pattern.   The
                        second form,  abbreviated  ei­
                        ther  g!  or  v, executes com­
                        mands on  lines  that  do  not
                        contain  the  expression  pat­
                        tern.
(.)insert      i        Inserts new lines of text  im­   :1i
                        mediately before the specified   These lines of text will
                        line.  Differs  from  only  in   be added prior to line 1.
                        that  text  is  placed before,   .
                        rather than after,  the  indi­   :
                        cated  line.   In other words,
                        1i has the same effect as  0a.
(.,.+1)join    j        Join lines together, adjusting   :2,5j
                        white space (spaces and  tabs)   Resulting line is printed
                        as necessary.                    :
   Name      Abbr           Description                  Examples
(.,.)list    l     Prints  lines  in a more unam­   :9l
                   biguous  way  than  the  print   This is line 9$
                   command  does.  The  end  of a   :
                   line, for example,  is  marked
                   with a ``$'', and tabs printed
                   as ``^I''.

(.,.)move addr   m     Moves the specified lines to a   :12,15m 25
                       position after the line  indi­   New current line is printed
                       cated by addr.                   :
(.,.)number      nu    Prints  each  line preceded by   :nu
                       its buffer line number.            10  This is line 10
                                                        :
(.)open          o     Too involved to discuss  here,
                       but if you enter open mode ac­
                       cidentally, press the ESC  key
                       followed by q to get back into
                       normal  editor  command  mode.
                       Edit  is  designed  to prevent
                       accidental  use  of  the  open
                       command.
preserve         pre   Saves  a  copy  of the current   :preserve
                       buffer contents as though  the   File preserved.
                       system had just crashed.  This   :
                       is for  use  in  an  emergency
                       when  a command has failed and
                       you don't  know  how  else  to
                       save your work.
(.,.)print       p     Prints the text of line(s).      :+2,+3p
                                                        The second and third lines
                                                        after the current line
                                                        :

quit              q     Ends the editing session.  You      :q
quit!             q!    will receive a warning if  you      No write since last change
                        have  changed the buffer since      :q!
                        last writing its  contents  to      %
                        the  file.  In  this event you
                        must either type w  to  write,
                        or  type  q!  to exit from the
                        editor  without  saving   your
                        changes.
(.)read file      r     Places  a  copy of file in the      :0r newfile
                        buffer  after  the   specified      "newfile" 5 lines, 86 characters
                        line.   Address 0 is permissi­      :
                        ble and  causes  the  copy  of
                        file  to  be placed at the be­
                        ginning of  the  buffer.   The
                        read  command  does  not erase
                        any  text   already   in   the
                        buffer.   If no line number is
                        specified, file is placed  af­
                        ter the current line.
recover file      rec   Retrieves a copy of the editor
                        buffer after a  system  crash,
                        editor  crash, phone line dis­
                        connection, or  preserve  com­
                        mand.
(.,.)substitute   s     substitute/pattern/replacement/     :3p
                        substitute/pattern/replacement/gc   Line 3 contains a misstake
                        Replaces  the first occurrence      :s/misstake/mistake/
                        of pattern on a line with  re­      Line 3 contains a mistake
                        placement.   Including a g af­      :
                        ter the  command  changes  all
                        occurrences  of pattern on the
                        line.  The c option allows the
                        user to confirm each substitu­
                        tion before it  is  made;  see
                        the manual for details.
      Name         Abbr           Description                         Examples
undo               u     Reverses  the  changes made in   :1,15d
                         the buffer by the last buffer-   15 lines deleted
                         editing  command.   Note  that   new line number 1 is printed
                         this example contains a  noti­   :u
                         fication  about  the number of   15 more lines in file ...
                         lines affected.                  old line number 1 is printed
                                                          :
(1,$)write file    w     Copies data  from  the  buffer   :w
(1,$)write! file   w!    onto  a  permanent file. If no   "file7" 64 lines, 1122 characters
                         file  is  named,  the  current   :w file8
                         filename is used.  The file is   "file8" File exists ...
                         automatically  created  if  it   :w! file8
                         does  not  yet  exist.   A re­   "file8" 64 lines, 1122 characters
                         sponse containing  the  number   :
                         of lines and characters in the
                         file indicates that the  write
                         has been completed successful­
                         ly.   The  editor's   built-in
                         protections  against overwrit­
                         ing  existing  files  will  in
                         some  circumstances  inhibit a
                         write.  The form w! forces the
                         write,  confirming that an ex­
                         isting file is to be overwrit­
                         ten.

(.)z count   z     Prints  a  screen full of text
                   starting with the  line  indi­
                   cated;  or, if count is speci­
                   fied, prints  that  number  of
                   lines.  Variants of the z com­
                   mand are described in the man­
                   ual.
!command           Executes  the remainder of the   :!date
                   line after ! as  a  UNIX  com­   Fri Jun 9 12:15:11 PDT 1978
                   mand.  The buffer is unchanged   !
                   by this, and  control  is  re­   :
                   turned  to the editor when the
                   execution of command  is  com­
                   plete.
control-d          Prints   the  next  scroll  of
                   text,  normally  half   of   a
                   screen. See the manual for de­
                   tails of the scroll option.
(.+1)<cr>          An address alone followed by a   :<cr>
                   carriage   return  causes  the   the line after the current line
                   line to be  printed.   A  car­   :
                   riage  return by itself prints
                   the line following the current
                   line.

/pattern/          Searches  for the next line in   :/This pattern/
                   which   pattern   occurs   and   This pattern next occurs here.
                   prints it.                       :
//                 Repeats    the   most   recent   ://
                   search.                          This pattern also occurs here.
                                                    :
?pattern?          Searches in the reverse direc­
                   tion for pattern.
??                 Repeats    the   most   recent
                   search, moving in the  reverse
                   direction  through the buffer.

Table of Contents