VIM(1)                      General Commands Manual                     VIM(1)



NAME
       vim - Vi IMproved, a programmer's 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‐
                   dentally 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
                   above).  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)
