.TH VIM 1 "2021 Jun 13"
.SH NAME
vim \- Vi IMproved, a programmer's text editor
.SH SYNOPSIS
.br
.B vim
[options] [file ..]
.br
.B vim
[options] \-
.br
.B vim
[options] \-t tag
.br
.B vim
[options] \-q [errorfile]
.PP
.br
.B ex
.br
.B view
.br
.B gvim
.B gview
.B evim
.B eview
.br
.B rvim
.B rview
.B rgvim
.B rgview
.SH DESCRIPTION
.B 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.
.PP
There are a lot of enhancements above Vi: multi level undo,
multi windows 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
.B Vim
and Vi.
.PP
While running
.B 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.
.PP
Most often
.B Vim
is started to edit a single file with the command
.PP
	vim file
.PP
More generally
.B Vim
is started with:
.PP
	vim [options] [filelist]
.PP
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.
.TP 12
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 "\-\-".
.TP
\-
The file to edit is read from stdin.  Commands are read from stderr, which
should be a tty.
.TP
\-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".
.TP
\-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".
.PP
.B Vim
behaves differently, depending on the name of the command (the executable may
still be the same file).
.TP 10
vim
The "normal" way, everything is default.
.TP
ex
Start in Ex mode.
Go to Normal mode with the ":vi" command.
Can also be done with the "\-e" argument.
.TP
view
Start in read-only mode.  You will be protected from writing the files.
Can also be done with the "\-R" argument.
.TP
gvim gview
The GUI version.
Starts a new window.
Can also be done with the "\-g" argument.
.TP
evim eview
The GUI version in easy mode.
Starts a new window.
Can also be done with the "\-y" argument.
.TP
rvim rview rgvim rgview
Like the above, but with restrictions.  It will not be possible to start shell
commands, or suspend
.B Vim.
Can also be done with the "\-Z" argument.
.SH OPTIONS
The options may be given in any order, before or after filenames.
Options without an argument can be combined after a single dash.
.TP 12
+[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.
.TP
+/{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.
.TP
+{command}
.TP
\-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
.br
Note: You can use up to 10 "+" or "\-c" commands.
.TP
\-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).
.TP
\-\-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.
.TP
\-A
If
.B Vim
has been compiled with ARABIC support for editing right-to-left
oriented files and Arabic keyboard mapping, this option starts
.B Vim
in Arabic mode, i.e. 'arabic' is set.  Otherwise an error
message is given and
.B Vim
aborts.
.TP
\-b
Binary mode.
A few options will be set that makes it possible to edit a binary or
executable file.
.TP
\-C
Compatible.  Set the 'compatible' option.
This will make
.B Vim
behave mostly like Vi, even though a .vimrc file exists.
.TP
\-d
Start in diff mode.
There should between two to eight file name arguments.
.B Vim
will open all the files and show differences between them.
Works like vimdiff(1).
.TP
\-d {device}
Open {device} for use as a terminal.
Only on the Amiga.
Example:
"\-d con:20/30/600/150".
.TP
\-D
Debugging.  Go to debugging mode when executing the first command from a
script.
.TP
\-e
Start
.B Vim
in Ex mode, just like the executable was called "ex".
.TP
\-E
Start
.B Vim
in improved Ex mode, just like the executable was called "exim".
.TP
\-f
Foreground.  For the GUI version,
.B Vim
will not fork and detach from the shell it was started in.
On the Amiga,
.B Vim
is not restarted to open a new window.
This option should be used when
.B 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.
.TP
\-\-nofork
Foreground.  For the GUI version,
.B Vim
will not fork and detach from the shell it was started in.
.TP
\-F
If
.B Vim
has been compiled with FKMAP support for editing right-to-left
oriented files and Farsi keyboard mapping, this option starts
.B Vim
in Farsi mode, i.e. 'fkmap' and 'rightleft' are set.
Otherwise an error message is given and
.B Vim
aborts.
.TP
\-g
If
.B 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
.B Vim
aborts.
.TP
\-h
Give a bit of help about the command line arguments and options.
After this
.B Vim
exits.
.TP
\-H
If
.B Vim
has been compiled with RIGHTLEFT support for editing right-to-left
oriented files and Hebrew keyboard mapping, this option starts
.B Vim
in Hebrew mode, i.e. 'hkmap' and 'rightleft' are set.
Otherwise an error message is given and
.B Vim
aborts.
.TP
\-i {viminfo}
Specifies the filename to use when reading or writing the viminfo file,
instead of the default "~/.viminfo".
This can also be used to skip the use of the .viminfo file, by giving the name
"NONE".
.TP
\-L
Same as \-r.
.TP
\-l
Lisp mode.
Sets the 'lisp' and 'showmatch' options on.
.TP
\-m
Modifying files is disabled.
Resets the 'write' option.
You can still modify the buffer, but writing a file is not possible.
.TP
\-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.
.TP
\-N
No-compatible mode.  Resets the 'compatible' option.
This will make
.B Vim
behave a bit better, but less Vi compatible, even though a .vimrc file does
not exist.
.TP
\-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".
.TP
\-nb
Become an editor server for NetBeans.  See the docs for details.
.TP
\-o[N]
Open N windows stacked.
When N is omitted, open one window for each file.
.TP
\-O[N]
Open N windows side by side.
When N is omitted, open one window for each file.
.TP
\-p[N]
Open N tab pages.
When N is omitted, open one tab page for each file.
.TP
\-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'".
.TP
\-r
List swap files, with information about using them for recovery.
.TP
\-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".
.TP
\-s
Silent mode.  Only when started as "Ex" or when the "\-e" option was given
before the "\-s" option.
.TP
\-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.
.TP
\-T {terminal}
Tells
.B Vim
the name of the terminal you are using.
Only required when the automatic way doesn't work.
Should be a terminal known to
.B Vim
(builtin) or defined in the termcap or terminfo file.
.TP
\-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.
.TP
\-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.
.TP
\-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.
.TP
\-v
Start
.B Vim
in Vi mode, just like the executable was called "vi".  This only has effect
when the executable is called "ex".
.TP
\-w {scriptout}
All the characters that you type are recorded in the file
{scriptout}, until you exit
.B 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.
.TP
\-W {scriptout}
Like \-w, but an existing file is overwritten.
.TP
\-x
Use encryption when writing files.  Will prompt for a crypt key.
.TP
\-X
Don't connect to the X server.  Shortens startup time in a terminal, but the
window title and clipboard will not be used.
.TP
\-y
Start
.B Vim
in easy mode, just like the executable was called "evim" or "eview".
Makes
.B Vim
behave like a click-and-type editor.
.TP
\-Z
Restricted mode.  Works like the executable starts with "r".
.TP
\-\-
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 '\-'.
.TP
\-\-clean
Do not use any personal configuration (vimrc, plugins, etc.).  Useful to see if
a problem reproduces with a clean Vim setup.
.TP
\-\-echo\-wid
GTK GUI only: Echo the Window ID on stdout.
.TP
\-\-help
Give a help message and exit, just like "\-h".
.TP
\-\-literal
Take file name arguments literally, do not expand wildcards.  This has no
effect on Unix where the shell expands wildcards.
.TP
\-\-noplugin
Skip loading plugins.  Implied by \-u NONE.
.TP
\-\-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.
.TP
\-\-remote\-expr {expr}
Connect to a Vim server, evaluate {expr} in it and print the result on stdout.
.TP
\-\-remote\-send {keys}
Connect to a Vim server and send {keys} to it.
.TP
\-\-remote\-silent
As \-\-remote, but without the warning when no server is found.
.TP
\-\-remote\-wait
As \-\-remote, but Vim does not exit until the files have been edited.
.TP
\-\-remote\-wait\-silent
As \-\-remote\-wait, but without the warning when no server is found.
.TP
\-\-serverlist
List the names of all Vim servers that can be found.
.TP
\-\-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.
.TP
\-\-socketid {id}
GTK GUI only: Use the GtkPlug mechanism to run gvim in another window.
.TP
\-\-startuptime {file}
During startup write timing messages to the file {fname}.
.TP
\-\-version
Print version information and exit.
.SH ON-LINE HELP
Type ":help" in
.B 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 cmdline\-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".
.SH FILES
.TP 15
/usr/local/lib/vim/doc/*.txt
The
.B Vim
documentation files.
Use ":help doc\-file\-list" to get the complete list.
.TP
/usr/local/lib/vim/doc/tags
The tags file used for finding information in the documentation files.
.TP
/usr/local/lib/vim/syntax/syntax.vim
System wide syntax initializations.
.TP
/usr/local/lib/vim/syntax/*.vim
Syntax files for various languages.
.TP
/usr/local/lib/vim/vimrc
System wide
.B Vim
initializations.
.TP
~/.vimrc
Your personal
.B Vim
initializations.
.TP
/usr/local/lib/vim/gvimrc
System wide gvim initializations.
.TP
~/.gvimrc
Your personal gvim initializations.
.TP
/usr/local/lib/vim/optwin.vim
Script used for the ":options" command, a nice way to view and set options.
.TP
/usr/local/lib/vim/menu.vim
System wide menu initializations for gvim.
.TP
/usr/local/lib/vim/bugreport.vim
Script to generate a bug report.  See ":help bugs".
.TP
/usr/local/lib/vim/filetype.vim
Script to detect the type of a file by its name.  See ":help 'filetype'".
.TP
/usr/local/lib/vim/scripts.vim
Script to detect the type of a file by its contents.  See ":help 'filetype'".
.TP
/usr/local/lib/vim/print/*.ps
Files used for PostScript printing.
.PP
For recent info read the VIM home page:
.br
<URL:http://www.vim.org/>
.SH SEE ALSO
vimtutor(1)
.SH AUTHOR
Most of
.B Vim
was made by Bram Moolenaar, with a lot of help from others.
See ":help credits" in
.B Vim.
.br
.B 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.
.SH BUGS
Probably.
See ":help todo" for a list of known problems.
.PP
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.
