own menus. Better support for CTRL/SHIFT/ALT keys in
combination with special keys and mouse. Supported for various
platforms such as Win32.
Multiple windows and buffers. |windows.txt|
Vim can split the screen into several windows, each editing a
different buffer or the same buffer at a different location. Buffers
can still be loaded (and changed) but not displayed in a window. This
is called a hidden buffer. Many commands and options have been added
for this facility.
Vim can also use multiple tab pages, each with one or more windows. A
line with tab labels can be used to quickly switch between these pages.
|tab-page|
Syntax highlighting. |:syntax|
Vim can highlight keywords, patterns and other things. This is
defined by a number of |:syntax| commands, and can be made to
highlight most languages and file types. A number of files are
included for highlighting the most common languages, like C, C++,
Java, Pascal, Makefiles, shell scripts, etc. The colors used for
highlighting can be defined for ordinary terminals, color terminals
and the GUI with the |:highlight| command. A convenient way to do
this is using a |:colorscheme| command.
The highlighted text can be exported as HTML. |convert-to-HTML|
Other items that can be highlighted are matches with the search string
|'hlsearch'|, matching parens |matchparen| and the cursor line and
column |'cursorline'| |'cursorcolumn'|.
Spell checking. |spell|
When the 'spell' option is set Vim will highlight spelling mistakes.
About 50 languages are currently supported, selected with the
'spelllang' option. In source code only comments and strings are
checked for spelling.
Folding. |folding|
A range of lines can be shown as one "folded" line. This allows
overviewing a file and moving blocks of text around quickly.
Folds can be created manually, from the syntax of the file, by indent,
etc.
Diff mode. |diff-mode|
Vim can show two versions of a file with the differences highlighted.
Parts of the text that are equal are folded away. Commands can be
used to move text from one version to the other.
Plugins. |add-plugin|
The functionality can be extended by dropping a plugin file in the
right directory. That's an easy way to start using Vim scripts
written by others. Plugins can be for all kind of files, or
specifically for a filetype.
Packages make this even easier. |packages|
Asynchronous communication and timers. |job-control| |timer|
Vim can exchange messages with other processes in the background.
Vim can start a job, communicate with it and stop it. |job-control|
Timers can fire once or repeatedly and invoke a function to do any
work. |timer|
Repeat a series of commands. |q|
"q{c}" starts recording typed characters into named register {c}.
A subsequent "q" stops recording. The register can then be executed
with the "@{c}" command. This is very useful to repeat a complex
action.
Flexible insert mode. |ins-special-special|
The arrow keys can be used in insert mode to move around in the file.
This breaks the insert in two parts as far as undo and redo is
concerned.
CTRL-O can be used to execute a single Normal mode command. This is
almost the same as hitting <Esc>, typing the command and doing |a|.
Visual mode. |Visual-mode|
Visual mode can be used to first highlight a piece of text and then
give a command to do something with it. This is an (easy to use)
alternative to first giving the operator and then moving to the end of
the text to be operated upon.
|v| and |V| are used to start Visual mode. |v| works on characters
and |V| on lines. Move the cursor to extend the Visual area. It is
shown highlighted on the screen. By typing "o" the other end of the
Visual area can be moved. The Visual area can be affected by an
operator:
d delete
c change
y yank
> or < insert or delete indent
! filter through external program
= filter through indent
: start |:|