Bram Moolenaar | 251e191 | 2011-06-19 05:09:16 +0200 | [diff] [blame] | 1 | *various.txt* For Vim version 7.3. Last change: 2011 May 19 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2 | |
| 3 | |
| 4 | VIM REFERENCE MANUAL by Bram Moolenaar |
| 5 | |
| 6 | |
| 7 | Various commands *various* |
| 8 | |
| 9 | 1. Various commands |various-cmds| |
Bram Moolenaar | 9160441 | 2010-06-03 20:25:18 +0200 | [diff] [blame] | 10 | 2. Using Vim like less or more |less| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 11 | |
| 12 | ============================================================================== |
| 13 | 1. Various commands *various-cmds* |
| 14 | |
| 15 | *CTRL-L* |
Bram Moolenaar | 30abd28 | 2005-06-22 22:35:10 +0000 | [diff] [blame] | 16 | CTRL-L Clear and redraw the screen. The redraw may happen |
| 17 | later, after processing typeahead. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 18 | |
| 19 | *:redr* *:redraw* |
| 20 | :redr[aw][!] Redraw the screen right now. When ! is included it is |
| 21 | cleared first. |
| 22 | Useful to update the screen halfway executing a script |
| 23 | or function. Also when halfway a mapping and |
| 24 | 'lazyredraw' is set. |
| 25 | |
| 26 | *:redraws* *:redrawstatus* |
| 27 | :redraws[tatus][!] Redraw the status line of the current window. When ! |
| 28 | is included all status lines are redrawn. |
| 29 | Useful to update the status line(s) when 'statusline' |
| 30 | includes an item that doesn't cause automatic |
| 31 | updating. |
| 32 | |
| 33 | *N<Del>* |
| 34 | <Del> When entering a number: Remove the last digit. |
| 35 | Note: if you like to use <BS> for this, add this |
| 36 | mapping to your .vimrc: > |
| 37 | :map CTRL-V <BS> CTRL-V <Del> |
| 38 | < See |:fixdel| if your <Del> key does not do what you |
| 39 | want. |
| 40 | |
| 41 | :as[cii] or *ga* *:as* *:ascii* |
| 42 | ga Print the ascii value of the character under the |
| 43 | cursor in decimal, hexadecimal and octal. For |
| 44 | example, when the cursor is on a 'R': |
| 45 | <R> 82, Hex 52, Octal 122 ~ |
| 46 | When the character is a non-standard ASCII character, |
| 47 | but printable according to the 'isprint' option, the |
| 48 | non-printable version is also given. When the |
| 49 | character is larger than 127, the <M-x> form is also |
| 50 | printed. For example: |
| 51 | <~A> <M-^A> 129, Hex 81, Octal 201 ~ |
| 52 | <p> <|~> <M-~> 254, Hex fe, Octal 376 ~ |
| 53 | (where <p> is a special character) |
| 54 | The <Nul> character in a file is stored internally as |
| 55 | <NL>, but it will be shown as: |
| 56 | <^@> 0, Hex 00, Octal 000 ~ |
Bram Moolenaar | 362e1a3 | 2006-03-06 23:29:24 +0000 | [diff] [blame] | 57 | If the character has composing characters these are |
| 58 | also shown. The value of 'maxcombine' doesn't matter. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 59 | Mnemonic: Get Ascii value. {not in Vi} |
| 60 | |
| 61 | *g8* |
| 62 | g8 Print the hex values of the bytes used in the |
| 63 | character under the cursor, assuming it is in |UTF-8| |
Bram Moolenaar | 362e1a3 | 2006-03-06 23:29:24 +0000 | [diff] [blame] | 64 | encoding. This also shows composing characters. The |
| 65 | value of 'maxcombine' doesn't matter. |
| 66 | Example of a character with two composing characters: |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 67 | e0 b8 81 + e0 b8 b9 + e0 b9 89 ~ |
Bram Moolenaar | ca003e1 | 2006-03-17 23:19:38 +0000 | [diff] [blame] | 68 | {not in Vi} {only when compiled with the |+multi_byte| |
| 69 | feature} |
| 70 | |
| 71 | *8g8* |
| 72 | 8g8 Find an illegal UTF-8 byte sequence at or after the |
| 73 | cursor. This works in two situations: |
| 74 | 1. when 'encoding' is any 8-bit encoding |
| 75 | 2. when 'encoding' is "utf-8" and 'fileencoding' is |
| 76 | any 8-bit encoding |
| 77 | Thus it can be used when editing a file that was |
| 78 | supposed to be UTF-8 but was read as if it is an 8-bit |
| 79 | encoding because it contains illegal bytes. |
| 80 | Does not wrap around the end of the file. |
| 81 | Note that when the cursor is on an illegal byte or the |
| 82 | cursor is halfway a multi-byte character the command |
| 83 | won't move the cursor. |
| 84 | {not in Vi} {only when compiled with the |+multi_byte| |
| 85 | feature} |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 86 | |
Bram Moolenaar | 551dbcc | 2006-04-25 22:13:59 +0000 | [diff] [blame] | 87 | *:p* *:pr* *:print* *E749* |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 88 | :[range]p[rint] [flags] |
| 89 | Print [range] lines (default current line). |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 90 | Note: If you are looking for a way to print your text |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 91 | on paper see |:hardcopy|. In the GUI you can use the |
| 92 | File.Print menu entry. |
| 93 | See |ex-flags| for [flags]. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 94 | |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 95 | :[range]p[rint] {count} [flags] |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 96 | Print {count} lines, starting with [range] (default |
| 97 | current line |cmdline-ranges|). |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 98 | See |ex-flags| for [flags]. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 99 | |
| 100 | *:P* *:Print* |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 101 | :[range]P[rint] [count] [flags] |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 102 | Just as ":print". Was apparently added to Vi for |
| 103 | people that keep the shift key pressed too long... |
Bram Moolenaar | 166af9b | 2010-11-16 20:34:40 +0100 | [diff] [blame] | 104 | Note: A user command can overrule this command. |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 105 | See |ex-flags| for [flags]. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 106 | |
| 107 | *:l* *:list* |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 108 | :[range]l[ist] [count] [flags] |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 109 | Same as :print, but display unprintable characters |
Bram Moolenaar | f9d5ca1 | 2010-08-01 16:13:51 +0200 | [diff] [blame] | 110 | with '^' and put $ after the line. This can be |
Bram Moolenaar | d58e929 | 2011-02-09 17:07:58 +0100 | [diff] [blame] | 111 | further changed with the 'listchars' option. |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 112 | See |ex-flags| for [flags]. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 113 | |
| 114 | *:nu* *:number* |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 115 | :[range]nu[mber] [count] [flags] |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 116 | Same as :print, but precede each line with its line |
Bram Moolenaar | faa959a | 2006-02-20 21:37:40 +0000 | [diff] [blame] | 117 | number. (See also 'highlight' and 'numberwidth' |
| 118 | option). |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 119 | See |ex-flags| for [flags]. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 120 | |
| 121 | *:#* |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 122 | :[range]# [count] [flags] |
| 123 | synonym for :number. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 124 | |
Bram Moolenaar | c81e5e7 | 2007-05-05 18:24:42 +0000 | [diff] [blame] | 125 | *:#!* |
| 126 | :#!{anything} Ignored, so that you can start a Vim script with: > |
Bram Moolenaar | 8c8de83 | 2008-06-24 22:58:06 +0000 | [diff] [blame] | 127 | #!vim -S |
Bram Moolenaar | c81e5e7 | 2007-05-05 18:24:42 +0000 | [diff] [blame] | 128 | echo "this is a Vim script" |
| 129 | quit |
| 130 | < |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 131 | *:z* *E144* |
| 132 | :{range}z[+-^.=]{count} Display several lines of text surrounding the line |
| 133 | specified with {range}, or around the current line |
| 134 | if there is no {range}. If there is a {count}, that's |
Bram Moolenaar | 4399ef4 | 2005-02-12 14:29:27 +0000 | [diff] [blame] | 135 | how many lines you'll see; if there is only one window |
Bram Moolenaar | 662db67 | 2011-03-22 14:05:35 +0100 | [diff] [blame] | 136 | then twice the value of the 'scroll' option is used, |
| 137 | otherwise the current window height minus 3 is used. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 138 | |
| 139 | :z can be used either alone or followed by any of |
| 140 | several punctuation marks. These have the following |
| 141 | effect: |
| 142 | |
Bram Moolenaar | 662db67 | 2011-03-22 14:05:35 +0100 | [diff] [blame] | 143 | mark first line last line new cursor line ~ |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 144 | ---- ---------- --------- ------------ |
| 145 | + current line 1 scr forward 1 scr forward |
| 146 | - 1 scr back current line current line |
| 147 | ^ 2 scr back 1 scr back 1 scr back |
Bram Moolenaar | 2a8d1f8 | 2005-02-05 21:43:56 +0000 | [diff] [blame] | 148 | . 1/2 scr back 1/2 scr fwd 1/2 scr fwd |
| 149 | = 1/2 scr back 1/2 scr fwd current line |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 150 | |
| 151 | Specifying no mark at all is the same as "+". |
| 152 | If the mark is "=", a line of dashes is printed |
| 153 | around the current line. |
| 154 | |
| 155 | :{range}z#[+-^.=]{count} *:z#* |
| 156 | Like ":z", but number the lines. |
| 157 | {not in all versions of Vi, not with these arguments} |
| 158 | |
| 159 | *:=* |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 160 | := [flags] Print the last line number. |
| 161 | See |ex-flags| for [flags]. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 162 | |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 163 | :{range}= [flags] Prints the last line number in {range}. For example, |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 164 | this prints the current line number: > |
| 165 | :.= |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 166 | < See |ex-flags| for [flags]. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 167 | |
| 168 | :norm[al][!] {commands} *:norm* *:normal* |
| 169 | Execute Normal mode commands {commands}. This makes |
| 170 | it possible to execute Normal mode commands typed on |
Bram Moolenaar | 4a74803 | 2010-09-30 21:47:56 +0200 | [diff] [blame] | 171 | the command-line. {commands} are executed like they |
| 172 | are typed. For undo all commands are undone together. |
Bram Moolenaar | c81e5e7 | 2007-05-05 18:24:42 +0000 | [diff] [blame] | 173 | Execution stops when an error is encountered. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 174 | If the [!] is given, mappings will not be used. |
| 175 | {commands} should be a complete command. If |
| 176 | {commands} does not finish a command, the last one |
| 177 | will be aborted as if <Esc> or <C-C> was typed. |
| 178 | The display isn't updated while ":normal" is busy. |
| 179 | This implies that an insert command must be completed |
| 180 | (to start Insert mode, see |:startinsert|). A ":" |
Bram Moolenaar | 7c62692 | 2005-02-07 22:01:03 +0000 | [diff] [blame] | 181 | command must be completed as well. And you can't use |
| 182 | "Q" or "gQ" to start Ex mode. |
Bram Moolenaar | 8f3f58f | 2010-01-06 20:52:26 +0100 | [diff] [blame] | 183 | {commands} cannot start with a space. Put a count of |
| 184 | 1 (one) before it, "1 " is one space. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 185 | The 'insertmode' option is ignored for {commands}. |
| 186 | This command cannot be followed by another command, |
| 187 | since any '|' is considered part of the command. |
| 188 | This command can be used recursively, but the depth is |
| 189 | limited by 'maxmapdepth'. |
| 190 | When this command is called from a non-remappable |
| 191 | mapping |:noremap|, the argument can be mapped anyway. |
| 192 | An alternative is to use |:execute|, which uses an |
| 193 | expression as argument. This allows the use of |
Bram Moolenaar | 46f9d49 | 2010-06-12 20:18:19 +0200 | [diff] [blame] | 194 | printable characters to represent special characters. |
| 195 | Example: > |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 196 | :exe "normal \<c-w>\<c-w>" |
| 197 | < {not in Vi, of course} |
| 198 | {not available when the |+ex_extra| feature was |
| 199 | disabled at compile time} |
| 200 | |
| 201 | :{range}norm[al][!] {commands} *:normal-range* |
| 202 | Execute Normal mode commands {commands} for each line |
| 203 | in the {range}. Before executing the {commands}, the |
| 204 | cursor is positioned in the first column of the range, |
| 205 | for each line. Otherwise it's the same as the |
| 206 | ":normal" command without a range. |
| 207 | {not in Vi} |
Bram Moolenaar | db84e45 | 2010-08-15 13:50:43 +0200 | [diff] [blame] | 208 | {not available when |+ex_extra| feature was disabled |
| 209 | at compile time} |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 210 | |
| 211 | *:sh* *:shell* *E371* |
| 212 | :sh[ell] This command starts a shell. When the shell exits |
| 213 | (after the "exit" command) you return to Vim. The |
| 214 | name for the shell command comes from 'shell' option. |
| 215 | *E360* |
| 216 | Note: This doesn't work when Vim on the Amiga was |
| 217 | started in QuickFix mode from a compiler, because the |
| 218 | compiler will have set stdin to a non-interactive |
| 219 | mode. |
| 220 | |
| 221 | *:!cmd* *:!* *E34* |
| 222 | :!{cmd} Execute {cmd} with the shell. See also the 'shell' |
| 223 | and 'shelltype' option. |
| 224 | Any '!' in {cmd} is replaced with the previous |
| 225 | external command (see also 'cpoptions'). But not when |
| 226 | there is a backslash before the '!', then that |
| 227 | backslash is removed. Example: ":!ls" followed by |
| 228 | ":!echo ! \! \\!" executes "echo ls ! \!". |
| 229 | After the command has been executed, the timestamp of |
| 230 | the current file is checked |timestamp|. |
Bram Moolenaar | 8c8de83 | 2008-06-24 22:58:06 +0000 | [diff] [blame] | 231 | A '|' in {cmd} is passed to the shell, you cannot use |
| 232 | it to append a Vim command. See |:bar|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 233 | A newline character ends {cmd}, what follows is |
| 234 | interpreted as a following ":" command. However, if |
| 235 | there is a backslash before the newline it is removed |
| 236 | and {cmd} continues. It doesn't matter how many |
| 237 | backslashes are before the newline, only one is |
| 238 | removed. |
| 239 | On Unix the command normally runs in a non-interactive |
| 240 | shell. If you want an interactive shell to be used |
| 241 | (to use aliases) set 'shellcmdflag' to "-ic". |
| 242 | For Win32 also see |:!start|. |
| 243 | Vim redraws the screen after the command is finished, |
| 244 | because it may have printed any text. This requires a |
| 245 | hit-enter prompt, so that you can read any messages. |
| 246 | To avoid this use: > |
| 247 | :silent !{cmd} |
| 248 | < The screen is not redrawn then, thus you have to use |
| 249 | CTRL-L or ":redraw!" if the command did display |
| 250 | something. |
| 251 | Also see |shell-window|. |
| 252 | |
| 253 | *:!!* |
| 254 | :!! Repeat last ":!{cmd}". |
| 255 | |
| 256 | *:ve* *:version* |
| 257 | :ve[rsion] Print the version number of the editor. If the |
| 258 | compiler used understands "__DATE__" the compilation |
| 259 | date is mentioned. Otherwise a fixed release-date is |
| 260 | shown. |
| 261 | The following lines contain information about which |
| 262 | features were enabled when Vim was compiled. When |
| 263 | there is a preceding '+', the feature is included, |
| 264 | when there is a '-' it is excluded. To change this, |
| 265 | you have to edit feature.h and recompile Vim. |
| 266 | To check for this in an expression, see |has()|. |
| 267 | Here is an overview of the features. |
| 268 | The first column shows the smallest version in which |
| 269 | they are included: |
| 270 | T tiny |
| 271 | S small |
| 272 | N normal |
| 273 | B big |
| 274 | H huge |
| 275 | m manually enabled or depends on other features |
| 276 | (none) system dependent |
| 277 | Thus if a feature is marked with "N", it is included |
| 278 | in the normal, big and huge versions of Vim. |
| 279 | |
| 280 | *+feature-list* |
| 281 | *+ARP* Amiga only: ARP support included |
| 282 | B *+arabic* |Arabic| language support |
| 283 | N *+autocmd* |:autocmd|, automatic commands |
Bram Moolenaar | 4d34b43 | 2005-03-07 23:22:00 +0000 | [diff] [blame] | 284 | m *+balloon_eval* |balloon-eval| support. Included when compiling with |
| 285 | supported GUI (Motif, GTK, GUI) and either |
| 286 | Netbeans/Sun Workshop integration or |+eval| feature. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 287 | N *+browse* |:browse| command |
| 288 | N *+builtin_terms* some terminals builtin |builtin-terms| |
| 289 | B *++builtin_terms* maximal terminals builtin |builtin-terms| |
| 290 | N *+byte_offset* support for 'o' flag in 'statusline' option, "go" |
| 291 | and ":goto" commands. |
| 292 | N *+cindent* |'cindent'|, C indenting |
| 293 | N *+clientserver* Unix and Win32: Remote invocation |clientserver| |
| 294 | *+clipboard* |clipboard| support |
| 295 | N *+cmdline_compl* command line completion |cmdline-completion| |
| 296 | N *+cmdline_hist* command line history |cmdline-history| |
| 297 | N *+cmdline_info* |'showcmd'| and |'ruler'| |
| 298 | N *+comments* |'comments'| support |
Bram Moolenaar | ca8c986 | 2010-07-24 15:00:38 +0200 | [diff] [blame] | 299 | B *+conceal* "conceal" support, see |conceal| |:syn-conceal| etc. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 300 | N *+cryptv* encryption support |encryption| |
| 301 | B *+cscope* |cscope| support |
Bram Moolenaar | 860cae1 | 2010-06-05 23:22:07 +0200 | [diff] [blame] | 302 | m *+cursorbind* |'cursorbind'| support |
Bram Moolenaar | ac6e65f | 2005-08-29 22:25:38 +0000 | [diff] [blame] | 303 | m *+cursorshape* |termcap-cursor-shape| support |
| 304 | m *+debug* Compiled for debugging. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 305 | N *+dialog_gui* Support for |:confirm| with GUI dialog. |
| 306 | N *+dialog_con* Support for |:confirm| with console dialog. |
| 307 | N *+dialog_con_gui* Support for |:confirm| with GUI and console dialog. |
| 308 | N *+diff* |vimdiff| and 'diff' |
| 309 | N *+digraphs* |digraphs| *E196* |
| 310 | *+dnd* Support for DnD into the "~ register |quote_~|. |
| 311 | B *+emacs_tags* |emacs-tags| files |
| 312 | N *+eval* expression evaluation |eval.txt| |
| 313 | N *+ex_extra* Vim's extra Ex commands: |:center|, |:left|, |
| 314 | |:normal|, |:retab| and |:right| |
| 315 | N *+extra_search* |'hlsearch'| and |'incsearch'| options. |
| 316 | B *+farsi* |farsi| language |
| 317 | N *+file_in_path* |gf|, |CTRL-W_f| and |<cfile>| |
| 318 | N *+find_in_path* include file searches: |[I|, |:isearch|, |
| 319 | |CTRL-W_CTRL-I|, |:checkpath|, etc. |
| 320 | N *+folding* |folding| |
| 321 | *+footer* |gui-footer| |
| 322 | *+fork* Unix only: |fork| shell commands |
Bram Moolenaar | 8c8de83 | 2008-06-24 22:58:06 +0000 | [diff] [blame] | 323 | *+float* Floating point support |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 324 | N *+gettext* message translations |multi-lang| |
| 325 | *+GUI_Athena* Unix only: Athena |GUI| |
| 326 | *+GUI_neXtaw* Unix only: neXtaw |GUI| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 327 | *+GUI_GTK* Unix only: GTK+ |GUI| |
| 328 | *+GUI_Motif* Unix only: Motif |GUI| |
| 329 | *+GUI_Photon* QNX only: Photon |GUI| |
| 330 | m *+hangul_input* Hangul input support |hangul| |
Bram Moolenaar | a5792f5 | 2005-11-23 21:25:05 +0000 | [diff] [blame] | 331 | *+iconv* Compiled with the |iconv()| function |
| 332 | *+iconv/dyn* Likewise |iconv-dynamic| |/dyn| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 333 | N *+insert_expand* |insert_expand| Insert mode completion |
| 334 | N *+jumplist* |jumplist| |
| 335 | B *+keymap* |'keymap'| |
| 336 | B *+langmap* |'langmap'| |
| 337 | N *+libcall* |libcall()| |
| 338 | N *+linebreak* |'linebreak'|, |'breakat'| and |'showbreak'| |
| 339 | N *+lispindent* |'lisp'| |
| 340 | N *+listcmds* Vim commands for the list of buffers |buffer-hidden| |
| 341 | and argument list |:argdelete| |
| 342 | N *+localmap* Support for mappings local to a buffer |:map-local| |
Bram Moolenaar | 0ba0429 | 2010-07-14 23:23:17 +0200 | [diff] [blame] | 343 | m *+lua* |Lua| interface |
| 344 | m *+lua/dyn* |Lua| interface |/dyn| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 345 | N *+menu* |:menu| |
| 346 | N *+mksession* |:mksession| |
| 347 | N *+modify_fname* |filename-modifiers| |
| 348 | N *+mouse* Mouse handling |mouse-using| |
| 349 | N *+mouseshape* |'mouseshape'| |
| 350 | B *+mouse_dec* Unix only: Dec terminal mouse handling |dec-mouse| |
| 351 | N *+mouse_gpm* Unix only: Linux console mouse handling |gpm-mouse| |
| 352 | B *+mouse_netterm* Unix only: netterm mouse handling |netterm-mouse| |
| 353 | N *+mouse_pterm* QNX only: pterm mouse handling |qnx-terminal| |
Bram Moolenaar | 8c8de83 | 2008-06-24 22:58:06 +0000 | [diff] [blame] | 354 | N *+mouse_sysmouse* Unix only: *BSD console mouse handling |sysmouse| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 355 | N *+mouse_xterm* Unix only: xterm mouse handling |xterm-mouse| |
Bram Moolenaar | 8f3f58f | 2010-01-06 20:52:26 +0100 | [diff] [blame] | 356 | B *+multi_byte* 16 and 32 bit characters |multibyte| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 357 | *+multi_byte_ime* Win32 input method for multibyte chars |multibyte-ime| |
| 358 | N *+multi_lang* non-English language support |multi-lang| |
Bram Moolenaar | 325b7a2 | 2004-07-05 15:58:32 +0000 | [diff] [blame] | 359 | m *+mzscheme* Mzscheme interface |mzscheme| |
Bram Moolenaar | 4770d09 | 2006-01-12 23:22:24 +0000 | [diff] [blame] | 360 | m *+mzscheme/dyn* Mzscheme interface |mzscheme-dynamic| |/dyn| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 361 | m *+netbeans_intg* |netbeans| |
| 362 | m *+ole* Win32 GUI only: |ole-interface| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 363 | N *+path_extra* Up/downwards search in 'path' and 'tags' |
Bram Moolenaar | a5792f5 | 2005-11-23 21:25:05 +0000 | [diff] [blame] | 364 | m *+perl* Perl interface |perl| |
| 365 | m *+perl/dyn* Perl interface |perl-dynamic| |/dyn| |
Bram Moolenaar | 7fc0c06 | 2010-08-10 21:43:35 +0200 | [diff] [blame] | 366 | N *+persistent_undo* Persistent undo |undo-persistence| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 367 | *+postscript* |:hardcopy| writes a PostScript file |
| 368 | N *+printer* |:hardcopy| command |
Bram Moolenaar | 19a09a1 | 2005-03-04 23:39:37 +0000 | [diff] [blame] | 369 | H *+profile* |:profile| command |
Bram Moolenaar | 60aad97 | 2010-07-21 20:36:22 +0200 | [diff] [blame] | 370 | m *+python* Python 2 interface |python| |
| 371 | m *+python/dyn* Python 2 interface |python-dynamic| |/dyn| |
| 372 | m *+python3* Python 3 interface |python| |
| 373 | m *+python3/dyn* Python 3 interface |python-dynamic| |/dyn| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 374 | N *+quickfix* |:make| and |quickfix| commands |
Bram Moolenaar | 8c8de83 | 2008-06-24 22:58:06 +0000 | [diff] [blame] | 375 | N *+reltime* |reltime()| function, 'hlsearch'/'incsearch' timeout, |
| 376 | 'redrawtime' option |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 377 | B *+rightleft* Right to left typing |'rightleft'| |
Bram Moolenaar | a5792f5 | 2005-11-23 21:25:05 +0000 | [diff] [blame] | 378 | m *+ruby* Ruby interface |ruby| |
| 379 | m *+ruby/dyn* Ruby interface |ruby-dynamic| |/dyn| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 380 | N *+scrollbind* |'scrollbind'| |
| 381 | B *+signs* |:sign| |
| 382 | N *+smartindent* |'smartindent'| |
| 383 | m *+sniff* SniFF interface |sniff| |
Bram Moolenaar | ef94eec | 2009-11-11 13:22:11 +0000 | [diff] [blame] | 384 | N *+startuptime* |--startuptime| argument |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 385 | N *+statusline* Options 'statusline', 'rulerformat' and special |
| 386 | formats of 'titlestring' and 'iconstring' |
| 387 | m *+sun_workshop* |workshop| |
| 388 | N *+syntax* Syntax highlighting |syntax| |
| 389 | *+system()* Unix only: opposite of |+fork| |
| 390 | N *+tag_binary* binary searching in tags file |tag-binary-search| |
| 391 | N *+tag_old_static* old method for static tags |tag-old-static| |
| 392 | m *+tag_any_white* any white space allowed in tags file |tag-any-white| |
Bram Moolenaar | a5792f5 | 2005-11-23 21:25:05 +0000 | [diff] [blame] | 393 | m *+tcl* Tcl interface |tcl| |
| 394 | m *+tcl/dyn* Tcl interface |tcl-dynamic| |/dyn| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 395 | *+terminfo* uses |terminfo| instead of termcap |
| 396 | N *+termresponse* support for |t_RV| and |v:termresponse| |
| 397 | N *+textobjects* |text-objects| selection |
| 398 | *+tgetent* non-Unix only: able to use external termcap |
Bram Moolenaar | c81e5e7 | 2007-05-05 18:24:42 +0000 | [diff] [blame] | 399 | N *+title* Setting the window 'title' and 'icon' |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 400 | N *+toolbar* |gui-toolbar| |
| 401 | N *+user_commands* User-defined commands. |user-commands| |
| 402 | N *+viminfo* |'viminfo'| |
| 403 | N *+vertsplit* Vertically split windows |:vsplit| |
| 404 | N *+virtualedit* |'virtualedit'| |
| 405 | S *+visual* Visual mode |Visual-mode| |
| 406 | N *+visualextra* extra Visual mode commands |blockwise-operators| |
| 407 | N *+vreplace* |gR| and |gr| |
| 408 | N *+wildignore* |'wildignore'| |
| 409 | N *+wildmenu* |'wildmenu'| |
| 410 | S *+windows* more than one window |
| 411 | m *+writebackup* |'writebackup'| is default on |
| 412 | m *+xim* X input method |xim| |
| 413 | *+xfontset* X fontset support |xfontset| |
| 414 | *+xsmp* XSMP (X session management) support |
| 415 | *+xsmp_interact* interactive XSMP (X session management) support |
| 416 | N *+xterm_clipboard* Unix only: xterm clipboard handling |
| 417 | m *+xterm_save* save and restore xterm screen |xterm-screens| |
| 418 | N *+X11* Unix only: can restore window title |X11| |
| 419 | |
| 420 | */dyn* *E370* *E448* |
| 421 | To some of the features "/dyn" is added when the |
| 422 | feature is only available when the related library can |
| 423 | be dynamically loaded. |
| 424 | |
| 425 | :ve[rsion] {nr} Is now ignored. This was previously used to check the |
| 426 | version number of a .vimrc file. It was removed, |
| 427 | because you can now use the ":if" command for |
| 428 | version-dependent behavior. {not in Vi} |
| 429 | |
| 430 | *:redi* *:redir* |
| 431 | :redi[r][!] > {file} Redirect messages to file {file}. The messages which |
| 432 | are the output of commands are written to that file, |
| 433 | until redirection ends. The messages are also still |
| 434 | shown on the screen. When [!] is included, an |
| 435 | existing file is overwritten. When [!] is omitted, |
| 436 | and {file} exists, this command fails. |
| 437 | Only one ":redir" can be active at a time. Calls to |
| 438 | ":redir" will close any active redirection before |
| 439 | starting redirection to the new target. |
| 440 | To stop the messages and commands from being echoed to |
| 441 | the screen, put the commands in a function and call it |
| 442 | with ":silent call Function()". |
Bram Moolenaar | 54ee775 | 2005-05-31 22:22:17 +0000 | [diff] [blame] | 443 | An alternative is to use the 'verbosefile' option, |
| 444 | this can be used in combination with ":redir". |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 445 | {not in Vi} |
| 446 | |
| 447 | :redi[r] >> {file} Redirect messages to file {file}. Append if {file} |
| 448 | already exists. {not in Vi} |
| 449 | |
Bram Moolenaar | 8c8de83 | 2008-06-24 22:58:06 +0000 | [diff] [blame] | 450 | :redi[r] @{a-zA-Z} |
Bram Moolenaar | 6c0b44b | 2005-06-01 21:56:33 +0000 | [diff] [blame] | 451 | :redi[r] @{a-zA-Z}> Redirect messages to register {a-z}. Append to the |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 452 | contents of the register if its name is given |
Bram Moolenaar | 8c8de83 | 2008-06-24 22:58:06 +0000 | [diff] [blame] | 453 | uppercase {A-Z}. The ">" after the register name is |
| 454 | optional. {not in Vi} |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 455 | :redi[r] @{a-z}>> Append messages to register {a-z}. {not in Vi} |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 456 | |
Bram Moolenaar | c81e5e7 | 2007-05-05 18:24:42 +0000 | [diff] [blame] | 457 | :redi[r] @*> |
| 458 | :redi[r] @+> Redirect messages to the selection or clipboard. For |
| 459 | backward compatibility, the ">" after the register |
| 460 | name can be omitted. See |quotestar| and |quoteplus|. |
| 461 | {not in Vi} |
| 462 | :redi[r] @*>> |
| 463 | :redi[r] @+>> Append messages to the selection or clipboard. |
| 464 | {not in Vi} |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 465 | |
Bram Moolenaar | 6c0b44b | 2005-06-01 21:56:33 +0000 | [diff] [blame] | 466 | :redi[r] @"> Redirect messages to the unnamed register. For |
| 467 | backward compatibility, the ">" after the register |
| 468 | name can be omitted. {not in Vi} |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 469 | :redi[r] @">> Append messages to the unnamed register. {not in Vi} |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 470 | |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 471 | :redi[r] => {var} Redirect messages to a variable. If the variable |
| 472 | doesn't exist, then it is created. If the variable |
| 473 | exists, then it is initialized to an empty string. |
Bram Moolenaar | c81e5e7 | 2007-05-05 18:24:42 +0000 | [diff] [blame] | 474 | The variable will remain empty until redirection ends. |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 475 | Only string variables can be used. After the |
| 476 | redirection starts, if the variable is removed or |
| 477 | locked or the variable type is changed, then further |
| 478 | command output messages will cause errors. {not in Vi} |
| 479 | |
| 480 | :redi[r] =>> {var} Append messages to an existing variable. Only string |
| 481 | variables can be used. {not in Vi} |
| 482 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 483 | :redi[r] END End redirecting messages. {not in Vi} |
| 484 | |
| 485 | *:sil* *:silent* |
| 486 | :sil[ent][!] {command} Execute {command} silently. Normal messages will not |
| 487 | be given or added to the message history. |
| 488 | When [!] is added, error messages will also be |
| 489 | skipped, and commands and mappings will not be aborted |
| 490 | when an error is detected. |v:errmsg| is still set. |
| 491 | When [!] is not used, an error message will cause |
| 492 | further messages to be displayed normally. |
| 493 | Redirection, started with |:redir|, will continue as |
| 494 | usual, although there might be small differences. |
| 495 | This will allow redirecting the output of a command |
| 496 | without seeing it on the screen. Example: > |
| 497 | :redir >/tmp/foobar |
| 498 | :silent g/Aap/p |
| 499 | :redir END |
| 500 | < To execute a Normal mode command silently, use the |
| 501 | |:normal| command. For example, to search for a |
| 502 | string without messages: > |
| 503 | :silent exe "normal /path\<CR>" |
| 504 | < ":silent!" is useful to execute a command that may |
| 505 | fail, but the failure is to be ignored. Example: > |
| 506 | :let v:errmsg = "" |
| 507 | :silent! /^begin |
| 508 | :if v:errmsg != "" |
| 509 | : ... pattern was not found |
| 510 | < ":silent" will also avoid the hit-enter prompt. When |
| 511 | using this for an external command, this may cause the |
| 512 | screen to be messed up. Use |CTRL-L| to clean it up |
| 513 | then. |
| 514 | ":silent menu ..." defines a menu that will not echo a |
| 515 | Command-line command. The command will still produce |
| 516 | messages though. Use ":silent" in the command itself |
| 517 | to avoid that: ":silent menu .... :silent command". |
| 518 | |
Bram Moolenaar | 8e258a4 | 2009-07-09 13:55:43 +0000 | [diff] [blame] | 519 | *:uns* *:unsilent* |
| 520 | :uns[ilent] {command} Execute {command} not silently. Only makes a |
| 521 | difference when |:silent| was used to get to this |
| 522 | command. |
| 523 | Use this for giving a message even when |:silent| was |
| 524 | used. In this example |:silent| is used to avoid the |
| 525 | message about reading the file and |:unsilent| to be |
| 526 | able to list the first line of each file. > |
| 527 | :silent argdo unsilent echo expand('%') . ": " . getline(1) |
| 528 | < |
| 529 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 530 | *:verb* *:verbose* |
| 531 | :[count]verb[ose] {command} |
| 532 | Execute {command} with 'verbose' set to [count]. If |
Bram Moolenaar | ed20346 | 2004-06-16 11:19:22 +0000 | [diff] [blame] | 533 | [count] is omitted one is used. ":0verbose" can be |
| 534 | used to set 'verbose' to zero. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 535 | The additional use of ":silent" makes messages |
| 536 | generated but not displayed. |
| 537 | The combination of ":silent" and ":verbose" can be |
| 538 | used to generate messages and check them with |
| 539 | |v:statusmsg| and friends. For example: > |
| 540 | :let v:statusmsg = "" |
| 541 | :silent verbose runtime foobar.vim |
| 542 | :if v:statusmsg != "" |
| 543 | : " foobar.vim could not be found |
| 544 | :endif |
| 545 | < When concatenating another command, the ":verbose" |
| 546 | only applies to the first one: > |
| 547 | :4verbose set verbose | set verbose |
| 548 | < verbose=4 ~ |
| 549 | verbose=0 ~ |
Bram Moolenaar | 54ee775 | 2005-05-31 22:22:17 +0000 | [diff] [blame] | 550 | For logging verbose messages in a file use the |
| 551 | 'verbosefile' option. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 552 | |
Bram Moolenaar | 8aff23a | 2005-08-19 20:40:30 +0000 | [diff] [blame] | 553 | *:verbose-cmd* |
| 554 | When 'verbose' is non-zero, listing the value of a Vim option or a key map or |
Bram Moolenaar | e344bea | 2005-09-01 20:46:49 +0000 | [diff] [blame] | 555 | an abbreviation or a user-defined function or a command or a highlight group |
| 556 | or an autocommand will also display where it was last defined. If it was |
| 557 | defined manually then there will be no "Last set" message. When it was |
| 558 | defined while executing a function, user command or autocommand, the script in |
| 559 | which it was defined is reported. |
Bram Moolenaar | db84e45 | 2010-08-15 13:50:43 +0200 | [diff] [blame] | 560 | {not available when compiled without the |+eval| feature} |
Bram Moolenaar | 8aff23a | 2005-08-19 20:40:30 +0000 | [diff] [blame] | 561 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 562 | *K* |
| 563 | K Run a program to lookup the keyword under the |
| 564 | cursor. The name of the program is given with the |
| 565 | 'keywordprg' (kp) option (default is "man"). The |
| 566 | keyword is formed of letters, numbers and the |
| 567 | characters in 'iskeyword'. The keyword under or |
| 568 | right of the cursor is used. The same can be done |
| 569 | with the command > |
| 570 | :!{program} {keyword} |
| 571 | < There is an example of a program to use in the tools |
| 572 | directory of Vim. It is called 'ref' and does a |
| 573 | simple spelling check. |
| 574 | Special cases: |
| 575 | - If 'keywordprg' is empty, the ":help" command is |
| 576 | used. It's a good idea to include more characters |
| 577 | in 'iskeyword' then, to be able to find more help. |
| 578 | - When 'keywordprg' is equal to "man", a count before |
| 579 | "K" is inserted after the "man" command and before |
| 580 | the keyword. For example, using "2K" while the |
| 581 | cursor is on "mkdir", results in: > |
| 582 | !man 2 mkdir |
| 583 | < - When 'keywordprg' is equal to "man -s", a count |
| 584 | before "K" is inserted after the "-s". If there is |
| 585 | no count, the "-s" is removed. |
| 586 | {not in Vi} |
| 587 | |
| 588 | *v_K* |
| 589 | {Visual}K Like "K", but use the visually highlighted text for |
| 590 | the keyword. Only works when the highlighted text is |
| 591 | not more than one line. {not in Vi} |
| 592 | |
| 593 | [N]gs *gs* *:sl* *:sleep* |
| 594 | :[N]sl[eep] [N] [m] Do nothing for [N] seconds. When [m] is included, |
Bram Moolenaar | 13fcaaf | 2005-04-15 21:13:42 +0000 | [diff] [blame] | 595 | sleep for [N] milliseconds. The count for "gs" always |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 596 | uses seconds. The default is one second. > |
| 597 | :sleep "sleep for one second |
| 598 | :5sleep "sleep for five seconds |
| 599 | :sleep 100m "sleep for a hundred milliseconds |
| 600 | 10gs "sleep for ten seconds |
| 601 | < Can be interrupted with CTRL-C (CTRL-Break on MS-DOS). |
Bram Moolenaar | 677ee68 | 2005-01-27 14:41:15 +0000 | [diff] [blame] | 602 | "gs" stands for "goto sleep". |
| 603 | While sleeping the cursor is positioned in the text, |
| 604 | if at a visible position. {not in Vi} |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 605 | |
| 606 | *g_CTRL-A* |
| 607 | g CTRL-A Only when Vim was compiled with MEM_PROFILING defined |
| 608 | (which is very rare): print memory usage statistics. |
| 609 | Only useful for debugging Vim. |
| 610 | |
| 611 | ============================================================================== |
Bram Moolenaar | 24ea3ba | 2010-09-19 19:01:21 +0200 | [diff] [blame] | 612 | 2. Using Vim like less or more *less* |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 613 | |
| 614 | If you use the less or more program to view a file, you don't get syntax |
| 615 | highlighting. Thus you would like to use Vim instead. You can do this by |
| 616 | using the shell script "$VIMRUNTIME/macros/less.sh". |
| 617 | |
| 618 | This shell script uses the Vim script "$VIMRUNTIME/macros/less.vim". It sets |
| 619 | up mappings to simulate the commands that less supports. Otherwise, you can |
| 620 | still use the Vim commands. |
| 621 | |
| 622 | This isn't perfect. For example, when viewing a short file Vim will still use |
| 623 | the whole screen. But it works good enough for most uses, and you get syntax |
| 624 | highlighting. |
| 625 | |
| 626 | The "h" key will give you a short overview of the available commands. |
| 627 | |
| 628 | vim:tw=78:ts=8:ft=help:norl: |