article

Vim, which stands for Vi IMproved, is an open-source, multiplatform text editor extended from vi. It was first released by Bram Moolenaar in 1991. Since then Vim has added numerous features, many of which are helpful in editing program source code. Vim is today one of the two most popular editors for programmers and users of Unix-like operating systems, alongside Emacs.

Learning to use Vim


Vim has a steep learning curve, meaning learning is slow initially but once the user gets a grasp of the basics they progress quickly and their editing becomes more efficient. To facilitate this there's the vim tutorial for beginners, usually invoked by typing "vimtutor" on the Unix command line or clicking on the Vim tutor icon on the Windows desktop. There's also the Vim Users' Manual that goes into depth about the basic and more advanced features of Vim which can be read by typing ":help user-manual" within Vim.

New users should also learn how to navigate and understand the conventions of the Vim help system by reading the main help file by typing ":help" without any arguments.

Modal editing


As a descendant of vi, Vim is modal — an unusual feature which tends to confuse new users. All editors are modal in the general sense of having to distinguish insert and command inputs, but most others implement that modality through very different methods: command menus (mouse or keyboard driven), meta keys (simultaneous use of multiple keys, usually involving control key (CTRL) or alt key (ALT)), and/or general mouse usage. Vim, following vi, is unique in that you switch the entire keyboard into and out of these modes. This allows you, but does not require you, to perform all editing functions with no use of the mouse or menus and minimal use of meta keys. For touch-typists and those averse to the mouse, this can be a great benefit in power and efficiency.

Vim has six basic modes and five variants of the basic modes:Vim help system (type ":help" within vim)

Normal

In normal mode you can enter all the editor commands such as cursor movement text deletion, etc. Vim starts in this mode by default. This is contrary to what many new users expect.

Vim's power derives primarily from its extensive normal mode commands, many of them requiring an operator to complete. For example, the normal mode command "dd" deletes the line the cursor is currently on, but "d" can be followed by a motion command instead of another "d" such as the line down key ("j") to delete the current and the next line. You can also provide a count; "2dd" does the same thing as "dj". Once the user learns various movement/jump commands and other normal mode editing commands and how they can be combined their editing often becomes much more efficient than users of "modeless" editors.

From normal mode you can enter insert mode any number of ways; the most common are to press "a" or "i".

Operator-pending
In this sub-mode of normal mode an operator command has been started and Vim is waiting for a "motion" to complete it. Vim also supports special "text objects" in place of motions in operator-pending mode, which can include "aw" for a word, "as" for a sentence, "ap" for a paragraph, etc.

For example, "d2as" in normal mode deletes the current sentence and the next, and in visual mode, "apU" converts the current paragraph to uppercase.

Insert Normal
This mode is entered when control-o is pressed in insert mode. It behaves like normal mode but only lets you execute one command before Vim returns to insert mode.

Visual

This behaves much like normal mode, but the movement commands extend highlighted text. When a non-movement command is used it is performed on the highlighted area. Vim's "text objects" can be used in this mode as motion commands as well.

Insert Visual
This is entered from insert normal mode by pressing control-o then starting a visual selection. After the visual selection ends Vim returns to insert mode.

Select

This is somewhat like the Microsoft Windows selection mode — you can highlight text with the mouse and the cursor keys, but typing a character causes the highlighted area to be deleted and Vim enters insert mode with the character you typed inserted.

Insert Select
This mode is usually entered by dragging the mouse or using a shifted arrow key in insert mode. After the selection ends Vim returns to insert mode.

Insert

In this mode most keys on the keyboard insert text into the buffer. This behavior is what most new users expect text editors to always do.

From insert mode you can go back to normal mode by pressing the escape key (ESC).

Replace
This is a special insert mode where you can do the same things as you would do in insert mode, but each character you type overwrites an existing character in the buffer.

Command-line

In command-line mode you can enter one line which is interpreted as a command (":" key), search ("/" and "?" keys), or a filter command ("!" key).

Ex mode

This is like command-line mode, but you can enter multiple commands until you leave this mode by typing "visual".

Evim

Evim is a special GUI mode that tries to behave more like a "modeless" editor called evim where the editor starts and stays in insert mode and the user has to use the menus, mouse, and keyboard control keys, such as the arrow keys. This mode can be enabled by typing "evim" on the command line (Unix) or clicking on the evim icon (Windows).

Features and improvements over Vi


Some of the main features of Vim and improvements of Vim over vi:

History


Date Version Changes/additions
1988 1.0 Based on Stevie for the Amiga, named Vi IMitation, never publicly released
November 2, 1991 1.14 First public release for the Amiga on Fred Fish disk #591
1992 1.22 Port to Unix. Vim now competes with vi. This was when Vim became Vi IMproved
August 12, 1994 3.0 Support for multiple windows
May 29, 1996 4.0 Graphical user interface
February 19, 1998 5.0 Syntax highlighting, basic scripting (user defined functions, commands, etc.)
April 6, 1998 5.1 Bug fixes, various improvements
??? 5.2 Long line support, file browser, dialogs, popup menu, select mode, session files, user defined functions and commands, tcl interface, etc.
August 31, 1998 5.3 Bug fixes, etc.
July 25, 1998 5.4 Basic file encryption, various improvements
September 19, 1999 5.5 Bug fixes, various improvements
January 16, 2000 5.6 New syntax files, bug fixes, etc.
June 24, 2000 5.7 New syntax files, bug fixes, etc.
May 31, 2000 5.8 New syntax files, bug fixes, etc.
September 26, 2001 6.0 Folding, plugins, multi-language, etc.
March 24, 2002 6.1 Bug fixes
June 1, 2003 6.2 GTK2, Arabic language support, :try command, minor features, bug fixes
June 7, 2004 6.3 Bug fixes, translation updates, mark improvements
October 15, 2005 6.4 Bug fixes, updates to Perl, Python, and Ruby support
May 7, 2006 7.0 Spell checking, code completion, document tabs, current line/column highlighting, undo branches, and more

(Note that some dates are approximate,Dates were taken from the official Vim FTP site. development releases aren't listed, and many minor version releases aren't yet included in this list.)

References


See also


External links


Linux text editors | Windows text editors | Mac OS text editors | OpenVMS text editors | Free text editors | Free integrated development environments

Vim | Vim | Vim | Vim | Vim (tekstoprilaborilo) | Vim | Vim | Vim (editor di testo) | Vim | Vim | Vim | VIM | Vim | Vim | Vim | Vim | Vim | Vim

 

This article is licensed under the GNU Free Documentation License. It uses material from the "Vim (text editor)".

Home Pageartsbusinesscomputersgameshealthhospitalshomekids & teensnewsphysiciansrecreationreferenceregionalscienceshoppingsocietysportsworld