Vim documentation: various
main help file
*various.txt* For Vim version 5.8. Last change: 2000 Apr 22
VIM REFERENCE MANUAL by Bram Moolenaar
Various commands *various*
1. Various commands |various-cmds|
2. Online help |online-help|
==============================================================================
1. Various commands *various-cmds*
*CTRL-L*
CTRL-L Clear and redraw the screen.
*N<Del>*
<Del> When entering a number: Remove the last digit.
Note: if you like to use <BS> for this, add this
mapping to your .vimrc:
:map CTRL-V <BS> CTRL-V <Del>
See |:fixdel| if your <Del> key does not do what you
want.
:as[cii] or *ga* *:as* *:ascii*
ga Print the ascii value of the character under the
cursor in decimal, hexadecimal and octal. For
example, when the cursor is on a 'R':
<R> 82, Hex 52, Octal 122
When the character is a non-standard ASCII character,
but printable according to the 'isprint' option, the
non-printable version is also given. When the
character is larger than 127, the <M-x> form is also
printed. For example:
<~A> <M-^A> 129, Hex 81, Octal 201
<p> <|~> <M-~> 254, Hex fe, Octal 376
(where <p> is a special character)
The <Nul> character in a file is stored internally as
<NL>, but it will be shown as:
<^@> 0, Hex 00, Octal 000
Mnemonic: Get Ascii value. {not in Vi}
*:p* *:pr* *:print*
:[range]p[rint] Print [range] lines (default current line).
Note: If you are looking for a way to print your text
file, you need an external program for that. In the
GUI you can use the File.Print menu entry.
:[range]p[rint] {count}
Print {count} lines, starting with [range] (default
current line |cmdline-ranges|).
*:P* *:Print*
:[range]P[rint] [count]
Just as ":print". Was apparently added to Vi for
people that keep the shift key pressed too long...
*:l* *:list*
:[range]l[ist] [count]
Same as :print, but display unprintable characters
with '^'.
*:nu* *:number*
:[range]nu[mber] [count]
Same as :print, but precede each line with its line
number. (See also 'highlight' option).
*:#*
:[range]# [count] synonym for :number.
*:z*
:{range}z[+-^.=]{count} Display several lines of text surrounding the line
specified with {range}, or around the current line
if there is no {range}. If there is a {count}, that's
how many lines you'll see; otherwise, the current
window size is used.
:z can be used either alone or followed by any of
several punctuation marks. These have the following
effect:
mark first line last line new location
---- ---------- --------- ------------
+ current line 1 scr forward 1 scr forward
- 1 scr back current line current line
^ 2 scr back 1 scr back 1 scr back
. 1/2 scr back 1/2 scr fwd 1/2 src fwd
= 1/2 src back 1/2 scr fwd current line
Specifying no mark at all is the same as "+".
If the mark is "=", a line of dashes is printed
around the current line.
*:=*
:= Print the cursor line number.
:norm[al][!] {commands} *:norm* *:normal*
Execute Normal mode commands {commands}. This makes
it possible to execute Normal mode commands typed on
the command-line. {commands} is executed like it is
typed. For undo all commands are undone together.
If the [!] is given, mappings will not be used.
{commands} should be a complete command. If
{commands} does not finish a command, more characters
need to be typed, but the display isn't updated while
doing this. This implies that an insert command must
be completed (to start Insert mode, see
|:startinsert|).
This command cannot be followed by another command,
since any '|' is considered part of the command.
This command can be used recursively, but the depth is
limited by 'maxmapdepth'.
When this command is called from a non-remappable
mapping |:noremap|, the argument can be mapped anyway.
An alternative is to use |:execute|, which uses an
expression as argument. This allows the use of
printable characters. Example:
:exe "normal \<c-w>\<c-w>"
Hint: If the {commands} ends in an <Esc>, Vim may
think it's the start of a function key, and 'ttimeout'
will apply, which makes things very slow, or even wait
indefenitely for anything to be typed. Include the
[!] in this case.
{not in Vi, of course}
Not available when |+ex_extra| feature was disabled at
compile time.
:{range}norm[al][!] {commands} *:normal-range*
Execute Normal mode commands {commands} for each line
in the {range}. Before executing the {commands}, the
cursor is positioned in the first column of the range,
for each line. Otherwise it's the same as the
":normal" command without a range.
{not in Vi}
Not available when |+ex_extra| feature was disabled at
compile time.
*:sh* *:shell*
:sh[ell] This command starts a shell. When the shell exits
(after the "exit" command) you return to Vim. The
name for the shell command comes from 'shell' option.
Note: This doesn't work when Vim on the Amiga was
started in QuickFix mode from a compiler, because the
compiler will have set stdin to a non-interactive
mode.
*:!cmd* *:!*
:!{cmd} Execute {cmd} with the shell. See also the 'shell'
and 'shelltype' option.
Any '!' in {cmd} is replaced with the previous
external command (see also 'cpoptions'). But not when
there is a backslash before the '!', then that
backslash is removed. Example: ":!ls" followed by
":!echo ! \! \\!" executes "echo ls ! \!".
After the command has been executed, the timestamp of
the current file is checked |timestamp|.
There cannot be a '|' in {cmd}, see |:bar|.
On Unix the command normally runs in a non-interactive
shell. If you want an interactive shell to be used
(to use aliases) set 'shellcmdflag' to "-ic".
Also see |shell-window|.
*:!!*
:!! Repeat last ":!{cmd}".
*:ve* *:version*
:ve[rsion] Print the version number of the editor. If the
compiler used understands "__DATE__" the compilation
date is mentioned. Otherwise a fixed release-date is
shown.
The following lines contain information about which
features were enabled when Vim was compiled. When
there is a preceding '+', the feature is included,
when there is a '-' it is excluded. To change this,
you have to edit feature.h and recompile Vim.
To check for this in an expression, see |has()|.
Here is an overview of the features:
*+feature-list*
*+ARP* Amiga only: ARP support included
*+autocmd* |:autocmd|, automatic commands
*+browse* |:browse| command
*+builtin_terms* some terminals builtin |builtin-terms|
*++builtin_terms* maximal terminals builtin |builtin-terms|
*+byte_offset* support for 'o' flag in 'statusline' option, "go"
and ":goto" commands.
*+cindent* |'cindent'|, C indenting
*+cmdline_compl* command line completion |cmdline-completion|
*+cmdline_info* |'showcmd'| and
*+comments* |'comments'| support
*+cryptv* encryption support |encryption|
*+cscope* |cscope| support
*+dialog_gui* Support for |:confirm| with GUI dialog.
*+dialog_con* Support for |:confirm| with console dialog.
*+dialog_con_gui* Support for |:confirm| with GUI and console dialog.
*+digraphs* |digraphs|
*+emacs_tags* |emacs-tags| files
*+eval* expression evaluation |eval.txt|
*+ex_extra* Vim's extra Ex commands: |:center|,
|:normal|, |:retab| and |:right|
*+extra_search* |'hlsearch'| and
*+farsi* |farsi| language
*+file_in_path* |gf|,
*+find_in_path* include file searches: |[I|,
|CTRL-W_CTRL-I|, |:checkpath|, etc.
*+fork* Unix only: |fork| shell commands
*+GUI_Athena* Unix only: Athena |GUI|
*+GUI_BeOS* BeOS only: BeOS |GUI|
*+GUI_GTK* Unix only: GTK+ |GUI|
*+GUI_Motif* Unix only: Motif |GUI|
*+hangul_input* Hangul input support |hangul|
*+insert_expand* |insert_expand| Insert mode completion
*+langmap* |'langmap'|
*+linebreak* |'linebreak'|,
*+lispindent* |'lisp'|
*+menu* |:menu|
*+mksession* |:mksession|
*+modify_fname* |filename-modifiers|
*+mouse* Mouse handling |mouse-using|
*+mouse_dec* Unix only: Dec terminal mouse handling |dec-mouse|
*+mouse_gpm* Unix only: Linux console mouse handling |gpm-mouse|
*+mouse_netterm* Unix only: netterm mouse handling |netterm-mouse|
*+mouse_xterm* Unix only: xterm mouse handling |xterm-mouse|
*+multi_byte* Korean and other languages |multibyte|
*+multi_byte_ime* Win32 input method for multi_byte characters.
*+ole* Win32 GUI only: |ole-interface|
*+osfiletype* Support for the 'osfiletype' option and filetype
checking in automatic commands. |autocmd-osfiletypes|
*+perl* Perl interface |perl|
*+python* Python interface |python|
*+quickfix* |:make| and
*+rightleft* Right to left typing |'rightleft'|
*+scrollbind* |'scrollbind'|
*+smartindent* |'smartindent'|
*+sniff* SniFF interface (no docs available...)
*+statusline* Options 'statusline', 'rulerformat' and special
formats of 'titlestring' and 'iconstring'
*+syntax* Syntax highlighting |syntax|
*+system()* Unix only: opposite of |+fork|
*+tag_binary* binary searching in tags file |tag-binary-search|
*+tag_old_static* old method for static tags |tag-old-static|
*+tag_any_white* any white space allowed in tags file |tag-any-white|
*+tcl* Tcl interface |tcl|
*+terminfo* uses |terminfo| instead of termcap
*+textobjects* |text-objects| selection
*+tgetent* non-Unix only: able to use external termcap
*+title* Setting the window title |'title'|
*+user_commands* User-defined commands. |user-commands|
*+viminfo* |'viminfo'|
*+visualextra* Extra Visual mode commands |blockwise-operators|
*+wildignore* |'wildignore'|
*+wildmenu* |'wildmenu'|
*+writebackup* |'writebackup'| is default on
*+xim* X input method |xim|
*+xfontset* X fontset support |xfontset|
*+xterm_clipboard* Unix only: xterm clipboard handling
*+xterm_save* Save and restore xterm screen |xterm-screens|
*+X11* Unix only: can restore window title |X11|
:ve[rsion] {nr} Is now ignored. This was previously used to check the
version number of a .vimrc file. It was removed,
because you can now use the ":if" command for
version-dependent behavior. {not in Vi}
*:redi* *:redir*
:redi[r][!] > {file} Redirect messages to file {file}. The messages which
are the output of commands are written to that file,
until redirection ends. The messages are also still
shown on the screen. When [!] is included, an
existing file is overwritten. When [!] is omitted,
and {file} exists, this command fails. {not in Vi}
:redi[r] >> {file} Redirect message to file {file}. Append if {file}
already exists. {not in Vi}
:redi[r] @{a-zA-Z} Redirect message to register {a-z}. Append to the
contents of the register if its name is given
uppercase {A-Z}. {not in Vi}
:redi[r] END End redirecting messages. {not in Vi}
*K*
K Run a program to lookup the keyword under the
cursor. The name of the program is given with the
'keywordprg' (kp) option (default is "man"). The
keyword is formed of letters, numbers and the
characters in 'iskeyword'. The keyword under or
right of the cursor is used. The same can be done
with the command
:!{program} {keyword}
There is an example of a program to use in the tools
directory of Vim. It is called 'ref' and does a
simple spelling check.
Special cases:
- If 'keywordprg' is empty, the ":help" command is
used. It's a good idea to include more characters
in 'iskeyword' then, to be able to find more help.
- When 'keywordprg' is equal to "man", a count before
"K" is inserted after the "man" command and before
the keyword. For example, using "2K" while the
cursor is on "mkdir", results in:
!man 2 mkdir
- When 'keywordprg' is equal to "man -s", a count
before "K" is inserted after the "-s". If there is
no count, the "-s" is removed.
{not in Vi}
*v_K*
{Visual}K Like "K", but use the visually highlighted text for
the keyword. Only works when the highlighted text is
not more than one line. {not in Vi}
[N]gs *gs* *:sl* *:sleep*
:[N]sl[eep] [N] [m] Do nothing for [N] seconds. When [m] is included,
sleep for [N] milliseconds.
:sleep "sleep for one second
:5sleep "sleep for five seconds
:sleep 100m "sleep for hunderd millisonds
Can be interrupted with CTRL-C (CTRL-Break on MS-DOS).
"gs" stands for "goto sleep". While sleeping the
cursor is positioned in the text (if visible). {not
in Vi}
*g_CTRL-A*
g CTRL-A Only when Vim was compiled with MEM_PROFILING defined
(which is very rare): print memory usage statistics.
Only useful for debugging Vim.
==============================================================================
2. Online help *online-help*
*help* *<Help>* *:h* *:help* *<F1>* *i_<F1>* *i_<Help>*
<Help> or
:h[elp] Split the window and display the help file in
read-only mode. If there is a help window open
already, use that one. {not in Vi}
*{subject}*
:h[elp] {subject} Like ":help", additionally jump to the tag {subject}.
{subject} can include wildcards like "*", "?" and
"[a-z]":
:help z? jump to help for any "z" command
:help z. jump to the help for "z."
If there is no full match for the pattern, or there
are several matches, the "best" match will be used.
A sophisticated algorithm is used to decide which
match is better than another one. These items are
considered in the computation:
- A match with same case is much better than a match
with different case.
- A match that starts after a non-alphanumeric
character is better than a match in the middle of a
word.
- A match at or near the beginning of the tag is
better than a match further on.
- The more alphanumeric characters match, the better.
- The shorter the length of the match, the better.
Note that the longer the {subject} you give, the less
matches will be found. You can get an idea how this
all works by using commandline completion (type CTRL-D
after ":help subject").
If there are several matches, you can have them listed
by hitting CTRL-D. Example:
:help cont<Ctrl-D>
To use a regexp |pattern|, first do ":help" and then
use ":tag {pattern}" in the help window. The
":tnext" command can then be used to jump to other
matches, "tselect" to list matches and choose one.
:help index| :tse z.
This command can be followed by '|' and another
command, but you don't need to escape the '|' inside a
help command. So these both work:
:help |
:help k| only
Note that a space before the '|' is seen as part of
the ":help" argument.
You can also use <LF> or <CR> to separate the help
command from a following command. You need to type
CTRL-V first to insert the <LF> or <CR>. Example:
:help so<C-V><CR>only
{not in Vi}
The help file name can be set with the 'helpfile' option. The initial height
of the help window can be set with the 'helpheight' option (default 20).
Jump to specific subjects by using tags. This can be done in two ways:
- Use the "CTRL-]" command while standing on the name of a command or option.
This only works when the tag is a keyword. "<C-Leftmouse>" and
"g<LeftMouse>" work just like "CTRL-]".
- use the ":ta {subject}" command. This works with all characters.
Use "CTRL-T" to jump back.
Use ":q" to close the help window.
*help-xterm-window*
If you want to have the help in another xterm window, you could use this
command:
:!xterm -e vim +help &
*:helpfind* *:helpf*
:helpf[ind] Like |:help|, but use a dialog to enter the argument.
{only when compiled with YXXY+GUI_GTK|}
top - main help file