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.  This has no effect on Unix where the shell  expands
                   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.

       ~/.vimrc       Your personal Vim initializations.

       /usr/local/lib/vim/gvimrc
                      System wide gvim initializations.

       ~/.gvimrc      Your personal 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)
