diff --git a/runtime/doc/vim.man b/runtime/doc/vim.man
new file mode 100644
index 0000000..593926d
--- /dev/null
+++ b/runtime/doc/vim.man
@@ -0,0 +1,420 @@
+VIM(1)                                                                  VIM(1)
+
+
+
+NAME
+       vim - Vi IMproved, a programmers text editor
+
+SYNOPSIS
+       vim [options] [file ..]
+       vim [options] -
+       vim [options] -t tag
+       vim [options] -q [errorfile]
+
+       ex
+       view
+       gvim gview evim eview
+       rvim rview rgvim rgview
+
+DESCRIPTION
+       Vim  is a text editor that is upwards compatible to Vi.  It can be used
+       to edit all kinds of plain text.  It is especially useful  for  editing
+       programs.
+
+       There  are a lot of enhancements above Vi: multi level undo, multi win-
+       dows and buffers, syntax highlighting, command line  editing,  filename
+       completion,   on-line   help,   visual  selection,  etc..   See  ":help
+       vi_diff.txt" for a summary of the differences between Vim and Vi.
+
+       While running Vim a lot of help can be obtained from the  on-line  help
+       system,  with the ":help" command.  See the ON-LINE HELP section below.
+
+       Most often Vim is started to edit a single file with the command
+
+            vim file
+
+       More generally Vim is started with:
+
+            vim [options] [filelist]
+
+       If the filelist is missing, the editor will start with an empty buffer.
+       Otherwise  exactly  one out of the following four may be used to choose
+       one or more files to be edited.
+
+       file ..     A list of filenames.  The first one  will  be  the  current
+                   file  and  read  into the buffer.  The cursor will be posi-
+                   tioned on the first line of the buffer.  You can get to the
+                   other  files with the ":next" command.  To edit a file that
+                   starts with a dash, precede the filelist with "--".
+
+       -           The file to edit is read from  stdin.   Commands  are  read
+                   from stderr, which should be a tty.
+
+       -t {tag}    The file to edit and the initial cursor position depends on
+                   a "tag", a sort of goto label.  {tag} is looked up  in  the
+                   tags file, the associated file becomes the current file and
+                   the associated command is executed.  Mostly  this  is  used
+                   for  C  programs,  in  which case {tag} could be a function
+                   name.  The effect is that the file containing that function
+                   becomes  the  current  file and the cursor is positioned on
+                   the start of the function.  See ":help tag-commands".
+
+       -q [errorfile]
+                   Start in quickFix mode.  The file [errorfile] is  read  and
+                   the  first  error is displayed.  If [errorfile] is omitted,
+                   the  filename  is  obtained  from  the  'errorfile'  option
+                   (defaults  to  "AztecC.Err"  for the Amiga, "errors.err" on
+                   other systems).  Further errors can be jumped to  with  the
+                   ":cn" command.  See ":help quickfix".
+
+       Vim behaves differently, depending on the name of the command (the exe-
+       cutable may still be the same file).
+
+       vim       The "normal" way, everything is default.
+
+       ex        Start in Ex mode.  Go to Normal mode with the ":vi"  command.
+                 Can also be done with the "-e" argument.
+
+       view      Start  in read-only mode.  You will be protected from writing
+                 the files.  Can also be done with the "-R" argument.
+
+       gvim gview
+                 The GUI version.  Starts a new window.  Can also be done with
+                 the "-g" argument.
+
+       evim eview
+                 The GUI version in easy mode.  Starts a new window.  Can also
+                 be done with the "-y" argument.
+
+       rvim rview rgvim rgview
+                 Like the above, but with restrictions.  It will not be possi-
+                 ble  to  start  shell  commands, or suspend Vim.  Can also be
+                 done with the "-Z" argument.
+
+OPTIONS
+       The options may be given in  any  order,  before  or  after  filenames.
+       Options without an argument can be combined after a single dash.
+
+       +[num]      For  the  first  file the cursor will be positioned on line
+                   "num".  If "num" is missing, the cursor will be  positioned
+                   on the last line.
+
+       +/{pat}     For  the  first  file  the cursor will be positioned on the
+                   first occurrence of {pat}.  See ":help search-pattern"  for
+                   the available search patterns.
+
+       +{command}
+
+       -c {command}
+                   {command}  will  be  executed after the first file has been
+                   read.  {command} is interpreted as an Ex command.   If  the
+                   {command}  contains  spaces  it  must be enclosed in double
+                   quotes (this depends on the shell that is used).   Example:
+                   Vim "+set si" main.c
+                   Note: You can use up to 10 "+" or "-c" commands.
+
+       -S {file}   {file}  will be sourced after the first file has been read.
+                   This is equivalent to -c "source  {file}".   {file}  cannot
+                   start with '-'.  If {file} is omitted "Session.vim" is used
+                   (only works when -S is the last argument).
+
+       --cmd {command}
+                   Like using "-c", but the command is  executed  just  before
+                   processing  any  vimrc file.  You can use up to 10 of these
+                   commands, independently from "-c" commands.
+
+       -A          If Vim has been compiled with ARABIC  support  for  editing
+                   right-to-left  oriented  files and Arabic keyboard mapping,
+                   this option starts Vim in Arabic  mode,  i.e.  'arabic'  is
+                   set.  Otherwise an error message is given and Vim aborts.
+
+       -b          Binary  mode.  A few options will be set that makes it pos-
+                   sible to edit a binary or executable file.
+
+       -C          Compatible.  Set the 'compatible' option.  This  will  make
+                   Vim  behave  mostly  like  Vi,  even  though  a .vimrc file
+                   exists.
+
+       -d          Start in diff mode.  There should be two or three file name
+                   arguments.   Vim  will  open all the files and show differ-
+                   ences between them.  Works like vimdiff(1).
+
+       -d {device} Open {device} for use as a terminal.  Only  on  the  Amiga.
+                   Example: "-d con:20/30/600/150".
+
+       -D          Debugging.   Go  to debugging mode when executing the first
+                   command from a script.
+
+       -e          Start Vim in Ex mode, just like the executable  was  called
+                   "ex".
+
+       -E          Start Vim in improved Ex mode, just like the executable was
+                   called "exim".
+
+       -f          Foreground.  For the GUI version, Vim  will  not  fork  and
+                   detach from the shell it was started in.  On the Amiga, Vim
+                   is not restarted to open a new window.  This option  should
+                   be  used  when  Vim is executed by a program that will wait
+                   for the edit session to finish (e.g. mail).  On  the  Amiga
+                   the ":sh" and ":!" commands will not work.
+
+       --nofork    Foreground.   For  the  GUI  version, Vim will not fork and
+                   detach from the shell it was started in.
+
+       -F          If Vim has been compiled with  FKMAP  support  for  editing
+                   right-to-left  oriented  files  and Farsi keyboard mapping,
+                   this option starts Vim in  Farsi  mode,  i.e.  'fkmap'  and
+                   'rightleft'  are  set.  Otherwise an error message is given
+                   and Vim aborts.
+
+       -g          If Vim has been compiled  with  GUI  support,  this  option
+                   enables  the  GUI.   If  no GUI support was compiled in, an
+                   error message is given and Vim aborts.
+
+       -h          Give a bit of help about the  command  line  arguments  and
+                   options.  After this Vim exits.
+
+       -H          If Vim has been compiled with RIGHTLEFT support for editing
+                   right-to-left oriented files and Hebrew  keyboard  mapping,
+                   this  option  starts  Vim  in Hebrew mode, i.e. 'hkmap' and
+                   'rightleft' are set.  Otherwise an error message  is  given
+                   and Vim aborts.
+
+       -i {viminfo}
+                   When  using  the  viminfo file is enabled, this option sets
+                   the filename to use, instead of the  default  "~/.viminfo".
+                   This can also be used to skip the use of the .viminfo file,
+                   by giving the name "NONE".
+
+       -L          Same as -r.
+
+       -l          Lisp mode.  Sets the 'lisp' and 'showmatch' options on.
+
+       -m          Modifying files is disabled.  Resets  the  'write'  option.
+                   You  can still modify the buffer, but writing a file is not
+                   possible.
+
+       -M          Modifications not allowed.  The  'modifiable'  and  'write'
+                   options  will be unset, so that changes are not allowed and
+                   files can not be written.  Note that these options  can  be
+                   set to enable making modifications.
+
+       -N          No-compatible  mode.   Reset the 'compatible' option.  This
+                   will make Vim behave a bit better, but less Vi  compatible,
+                   even though a .vimrc file does not exist.
+
+       -n          No  swap file will be used.  Recovery after a crash will be
+                   impossible.  Handy if you want to edit a  file  on  a  very
+                   slow  medium  (e.g.  floppy).   Can also be done with ":set
+                   uc=0".  Can be undone with ":set uc=200".
+
+       -nb         Become an editor server for NetBeans.   See  the  docs  for
+                   details.
+
+       -o[N]       Open N windows stacked.  When N is omitted, open one window
+                   for each file.
+
+       -O[N]       Open N windows side by side.  When N is omitted,  open  one
+                   window for each file.
+
+       -R          Read-only  mode.   The  'readonly' option will be set.  You
+                   can still edit the buffer, but will be prevented from acci-
+                   dently  overwriting  a file.  If you do want to overwrite a
+                   file, add an exclamation mark to  the  Ex  command,  as  in
+                   ":w!".   The  -R  option  also  implies  the -n option (see
+                   below).  The 'readonly' option  can  be  reset  with  ":set
+                   noro".  See ":help 'readonly'".
+
+       -r          List  swap  files,  with  information  about using them for
+                   recovery.
+
+       -r {file}   Recovery mode.  The swap file is used to recover a  crashed
+                   editing  session.   The  swap  file is a file with the same
+                   filename as the text file with ".swp" appended.  See ":help
+                   recovery".
+
+       -s          Silent  mode.   Only  when started as "Ex" or when the "-e"
+                   option was given before the "-s" option.
+
+       -s {scriptin}
+                   The script file {scriptin} is read.  The characters in  the
+                   file  are  interpreted  as if you had typed them.  The same
+                   can be done with the command ":source! {scriptin}".  If the
+                   end of the file is reached before the editor exits, further
+                   characters are read from the keyboard.
+
+       -T {terminal}
+                   Tells Vim the name of the terminal  you  are  using.   Only
+                   required  when the automatic way doesn't work.  Should be a
+                   terminal known to Vim (builtin) or defined in  the  termcap
+                   or terminfo file.
+
+       -u {vimrc}  Use  the  commands in the file {vimrc} for initializations.
+                   All the other initializations are  skipped.   Use  this  to
+                   edit  a special kind of files.  It can also be used to skip
+                   all initializations by giving the name "NONE".  See  ":help
+                   initialization" within vim for more details.
+
+       -U {gvimrc} Use  the  commands in the file {gvimrc} for GUI initializa-
+                   tions.  All the other GUI initializations are skipped.   It
+                   can  also be used to skip all GUI initializations by giving
+                   the name "NONE".  See ":help gui-init" within vim for  more
+                   details.
+
+       -V[N]       Verbose.   Give  messages about which files are sourced and
+                   for reading and writing a viminfo file.  The optional  num-
+                   ber N is the value for 'verbose'.  Default is 10.
+
+       -v          Start  Vim  in Vi mode, just like the executable was called
+                   "vi".  This only has effect when the executable  is  called
+                   "ex".
+
+       -w {scriptout}
+                   All  the  characters that you type are recorded in the file
+                   {scriptout}, until you exit Vim.  This  is  useful  if  you
+                   want  to  create  a script file to be used with "vim -s" or
+                   ":source!".  If the {scriptout} file exists, characters are
+                   appended.
+
+       -W {scriptout}
+                   Like -w, but an existing file is overwritten.
+
+       -x          Use  encryption  when  writing  files.    Will prompt for a
+                   crypt key.
+
+       -X          Don't connect to the X server.  Shortens startup time in  a
+                   terminal,  but  the  window title and clipboard will not be
+                   used.
+
+       -y          Start Vim in easy mode, just like the executable was called
+                   "evim"  or "eview".  Makes Vim behave like a click-and-type
+                   editor.
+
+       -Z          Restricted mode.  Works like  the  executable  starts  with
+                   "r".
+
+       --          Denotes  the end of the options.  Arguments after this will
+                   be handled as a file name.  This can  be  used  to  edit  a
+                   filename that starts with a '-'.
+
+       --echo-wid  GTK GUI only: Echo the Window ID on stdout
+
+       --help      Give a help message and exit, just like "-h".
+
+       --literal   Take  file  name  arguments  literally, do not expand wild-
+                   cards.  Not needed on Unix, the shell expand wildcards.
+
+       --noplugin  Skip loading plugins.  Implied by -u NONE.
+
+       --remote    Connect to a Vim server and make it edit the files given in
+                   the rest of the arguments.  If no server is found a warning
+                   is given and the files are edited in the current Vim.
+
+       --remote-expr {expr}
+                   Connect to a Vim server, evaluate {expr} in  it  and  print
+                   the result on stdout.
+
+       --remote-send {keys}
+                   Connect to a Vim server and send {keys} to it.
+
+       --remote-silent
+                   As  --remote,  but  without  the  warning when no server is
+                   found.
+
+       --remote-wait
+                   As --remote, but Vim does not exit  until  the  files  have
+                   been edited.
+
+       --remote-wait-silent
+                   As --remote-wait, but without the warning when no server is
+                   found.
+
+       --serverlist
+                   List the names of all Vim servers that can be found.
+
+       --servername {name}
+                   Use {name} as the server name.  Used for the  current  Vim,
+                   unless used with a --remote argument, then it's the name of
+                   the server to connect to.
+
+       --socketid {id}
+                   GTK GUI only: Use the GtkPlug  mechanism  to  run  gvim  in
+                   another window.
+
+       --version   Print version information and exit.
+
+ON-LINE HELP
+       Type  ":help"  in Vim to get started.  Type ":help subject" to get help
+       on a specific subject.  For example: ":help ZZ" to  get  help  for  the
+       "ZZ"  command.   Use <Tab> and CTRL-D to complete subjects (":help cmd-
+       line-completion").  Tags are present to jump from one place to  another
+       (sort of hypertext links, see ":help").  All documentation files can be
+       viewed in this way, for example ":help syntax.txt".
+
+FILES
+       /usr/local/lib/vim/doc/*.txt
+                      The Vim documentation files.  Use ":help  doc-file-list"
+                      to get the complete list.
+
+       /usr/local/lib/vim/doc/tags
+                      The  tags file used for finding information in the docu-
+                      mentation files.
+
+       /usr/local/lib/vim/syntax/syntax.vim
+                      System wide syntax initializations.
+
+       /usr/local/lib/vim/syntax/*.vim
+                      Syntax files for various languages.
+
+       /usr/local/lib/vim/vimrc
+                      System wide Vim initializations.
+
+       /usr/local/lib/vim/gvimrc
+                      System wide gvim initializations.
+
+       /usr/local/lib/vim/optwin.vim
+                      Script used for the ":options" command, a  nice  way  to
+                      view and set options.
+
+       /usr/local/lib/vim/menu.vim
+                      System wide menu initializations for gvim.
+
+       /usr/local/lib/vim/bugreport.vim
+                      Script to generate a bug report.  See ":help bugs".
+
+       /usr/local/lib/vim/filetype.vim
+                      Script  to  detect  the type of a file by its name.  See
+                      ":help 'filetype'".
+
+       /usr/local/lib/vim/scripts.vim
+                      Script to detect the type of a  file  by  its  contents.
+                      See ":help 'filetype'".
+
+       /usr/local/lib/vim/*.ps
+                      Files used for PostScript printing.
+
+       For recent info read the VIM home page:
+       <URL:http://www.vim.org/>
+
+SEE ALSO
+       vimtutor(1)
+
+AUTHOR
+       Most of Vim was made by Bram Moolenaar, with a lot of help from others.
+       See ":help credits" in Vim.
+       Vim is based on Stevie, worked on by: Tim Thompson,  Tony  Andrews  and
+       G.R.  (Fred) Walter.  Although hardly any of the original code remains.
+
+BUGS
+       Probably.  See ":help todo" for a list of known problems.
+
+       Note that a number of things that may be regarded as bugs by some,  are
+       in  fact  caused by a too-faithful reproduction of Vi's behaviour.  And
+       if you think other things are bugs "because Vi  does  it  differently",
+       you  should  take  a closer look at the vi_diff.txt file (or type :help
+       vi_diff.txt when in Vim).  Also have a look  at  the  'compatible'  and
+       'cpoptions' options.
+
+
+
+                                  2002 Feb 22                           VIM(1)
