VIM(1)                      General Commands Manual                     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  in  the
                   line  with  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)
