Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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  pro-
     grams.

     There  are  a lot of enhancements above Vi: multi level undo, multi windows
     and buffers, syntax highlighting, command line  editing,  filename  comple-
     tion,  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  sys-
     tem, 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 positioned 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 as-
		 sociated command is executed.	Mostly this is used for  C  pro-
		 grams,  in  which case {tag} could be a function name.  The ef-
		 fect is that the file containing that function becomes the cur-
		 rent 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 file-
		 name 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	possible
	       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 de-
		 pends on the shell that  is  used).   Example:  vim  "+set  si"
		 main.c
		 Note: You can use up to 10 "+" or "-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	possible
		 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 between  two  to  eight  file
		 name  arguments.   Vim will open all the files and show differ-
		 ences between them.  Works like vimdiff(1).

     -d {device}, -dev {device}
		 Open {device} for use as a terminal.  Only on the Amiga.  Exam-
		 ple: "-d con:20/30/600/150".

     -D 	 Debugging.  Go to debugging mode when executing the first  com-
		 mand from a script.

     -e 	 Start Vim in Ex mode, just like the executable was called "ex".

     -display {display}
		 Run  Vim  on  {display}, connecting to that X server instead of
		 the one in $DISPLAY.  The "--display"	long  form  is	accepted
		 only  by  the	GTK+  2  or  GTK+ 3 GUI.  Both forms require the
		 +xterm_clipboard feature.

     -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.

     -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.
		 Note: Farsi support has been removed in patch 8.1.0932.

     -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 	 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}
		 Specifies the filename to use when reading or writing the  vim-
		 info  file, instead of the default "~/.viminfo".  This can also
		 be used to skip the use of the .viminfo  file,  by  giving  the
		 name "NONE".

     -l 	 Lisp mode.  Sets the 'lisp' and 'showmatch' options on.

     -L 	 Same as -r.

     -m 	 Modifying  files  is disabled.  Resets the 'write' option.  You
		 can still modify the buffer, but writing a file is  not  possi-
		 ble.

     -M 	 Modifications	not  allowed.	The 'modifiable' and 'write' op-
		 tions will be unset, so that changes are not allowed and  files
		 can  not be written.  Note that these options can be set to en-
		 able making modifications.

     -n 	 No swap file will be used.  Recovery after a crash will be  im-
		 possible.   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".

     -N 	 No-compatible mode.  Resets the 'compatible' option.  This will
		 make  Vim  behave  a  bit  better, but less Vi compatible, even
		 though a .vimrc file does not exist.

     -nb	 Become an editor server for NetBeans.	See  the  docs	for  de-
		 tails.

     -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 win-
		 dow for each file.

     -p[N]	 Open N tab pages.  When N is omitted, open  one  tab  page  for
		 each file.

     -P {parent-title}
		 Win32	GUI  only:  Specify the title of the parent application.
		 When possible, Vim will run in an MDI window inside the  appli-
		 cation.  {parent-title}  must appear in the window title of the
		 parent application.  Make sure that it is specific enough. Note
		 that the implementation is still primitive.  It won't work with
		 all applications and the menu doesn't work.

     -r 	 List swap files, with information about using them  for  recov-
		 ery.

     -r {file}	 Recovery  mode.   The	swap  file  is used to recover a crashed
		 editing session.  The swap file is a file with the  same  file-
		 name  as the text file with ".swp" appended.  See ":help recov-
		 ery".

     -R 	 Read-only mode.  The 'readonly' option will be  set.	You  can
		 still	edit the buffer, but will be prevented from accidentally
		 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'".

     -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.

     -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).

     -T {terminal}
		 Tells Vim the name of the terminal you  are  using.   Only  re-
		 quired when the automatic way doesn't work.  Should be a termi-
		 nal  known  to  Vim (builtin) or defined in the termcap or ter-
		 minfo file.

     -u {vimrc}  Use the commands in the file {vimrc} for initializations.   All
		 the other initializations are skipped.  Use this to edit a spe-
		 cial  kind  of files.	It can also be used to skip all initial-
		 izations by giving the name "NONE".  See ":help initialization"
		 within vim for more details.

     -U {gvimrc}
		 Use the commands in the file {gvimrc} for GUI	initializations.
		 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 	 Start Vim in Vi mode, just like the executable was called "vi".
		 This only has effect when the executable is called "ex".

     -V[N]	 Verbose.  Give messages about which files are sourced	and  for
		 reading  and  writing a viminfo file.	The optional number N is
		 the value for 'verbose'.  Default is 10.

     -V[N]{filename}
		 Like -V and set 'verbosefile' to  {filename}.	 The  result  is
		 that  messages are not displayed but written to the file {file-
		 name}.  {filename} must not start with a digit.

     -w{number}  Set the 'window' option to {number}.

     -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 	 If Vim has been compiled with encryption support,  use  encryp-
		 tion when writing files.  Will prompt for a crypt key.

     -X 	 Don't connect to the X server.  Shortens startup time in a ter-
		 minal, but the window title and clipboard will not be used.

     -Y 	 Don't connect to the wayland compositor

     -y 	 Start	Vim  in  easy  mode, just like the executable was called
		 "evim" or "eview".  Makes Vim behave like a click-and-type edi-
		 tor.

     -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 '-'.

     --clean	 Do not use any personal configuration (vimrc,	plugins,  etc.).
		 Useful to see if a problem reproduces with a clean Vim setup.

     --cmd {command}
		 Like  using  "-c", but the command is executed just before pro-
		 cessing any vimrc file.  You can use up to  10  of  these  com-
		 mands, independently from "-c" commands.

     --echo-wid  GTK GUI only: Echo the Window ID on stdout.

     --gui-dialog-file {name}
		 When  using the GUI, instead of showing a dialog, write the ti-
		 tle and message of the dialog to file {name}.	The file is cre-
		 ated or appended to.  Only useful for testing,  to  avoid  that
		 the  test  gets  stuck on a dialog that can't be seen.  Without
		 the GUI the argument is ignored.

     --help, -h, -?
		 Give a bit of help about the command  line  arguments	and  op-
		 tions.  After this Vim exits.

     --literal	 Take  file  name  arguments literally, do not expand wildcards.
		 This has no effect on Unix where the shell expands wildcards.

     --log {filename}
		 If Vim has been compiled with eval and channel  feature,  start
		 logging  and write entries to {filename}. This works like call-
		 ing ch_logfile({filename}, 'ao') very early during startup.

     --nofork	 Foreground.  For the GUI version, Vim will not fork and  detach
		 from the shell it was started in.

     --noplugin  Skip loading plugins.	Implied by -u NONE.

     --not-a-term
		 Tells	Vim  that the user knows that the input and/or output is
		 not connected to a terminal.  This will avoid the  warning  and
		 the two second delay that would happen.

     --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, un-
		 less used with a --remote argument, then it's the name  of  the
		 server  to  connect  to.   If the socketserver backend is being
		 used, if the name starts with "/", "./", or "../", it is  taken
		 as either an absolute, relative or relative path to the socket.

     --clientserver {backend}
		 Use  {backend}  as  the backend for clientserver functionality,
		 either "socket", "x11", or "mswin" respectively.   Only  avail-
		 able  when  compiled  with  both  socketserver and X11 features
		 present, or if compiled with socketserver  on	MS-Windows.  The
		 $VIM_CLIENTSERVER  environment  variable  may also be set which
		 will be interpreted in the same way, but the --clientserver ar-
		 gument will always take priority.

     --socketid {id}
		 GTK GUI only: Use the GtkPlug mechanism to run gVim in  another
		 window.

     --startuptime {file}
		 During startup write timing messages to the file {fname}.

     --ttyfail	 When  stdin  or  stdout is not a terminal (tty) then exit right
		 away.

     --version	 Print version information and exit.

     --windowid {id}
		 Win32 GUI only: Make gVim try to use the window {id} as a  par-
		 ent, so that it runs inside that window.

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"  com-
     mand.   Use  <Tab>  and CTRL-D to complete subjects (":help cmdline-comple-
     tion").  Tags are present to jump from one place to another (sort of hyper-
     text links, see ":help").	All documentation files can be	viewed	in  this
     way, for example ":help syntax.txt".

FILES
     /usr/local/share/vim/vim92/doc/*.txt
		    The  Vim  documentation files.  Use ":help doc-file-list" to
		    get the complete list.
		    vim??  is short version number, like vim91 for Vim 9.1

     /usr/local/share/vim/vim92/doc/tags
		    The tags file used for finding information in the documenta-
		    tion files.

     /usr/local/share/vim/vim92/syntax/syntax.vim
		    System wide syntax initializations.

     /usr/local/share/vim/vim92/syntax/*.vim
		    Syntax files for various languages.

     /usr/local/etc/vim/vimrc
		    System wide Vim initializations.

     ~/.vimrc, ~/.vim/vimrc, $XDG_CONFIG_HOME/vim/vimrc
		    Your personal Vim initializations (first one found is used).

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

     ~/.gvimrc, ~/.vim/gvimrc, $XDG_CONFIG_HOME/vim/gvimrc
		    Your personal  gVim  initializations  (first  one  found  is
		    used).

     /usr/local/share/vim/vim92/optwin.vim
		    Script  used  for the ":options" command, a nice way to view
		    and set options.

     /usr/local/share/vim/vim92/menu.vim
		    System wide menu initializations for gVim.

     /usr/local/share/vim/vim92/bugreport.vim
		    Script to generate a bug report.  See ":help bugs".

     /usr/local/share/vim/vim92/filetype.vim
		    Script to detect the type of a file by its name.  See ":help
		    'filetype'".

     /usr/local/share/vim/vim92/scripts.vim
		    Script to detect the type of a file by  its  contents.   See
		    ":help 'filetype'".

     /usr/local/share/vim/vim92/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.

				   2026 Jun 05				  VIM(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=vim&manpath=FreeBSD+15.1-RELEASE+and+Ports.quarterly>

home | help