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,  three  or  four
                   file  name arguments.  Vim will open all the files and show
                   differences 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.

       -p[N]       Open N tab pages.  When N is omitted, open one tab page 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/print/*.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.



                                  2006 Apr 11                           VIM(1)
