Hirohito Higashi | 73b9650 | 2025-06-28 18:18:21 +0200 | [diff] [blame] | 1 | *various.txt* For Vim version 9.1. Last change: 2025 Jun 28 |
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. |
Shane Harper | c1b3984 | 2024-07-17 19:40:40 +0200 | [diff] [blame] | 22 | It can be used to redraw the screen in a script |
| 23 | or function (or a mapping if |'lazyredraw'| is set). |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 24 | |
| 25 | *:redraws* *:redrawstatus* |
| 26 | :redraws[tatus][!] Redraw the status line of the current window. When ! |
| 27 | is included all status lines are redrawn. |
| 28 | Useful to update the status line(s) when 'statusline' |
| 29 | includes an item that doesn't cause automatic |
| 30 | updating. |
Bram Moolenaar | 9fbdbb8 | 2022-09-27 17:30:34 +0100 | [diff] [blame] | 31 | If the command line is being edited the redraw is |
| 32 | postponed until later. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 33 | |
Bram Moolenaar | e12bab3 | 2019-01-08 22:02:56 +0100 | [diff] [blame] | 34 | *:redrawt* *:redrawtabline* |
| 35 | :redrawt[abline] Redraw the tabline. Useful to update the tabline when |
| 36 | 'tabline' includes an item that doesn't trigger |
| 37 | automatic updating. |
| 38 | |
Naruhiko Nishino | be5bd4d | 2025-05-14 21:20:28 +0200 | [diff] [blame] | 39 | *E1547* *:redrawtabp* *:redrawtabpanel* |
Christian Brabandt | ba19b65 | 2025-05-15 20:16:04 +0200 | [diff] [blame] | 40 | :redrawtabp[anel] Redraw the tabpanel Useful to update the tabpanel |
Naruhiko Nishino | be5bd4d | 2025-05-14 21:20:28 +0200 | [diff] [blame] | 41 | when 'tabpanel' includes an item that doesn't trigger |
| 42 | automatic updating. |
| 43 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 44 | *N<Del>* |
| 45 | <Del> When entering a number: Remove the last digit. |
| 46 | Note: if you like to use <BS> for this, add this |
| 47 | mapping to your .vimrc: > |
| 48 | :map CTRL-V <BS> CTRL-V <Del> |
| 49 | < See |:fixdel| if your <Del> key does not do what you |
| 50 | want. |
| 51 | |
| 52 | :as[cii] or *ga* *:as* *:ascii* |
| 53 | ga Print the ascii value of the character under the |
Bram Moolenaar | 5f73ef8 | 2018-02-27 21:09:30 +0100 | [diff] [blame] | 54 | cursor in decimal, hexadecimal and octal. |
| 55 | Mnemonic: Get Ascii value. |
| 56 | |
| 57 | For example, when the cursor is on a 'R': |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 58 | <R> 82, Hex 52, Octal 122 ~ |
| 59 | When the character is a non-standard ASCII character, |
| 60 | but printable according to the 'isprint' option, the |
Bram Moolenaar | 5f73ef8 | 2018-02-27 21:09:30 +0100 | [diff] [blame] | 61 | non-printable version is also given. |
Bram Moolenaar | 664f3cf | 2019-12-07 16:03:51 +0100 | [diff] [blame] | 62 | |
Bram Moolenaar | 5f73ef8 | 2018-02-27 21:09:30 +0100 | [diff] [blame] | 63 | When the character is larger than 127, the <M-x> form |
| 64 | is also printed. For example: |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 65 | <~A> <M-^A> 129, Hex 81, Octal 201 ~ |
| 66 | <p> <|~> <M-~> 254, Hex fe, Octal 376 ~ |
| 67 | (where <p> is a special character) |
Bram Moolenaar | 5f73ef8 | 2018-02-27 21:09:30 +0100 | [diff] [blame] | 68 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 69 | The <Nul> character in a file is stored internally as |
| 70 | <NL>, but it will be shown as: |
| 71 | <^@> 0, Hex 00, Octal 000 ~ |
Bram Moolenaar | 5f73ef8 | 2018-02-27 21:09:30 +0100 | [diff] [blame] | 72 | |
Bram Moolenaar | 362e1a3 | 2006-03-06 23:29:24 +0000 | [diff] [blame] | 73 | If the character has composing characters these are |
| 74 | also shown. The value of 'maxcombine' doesn't matter. |
Bram Moolenaar | 5f73ef8 | 2018-02-27 21:09:30 +0100 | [diff] [blame] | 75 | |
| 76 | If the character can be inserted as a digraph, also |
| 77 | output the two characters that can be used to create |
| 78 | the character: |
Milly | 89872f5 | 2024-10-05 17:16:18 +0200 | [diff] [blame] | 79 | <ö> 246, Hex 00f6, Oct 366, Digr o: ~ |
Bram Moolenaar | 5f73ef8 | 2018-02-27 21:09:30 +0100 | [diff] [blame] | 80 | This shows you can type CTRL-K o : to insert ö. |
| 81 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 82 | *g8* |
| 83 | g8 Print the hex values of the bytes used in the |
| 84 | character under the cursor, assuming it is in |UTF-8| |
Bram Moolenaar | 362e1a3 | 2006-03-06 23:29:24 +0000 | [diff] [blame] | 85 | encoding. This also shows composing characters. The |
| 86 | value of 'maxcombine' doesn't matter. |
| 87 | Example of a character with two composing characters: |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 88 | e0 b8 81 + e0 b8 b9 + e0 b9 89 ~ |
Bram Moolenaar | ca003e1 | 2006-03-17 23:19:38 +0000 | [diff] [blame] | 89 | |
| 90 | *8g8* |
| 91 | 8g8 Find an illegal UTF-8 byte sequence at or after the |
| 92 | cursor. This works in two situations: |
| 93 | 1. when 'encoding' is any 8-bit encoding |
| 94 | 2. when 'encoding' is "utf-8" and 'fileencoding' is |
| 95 | any 8-bit encoding |
| 96 | Thus it can be used when editing a file that was |
| 97 | supposed to be UTF-8 but was read as if it is an 8-bit |
| 98 | encoding because it contains illegal bytes. |
| 99 | Does not wrap around the end of the file. |
| 100 | Note that when the cursor is on an illegal byte or the |
Bram Moolenaar | 207f009 | 2020-08-30 17:20:20 +0200 | [diff] [blame] | 101 | cursor is halfway a multibyte character the command |
Bram Moolenaar | ca003e1 | 2006-03-17 23:19:38 +0000 | [diff] [blame] | 102 | won't move the cursor. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 103 | |
Bram Moolenaar | 551dbcc | 2006-04-25 22:13:59 +0000 | [diff] [blame] | 104 | *:p* *:pr* *:print* *E749* |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 105 | :[range]p[rint] [flags] |
D. Ben Knoble | 187df69 | 2025-04-21 10:19:51 +0200 | [diff] [blame] | 106 | Print [range] lines (default current line). Can also |
| 107 | be spelled `:[range]|` due to Vi compatibility (see |
| 108 | |:bar|). Gives an error in an empty buffer. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 109 | Note: If you are looking for a way to print your text |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 110 | on paper see |:hardcopy|. In the GUI you can use the |
| 111 | File.Print menu entry. |
| 112 | See |ex-flags| for [flags]. |
Bram Moolenaar | 818078d | 2016-08-27 21:58:42 +0200 | [diff] [blame] | 113 | The |:filter| command can be used to only show lines |
| 114 | matching a pattern. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 115 | |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 116 | :[range]p[rint] {count} [flags] |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 117 | Print {count} lines, starting with [range] (default |
| 118 | current line |cmdline-ranges|). |
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 | *:P* *:Print* |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 122 | :[range]P[rint] [count] [flags] |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 123 | Just as ":print". Was apparently added to Vi for |
| 124 | people that keep the shift key pressed too long... |
Bram Moolenaar | 1588bc8 | 2022-03-08 21:35:07 +0000 | [diff] [blame] | 125 | This command is not supported in |Vim9| script. |
Bram Moolenaar | 166af9b | 2010-11-16 20:34:40 +0100 | [diff] [blame] | 126 | Note: A user command can overrule this command. |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 127 | See |ex-flags| for [flags]. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 128 | |
| 129 | *:l* *:list* |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 130 | :[range]l[ist] [count] [flags] |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 131 | Same as :print, but display unprintable characters |
Bram Moolenaar | f9d5ca1 | 2010-08-01 16:13:51 +0200 | [diff] [blame] | 132 | with '^' and put $ after the line. This can be |
Bram Moolenaar | d58e929 | 2011-02-09 17:07:58 +0100 | [diff] [blame] | 133 | further changed with the 'listchars' option. |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 134 | See |ex-flags| for [flags]. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 135 | |
| 136 | *:nu* *:number* |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 137 | :[range]nu[mber] [count] [flags] |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 138 | Same as :print, but precede each line with its line |
Bram Moolenaar | faa959a | 2006-02-20 21:37:40 +0000 | [diff] [blame] | 139 | number. (See also 'highlight' and 'numberwidth' |
| 140 | option). |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 141 | See |ex-flags| for [flags]. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 142 | |
| 143 | *:#* |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 144 | :[range]# [count] [flags] |
| 145 | synonym for :number. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 146 | |
Christian Brabandt | f4bc59c | 2024-06-15 15:52:53 +0200 | [diff] [blame] | 147 | *:#!* *vim-shebang* |
Bram Moolenaar | c81e5e7 | 2007-05-05 18:24:42 +0000 | [diff] [blame] | 148 | :#!{anything} Ignored, so that you can start a Vim script with: > |
Bram Moolenaar | 8c8de83 | 2008-06-24 22:58:06 +0000 | [diff] [blame] | 149 | #!vim -S |
Christian Brabandt | ca47114 | 2024-06-17 13:06:34 +0200 | [diff] [blame] | 150 | let mylogbook='$HOME/logbook.md' |
| 151 | exe $':e {mylogbook}' |
| 152 | $ |
| 153 | put ='## ' .. strftime('%d. %b %Y') |
| 154 | norm! o |
Bram Moolenaar | c81e5e7 | 2007-05-05 18:24:42 +0000 | [diff] [blame] | 155 | < |
Christian Brabandt | ca47114 | 2024-06-17 13:06:34 +0200 | [diff] [blame] | 156 | Make that script executable and run it to create a |
| 157 | new diary entry. |
| 158 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 159 | *:z* *E144* |
Bram Moolenaar | 4466ad6 | 2020-11-21 13:16:30 +0100 | [diff] [blame] | 160 | :[range]z[+-^.=][count] Display several lines of text surrounding the line |
| 161 | specified with [range], or around the current line |
| 162 | if there is no [range]. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 163 | |
Bram Moolenaar | 4466ad6 | 2020-11-21 13:16:30 +0100 | [diff] [blame] | 164 | If there is a [count], that's how many lines you'll |
| 165 | see; if there is no [count] and only one window then |
| 166 | twice the value of the 'scroll' option is used, |
| 167 | otherwise the current window height minus 3 is used. |
| 168 | This is the value of "scr" in the table below. |
| 169 | |
| 170 | If there is a [count] the 'window' option is set to |
Bram Moolenaar | b6b046b | 2011-12-30 13:11:27 +0100 | [diff] [blame] | 171 | its value. |
| 172 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 173 | :z can be used either alone or followed by any of |
Bram Moolenaar | 207f009 | 2020-08-30 17:20:20 +0200 | [diff] [blame] | 174 | several marks. These have the following effect: |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 175 | |
Bram Moolenaar | 662db67 | 2011-03-22 14:05:35 +0100 | [diff] [blame] | 176 | mark first line last line new cursor line ~ |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 177 | ---- ---------- --------- ------------ |
| 178 | + current line 1 scr forward 1 scr forward |
| 179 | - 1 scr back current line current line |
| 180 | ^ 2 scr back 1 scr back 1 scr back |
Bram Moolenaar | 2a8d1f8 | 2005-02-05 21:43:56 +0000 | [diff] [blame] | 181 | . 1/2 scr back 1/2 scr fwd 1/2 scr fwd |
| 182 | = 1/2 scr back 1/2 scr fwd current line |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 183 | |
| 184 | Specifying no mark at all is the same as "+". |
| 185 | If the mark is "=", a line of dashes is printed |
| 186 | around the current line. |
| 187 | |
Bram Moolenaar | 6c391a7 | 2021-09-09 21:55:11 +0200 | [diff] [blame] | 188 | *:z!* |
Dominique Pelle | 7f2dd1e | 2021-09-04 13:44:01 +0200 | [diff] [blame] | 189 | :[range]z![+-^.=][count] |
Bram Moolenaar | 2286304 | 2021-10-16 15:23:36 +0100 | [diff] [blame] | 190 | Like ":z", but when [count] is not specified, it |
Dominique Pelle | 7f2dd1e | 2021-09-04 13:44:01 +0200 | [diff] [blame] | 191 | defaults to the Vim window height minus one. |
| 192 | |
| 193 | :[range]z[!]#[+-^.=][count] *:z#* |
| 194 | Like ":z" or ":z!", but number the lines. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 195 | |
| 196 | *:=* |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 197 | := [flags] Print the last line number. |
| 198 | See |ex-flags| for [flags]. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 199 | |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 200 | :{range}= [flags] Prints the last line number in {range}. For example, |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 201 | this prints the current line number: > |
| 202 | :.= |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 203 | < See |ex-flags| for [flags]. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 204 | |
| 205 | :norm[al][!] {commands} *:norm* *:normal* |
| 206 | Execute Normal mode commands {commands}. This makes |
| 207 | it possible to execute Normal mode commands typed on |
Bram Moolenaar | 4a74803 | 2010-09-30 21:47:56 +0200 | [diff] [blame] | 208 | the command-line. {commands} are executed like they |
| 209 | are typed. For undo all commands are undone together. |
Bram Moolenaar | c81e5e7 | 2007-05-05 18:24:42 +0000 | [diff] [blame] | 210 | Execution stops when an error is encountered. |
Bram Moolenaar | a3e6bc9 | 2013-01-30 14:18:00 +0100 | [diff] [blame] | 211 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 212 | If the [!] is given, mappings will not be used. |
Bram Moolenaar | a3e6bc9 | 2013-01-30 14:18:00 +0100 | [diff] [blame] | 213 | Without it, when this command is called from a |
| 214 | non-remappable mapping (|:noremap|), the argument can |
| 215 | be mapped anyway. |
| 216 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 217 | {commands} should be a complete command. If |
| 218 | {commands} does not finish a command, the last one |
| 219 | will be aborted as if <Esc> or <C-C> was typed. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 220 | This implies that an insert command must be completed |
| 221 | (to start Insert mode, see |:startinsert|). A ":" |
Bram Moolenaar | 7c62692 | 2005-02-07 22:01:03 +0000 | [diff] [blame] | 222 | command must be completed as well. And you can't use |
| 223 | "Q" or "gQ" to start Ex mode. |
Bram Moolenaar | a3e6bc9 | 2013-01-30 14:18:00 +0100 | [diff] [blame] | 224 | |
| 225 | The display is not updated while ":normal" is busy. |
| 226 | |
Bram Moolenaar | 8f3f58f | 2010-01-06 20:52:26 +0100 | [diff] [blame] | 227 | {commands} cannot start with a space. Put a count of |
| 228 | 1 (one) before it, "1 " is one space. |
Bram Moolenaar | a3e6bc9 | 2013-01-30 14:18:00 +0100 | [diff] [blame] | 229 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 230 | The 'insertmode' option is ignored for {commands}. |
Bram Moolenaar | a3e6bc9 | 2013-01-30 14:18:00 +0100 | [diff] [blame] | 231 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 232 | This command cannot be followed by another command, |
| 233 | since any '|' is considered part of the command. |
Bram Moolenaar | a3e6bc9 | 2013-01-30 14:18:00 +0100 | [diff] [blame] | 234 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 235 | This command can be used recursively, but the depth is |
| 236 | limited by 'maxmapdepth'. |
Bram Moolenaar | a3e6bc9 | 2013-01-30 14:18:00 +0100 | [diff] [blame] | 237 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 238 | An alternative is to use |:execute|, which uses an |
| 239 | expression as argument. This allows the use of |
Bram Moolenaar | 46f9d49 | 2010-06-12 20:18:19 +0200 | [diff] [blame] | 240 | printable characters to represent special characters. |
Bram Moolenaar | a3e6bc9 | 2013-01-30 14:18:00 +0100 | [diff] [blame] | 241 | |
Bram Moolenaar | 46f9d49 | 2010-06-12 20:18:19 +0200 | [diff] [blame] | 242 | Example: > |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 243 | :exe "normal \<c-w>\<c-w>" |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 244 | |
| 245 | :{range}norm[al][!] {commands} *:normal-range* |
| 246 | Execute Normal mode commands {commands} for each line |
| 247 | in the {range}. Before executing the {commands}, the |
| 248 | cursor is positioned in the first column of the range, |
| 249 | for each line. Otherwise it's the same as the |
| 250 | ":normal" command without a range. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 251 | |
| 252 | *:sh* *:shell* *E371* |
| 253 | :sh[ell] This command starts a shell. When the shell exits |
| 254 | (after the "exit" command) you return to Vim. The |
| 255 | name for the shell command comes from 'shell' option. |
| 256 | *E360* |
| 257 | Note: This doesn't work when Vim on the Amiga was |
| 258 | started in QuickFix mode from a compiler, because the |
| 259 | compiler will have set stdin to a non-interactive |
| 260 | mode. |
| 261 | |
Bram Moolenaar | 2f0936c | 2022-01-08 21:51:59 +0000 | [diff] [blame] | 262 | *:!cmd* *:!* |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 263 | :!{cmd} Execute {cmd} with the shell. See also the 'shell' |
Christian Brabandt | f18987c | 2024-11-12 21:38:22 +0100 | [diff] [blame] | 264 | and 'shelltype' option. For the filter command, see |
| 265 | |:range!|. |
matveyt | a01148d | 2024-11-23 14:19:58 +0100 | [diff] [blame] | 266 | |
| 267 | Vim builds command line using options 'shell', 'shcf', |
| 268 | 'sxq' and 'shq' in the following order: |
| 269 | `&sh &shcf &sxq &shq {cmd} &shq &sxq` |
| 270 | So setting both 'sxq' and 'shq' is possible but rarely |
| 271 | useful. Additional escaping inside `{cmd}` may also |
| 272 | be due to 'sxe' option. |
| 273 | |
| 274 | Also, all |cmdline-special| characters in {cmd} are |
| 275 | replaced by Vim before passing them to shell. |
| 276 | |
Bram Moolenaar | 2f0936c | 2022-01-08 21:51:59 +0000 | [diff] [blame] | 277 | *E34* |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 278 | Any '!' in {cmd} is replaced with the previous |
| 279 | external command (see also 'cpoptions'). But not when |
| 280 | there is a backslash before the '!', then that |
| 281 | backslash is removed. Example: ":!ls" followed by |
| 282 | ":!echo ! \! \\!" executes "echo ls ! \!". |
Bram Moolenaar | 7e38ea2 | 2014-04-05 22:55:53 +0200 | [diff] [blame] | 283 | |
Bram Moolenaar | 8c8de83 | 2008-06-24 22:58:06 +0000 | [diff] [blame] | 284 | A '|' in {cmd} is passed to the shell, you cannot use |
| 285 | it to append a Vim command. See |:bar|. |
Bram Moolenaar | 7e38ea2 | 2014-04-05 22:55:53 +0200 | [diff] [blame] | 286 | |
| 287 | If {cmd} contains "%" it is expanded to the current |
Bram Moolenaar | acc2240 | 2020-06-07 21:07:18 +0200 | [diff] [blame] | 288 | file name, "#" is expanded to the alternate file name. |
| 289 | Special characters in the file name are not escaped, |
| 290 | use quotes to avoid their special meaning: > |
Bram Moolenaar | 7e38ea2 | 2014-04-05 22:55:53 +0200 | [diff] [blame] | 291 | :!ls "%" |
Bram Moolenaar | acc2240 | 2020-06-07 21:07:18 +0200 | [diff] [blame] | 292 | < If the file name contains a "$" then single quotes |
| 293 | might work better, but this only works if the file |
| 294 | name does not contain a single quote: > |
Bram Moolenaar | 7e38ea2 | 2014-04-05 22:55:53 +0200 | [diff] [blame] | 295 | :!ls '%' |
| 296 | < This should always work, but it's more typing: > |
Bram Moolenaar | c51cf03 | 2022-02-26 12:25:45 +0000 | [diff] [blame] | 297 | :exe "!ls " .. shellescape(expand("%")) |
Bram Moolenaar | acc2240 | 2020-06-07 21:07:18 +0200 | [diff] [blame] | 298 | < To get a literal "%" or "#" prepend it with a |
| 299 | backslash. For example, to list all files starting |
| 300 | with "%": > |
| 301 | :!ls \%* |
Bram Moolenaar | 7e38ea2 | 2014-04-05 22:55:53 +0200 | [diff] [blame] | 302 | < |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 303 | A newline character ends {cmd}, what follows is |
| 304 | interpreted as a following ":" command. However, if |
| 305 | there is a backslash before the newline it is removed |
| 306 | and {cmd} continues. It doesn't matter how many |
| 307 | backslashes are before the newline, only one is |
| 308 | removed. |
Bram Moolenaar | 7e38ea2 | 2014-04-05 22:55:53 +0200 | [diff] [blame] | 309 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 310 | On Unix the command normally runs in a non-interactive |
| 311 | shell. If you want an interactive shell to be used |
| 312 | (to use aliases) set 'shellcmdflag' to "-ic". |
| 313 | For Win32 also see |:!start|. |
Bram Moolenaar | 7e38ea2 | 2014-04-05 22:55:53 +0200 | [diff] [blame] | 314 | |
Bram Moolenaar | e968e36 | 2014-05-13 20:23:24 +0200 | [diff] [blame] | 315 | After the command has been executed, the timestamp and |
| 316 | size of the current file is checked |timestamp|. |
Bram Moolenaar | 7e38ea2 | 2014-04-05 22:55:53 +0200 | [diff] [blame] | 317 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 318 | Vim redraws the screen after the command is finished, |
| 319 | because it may have printed any text. This requires a |
| 320 | hit-enter prompt, so that you can read any messages. |
| 321 | To avoid this use: > |
| 322 | :silent !{cmd} |
| 323 | < The screen is not redrawn then, thus you have to use |
| 324 | CTRL-L or ":redraw!" if the command did display |
Bram Moolenaar | 76db9e0 | 2022-11-09 21:21:04 +0000 | [diff] [blame] | 325 | something. However, this depends on what the |t_ti| |
| 326 | and |t_te| termcap entries are set to. |
matveyt | a01148d | 2024-11-23 14:19:58 +0100 | [diff] [blame] | 327 | |
| 328 | Hint: use |:terminal| command if you want to run {cmd} |
| 329 | in Vim window. `:term ++shell ++close {cmd}` could |
| 330 | serve as close approximation to what `:!{cmd}` does. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 331 | |
| 332 | *:!!* |
| 333 | :!! Repeat last ":!{cmd}". |
| 334 | |
Bram Moolenaar | 61da1bf | 2019-06-06 12:14:49 +0200 | [diff] [blame] | 335 | *:ve* *:ver* *:version* |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 336 | :ve[rsion] Print the version number of the editor. If the |
| 337 | compiler used understands "__DATE__" the compilation |
| 338 | date is mentioned. Otherwise a fixed release-date is |
| 339 | shown. |
| 340 | The following lines contain information about which |
| 341 | features were enabled when Vim was compiled. When |
| 342 | there is a preceding '+', the feature is included, |
| 343 | when there is a '-' it is excluded. To change this, |
| 344 | you have to edit feature.h and recompile Vim. |
| 345 | To check for this in an expression, see |has()|. |
| 346 | Here is an overview of the features. |
| 347 | The first column shows the smallest version in which |
| 348 | they are included: |
Bram Moolenaar | b5b7562 | 2018-03-09 22:22:21 +0100 | [diff] [blame] | 349 | T tiny (always) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 350 | N normal |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 351 | H huge |
| 352 | m manually enabled or depends on other features |
Bram Moolenaar | 4ceaa3a | 2019-12-03 22:49:09 +0100 | [diff] [blame] | 353 | - never, feature was removed |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 354 | (none) system dependent |
| 355 | Thus if a feature is marked with "N", it is included |
RestorerZ | ac9c6d5 | 2023-10-05 22:25:12 +0200 | [diff] [blame] | 356 | in the normal and huge versions of Vim. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 357 | |
| 358 | *+feature-list* |
Bram Moolenaar | 7cba6c0 | 2013-09-05 22:13:31 +0200 | [diff] [blame] | 359 | *+acl* |ACL| support included |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 360 | *+ARP* Amiga only: ARP support included |
Martin Tournoij | 25f3a14 | 2022-10-08 19:26:41 +0100 | [diff] [blame] | 361 | H *+arabic* |Arabic| language support |
| 362 | N *+autochdir* support 'autochdir' option |
Bram Moolenaar | fd99945 | 2022-08-24 18:30:14 +0100 | [diff] [blame] | 363 | T *+autocmd* |:autocmd|, automatic commands. Always enabled since |
| 364 | 8.0.1564 |
Bram Moolenaar | e42a6d2 | 2017-11-12 19:21:51 +0100 | [diff] [blame] | 365 | H *+autoservername* Automatically enable |clientserver| |
Bram Moolenaar | a2a8016 | 2017-11-21 23:09:50 +0100 | [diff] [blame] | 366 | m *+balloon_eval* |balloon-eval| support in the GUI. Included when |
| 367 | compiling with supported GUI (Motif, GTK, GUI) and |
| 368 | either Netbeans/Sun Workshop integration or |+eval| |
| 369 | feature. |
| 370 | H *+balloon_eval_term* |balloon-eval| support in the terminal, |
| 371 | 'balloonevalterm' |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 372 | N *+browse* |:browse| command |
Bram Moolenaar | 2ee347f | 2022-08-26 17:53:44 +0100 | [diff] [blame] | 373 | T *++builtin_terms* maximal terminals builtin |builtin-terms| Always |
| 374 | enabled since 9.0.0280 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 375 | N *+byte_offset* support for 'o' flag in 'statusline' option, "go" |
| 376 | and ":goto" commands. |
Bram Moolenaar | 298b440 | 2016-01-28 22:38:53 +0100 | [diff] [blame] | 377 | m *+channel* inter process communication |channel| |
Martin Tournoij | 7904fa4 | 2022-10-04 16:28:45 +0100 | [diff] [blame] | 378 | T *+cindent* |'cindent'|, C indenting; Always enabled |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 379 | N *+clientserver* Unix and Win32: Remote invocation |clientserver| |
Bram Moolenaar | 56c860c | 2019-08-17 20:09:31 +0200 | [diff] [blame] | 380 | *+clipboard* |clipboard| support compiled-in |
| 381 | *+clipboard_working* |clipboard| support compiled-in and working |
Bram Moolenaar | 06fe74a | 2019-08-31 16:20:32 +0200 | [diff] [blame] | 382 | T *+cmdline_compl* command line completion |cmdline-completion| |
Bram Moolenaar | 8538867 | 2021-01-31 17:03:52 +0100 | [diff] [blame] | 383 | T *+cmdline_hist* command line history |cmdline-history| |
Martin Tournoij | ba43e76 | 2022-10-13 22:12:15 +0100 | [diff] [blame] | 384 | T *+cmdline_info* |'showcmd'| and |'ruler'|; Always enabled since |
| 385 | 9.0.0747 |
Martin Tournoij | 7904fa4 | 2022-10-04 16:28:45 +0100 | [diff] [blame] | 386 | T *+cmdwin* |cmdline-window| support; Always enabled since 9.0.0657 |
Bram Moolenaar | 8c96af9 | 2019-09-28 19:05:57 +0200 | [diff] [blame] | 387 | T *+comments* |'comments'| support |
Martin Tournoij | 25f3a14 | 2022-10-08 19:26:41 +0100 | [diff] [blame] | 388 | N *+conceal* "conceal" support, see |conceal| |:syn-conceal| etc. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 389 | N *+cryptv* encryption support |encryption| |
Martin Tournoij | 25f3a14 | 2022-10-08 19:26:41 +0100 | [diff] [blame] | 390 | H *+cscope* |cscope| support |
Bram Moolenaar | b5b7562 | 2018-03-09 22:22:21 +0100 | [diff] [blame] | 391 | T *+cursorbind* |'cursorbind'| support |
Bram Moolenaar | ac6e65f | 2005-08-29 22:25:38 +0000 | [diff] [blame] | 392 | m *+cursorshape* |termcap-cursor-shape| support |
| 393 | m *+debug* Compiled for debugging. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 394 | N *+dialog_gui* Support for |:confirm| with GUI dialog. |
| 395 | N *+dialog_con* Support for |:confirm| with console dialog. |
| 396 | N *+dialog_con_gui* Support for |:confirm| with GUI and console dialog. |
| 397 | N *+diff* |vimdiff| and 'diff' |
| 398 | N *+digraphs* |digraphs| *E196* |
Bram Moolenaar | 43cb626 | 2018-03-14 21:39:02 +0100 | [diff] [blame] | 399 | *+directx* Win32 GUI only: DirectX and |'renderoptions'| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 400 | *+dnd* Support for DnD into the "~ register |quote_~|. |
Martin Tournoij | 25f3a14 | 2022-10-08 19:26:41 +0100 | [diff] [blame] | 401 | H *+emacs_tags* |emacs-tags| files |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 402 | N *+eval* expression evaluation |eval.txt| |
Bram Moolenaar | 4700398 | 2021-12-05 21:54:04 +0000 | [diff] [blame] | 403 | T *+ex_extra* always on now, used to be for Vim's extra Ex commands |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 404 | N *+extra_search* |'hlsearch'| and |'incsearch'| options. |
Bram Moolenaar | 4ceaa3a | 2019-12-03 22:49:09 +0100 | [diff] [blame] | 405 | - *+farsi* Removed: |farsi| language |
Bram Moolenaar | 7dd5432 | 2022-08-26 18:01:12 +0100 | [diff] [blame] | 406 | T *+file_in_path* |gf|, |CTRL-W_f| and |<cfile>| Always enabled since |
| 407 | 9.0.265 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 408 | N *+find_in_path* include file searches: |[I|, |:isearch|, |
| 409 | |CTRL-W_CTRL-I|, |:checkpath|, etc. |
| 410 | N *+folding* |folding| |
| 411 | *+footer* |gui-footer| |
| 412 | *+fork* Unix only: |fork| shell commands |
Bram Moolenaar | 73e28dc | 2022-09-17 21:08:33 +0100 | [diff] [blame] | 413 | T *+float* Floating point support Always enabled since 9.0.0491 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 414 | N *+gettext* message translations |multi-lang| |
Bram Moolenaar | cbaff5e | 2022-04-08 17:45:08 +0100 | [diff] [blame] | 415 | - *+GUI_Athena* Unix only: Athena |GUI| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 416 | *+GUI_neXtaw* Unix only: neXtaw |GUI| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 417 | *+GUI_GTK* Unix only: GTK+ |GUI| |
| 418 | *+GUI_Motif* Unix only: Motif |GUI| |
| 419 | *+GUI_Photon* QNX only: Photon |GUI| |
| 420 | m *+hangul_input* Hangul input support |hangul| |
Bram Moolenaar | a5792f5 | 2005-11-23 21:25:05 +0000 | [diff] [blame] | 421 | *+iconv* Compiled with the |iconv()| function |
| 422 | *+iconv/dyn* Likewise |iconv-dynamic| |/dyn| |
Bram Moolenaar | 06fe74a | 2019-08-31 16:20:32 +0200 | [diff] [blame] | 423 | T *+insert_expand* |insert_expand| Insert mode completion |
Bram Moolenaar | bfe13cc | 2020-04-12 17:53:12 +0200 | [diff] [blame] | 424 | m *+ipv6* Support for IPv6 networking |channel| |
Bram Moolenaar | 38a5563 | 2016-02-15 22:07:32 +0100 | [diff] [blame] | 425 | m *+job* starting and stopping jobs |job| |
Bram Moolenaar | 739f13a | 2021-12-13 13:12:53 +0000 | [diff] [blame] | 426 | T *+jumplist* |jumplist|; Always enabled since 8.2.3795 |
Martin Tournoij | 25f3a14 | 2022-10-08 19:26:41 +0100 | [diff] [blame] | 427 | H *+keymap* |'keymap'| |
Bram Moolenaar | bc8801c | 2016-08-02 21:04:33 +0200 | [diff] [blame] | 428 | N *+lambda* |lambda| and |closure| |
Martin Tournoij | 25f3a14 | 2022-10-08 19:26:41 +0100 | [diff] [blame] | 429 | H *+langmap* |'langmap'| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 430 | N *+libcall* |libcall()| |
| 431 | N *+linebreak* |'linebreak'|, |'breakat'| and |'showbreak'| |
Martin Tournoij | 25f3a14 | 2022-10-08 19:26:41 +0100 | [diff] [blame] | 432 | T *+lispindent* |'lisp'| |
Bram Moolenaar | 0c72fe4 | 2018-03-29 16:04:08 +0200 | [diff] [blame] | 433 | T *+listcmds* Vim commands for the list of buffers |buffer-hidden| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 434 | and argument list |:argdelete| |
Bram Moolenaar | 088e8e3 | 2019-08-08 22:15:18 +0200 | [diff] [blame] | 435 | T *+localmap* Support for mappings local to a buffer |:map-local| |
Bram Moolenaar | 0ba0429 | 2010-07-14 23:23:17 +0200 | [diff] [blame] | 436 | m *+lua* |Lua| interface |
| 437 | m *+lua/dyn* |Lua| interface |/dyn| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 438 | N *+menu* |:menu| |
| 439 | N *+mksession* |:mksession| |
Bram Moolenaar | 30e9b3c | 2019-09-07 16:24:12 +0200 | [diff] [blame] | 440 | T *+modify_fname* |filename-modifiers| |
Bram Moolenaar | 96f45c0 | 2019-10-26 19:53:45 +0200 | [diff] [blame] | 441 | T *+mouse* Mouse handling |mouse-using| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 442 | N *+mouseshape* |'mouseshape'| |
Martin Tournoij | 25f3a14 | 2022-10-08 19:26:41 +0100 | [diff] [blame] | 443 | N *+mouse_dec* Unix only: Dec terminal mouse handling |dec-mouse| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 444 | N *+mouse_gpm* Unix only: Linux console mouse handling |gpm-mouse| |
Bram Moolenaar | 8a3b805 | 2022-06-26 12:21:15 +0100 | [diff] [blame] | 445 | m *+mouse_gpm/dyn* Same as |+mouse_gpm| with optional library dependency |
| 446 | |/dyn| |
Bram Moolenaar | 1360030 | 2014-05-22 18:26:40 +0200 | [diff] [blame] | 447 | N *+mouse_jsbterm* JSB mouse handling |jsbterm-mouse| |
Martin Tournoij | 25f3a14 | 2022-10-08 19:26:41 +0100 | [diff] [blame] | 448 | N *+mouse_netterm* Unix only: netterm mouse handling |netterm-mouse| |
Bram Moolenaar | 34feacb | 2012-12-05 19:01:43 +0100 | [diff] [blame] | 449 | N *+mouse_pterm* QNX only: pterm mouse handling |qnx-terminal| |
Bram Moolenaar | 8c8de83 | 2008-06-24 22:58:06 +0000 | [diff] [blame] | 450 | N *+mouse_sysmouse* Unix only: *BSD console mouse handling |sysmouse| |
Martin Tournoij | 25f3a14 | 2022-10-08 19:26:41 +0100 | [diff] [blame] | 451 | N *+mouse_sgr* Unix only: sgr mouse handling |sgr-mouse| |
| 452 | N *+mouse_urxvt* Unix only: urxvt mouse handling |urxvt-mouse| |
Bram Moolenaar | 34feacb | 2012-12-05 19:01:43 +0100 | [diff] [blame] | 453 | N *+mouse_xterm* Unix only: xterm mouse handling |xterm-mouse| |
Bram Moolenaar | 98a29d0 | 2021-01-18 19:55:44 +0100 | [diff] [blame] | 454 | T *+multi_byte* Unicode support, 16 and 32 bit characters |multibyte| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 455 | *+multi_byte_ime* Win32 input method for multibyte chars |multibyte-ime| |
Bram Moolenaar | 34feacb | 2012-12-05 19:01:43 +0100 | [diff] [blame] | 456 | N *+multi_lang* non-English language support |multi-lang| |
Bram Moolenaar | 325b7a2 | 2004-07-05 15:58:32 +0000 | [diff] [blame] | 457 | m *+mzscheme* Mzscheme interface |mzscheme| |
Bram Moolenaar | 4770d09 | 2006-01-12 23:22:24 +0000 | [diff] [blame] | 458 | m *+mzscheme/dyn* Mzscheme interface |mzscheme-dynamic| |/dyn| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 459 | m *+netbeans_intg* |netbeans| |
Bram Moolenaar | 4700398 | 2021-12-05 21:54:04 +0000 | [diff] [blame] | 460 | T *+num64* 64-bit Number support |Number| |
Bram Moolenaar | a2baa73 | 2022-02-04 16:09:54 +0000 | [diff] [blame] | 461 | Always enabled since 8.2.0271, use v:numbersize to |
Bram Moolenaar | f9706e9 | 2020-02-22 14:27:04 +0100 | [diff] [blame] | 462 | check the actual size of a Number. |
Bram Moolenaar | 34feacb | 2012-12-05 19:01:43 +0100 | [diff] [blame] | 463 | m *+ole* Win32 GUI only: |ole-interface| |
Bram Moolenaar | 91c4937 | 2016-05-08 09:50:29 +0200 | [diff] [blame] | 464 | N *+packages* Loading |packages| |
Bram Moolenaar | 2bd9dbc | 2022-08-25 18:12:06 +0100 | [diff] [blame] | 465 | T *+path_extra* Up/downwards search in 'path' and 'tags' Always |
| 466 | enabled since 9.0.0270 |
Bram Moolenaar | a5792f5 | 2005-11-23 21:25:05 +0000 | [diff] [blame] | 467 | m *+perl* Perl interface |perl| |
| 468 | m *+perl/dyn* Perl interface |perl-dynamic| |/dyn| |
Bram Moolenaar | 7fc0c06 | 2010-08-10 21:43:35 +0200 | [diff] [blame] | 469 | N *+persistent_undo* Persistent undo |undo-persistence| |
Bram Moolenaar | 4ceaa3a | 2019-12-03 22:49:09 +0100 | [diff] [blame] | 470 | N *+popupwin* Popup windows |popup-window| |
Bram Moolenaar | 34feacb | 2012-12-05 19:01:43 +0100 | [diff] [blame] | 471 | *+postscript* |:hardcopy| writes a PostScript file |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 472 | N *+printer* |:hardcopy| command |
Bram Moolenaar | 19a09a1 | 2005-03-04 23:39:37 +0000 | [diff] [blame] | 473 | H *+profile* |:profile| command |
Bram Moolenaar | 60aad97 | 2010-07-21 20:36:22 +0200 | [diff] [blame] | 474 | m *+python* Python 2 interface |python| |
Bram Moolenaar | 34feacb | 2012-12-05 19:01:43 +0100 | [diff] [blame] | 475 | m *+python/dyn* Python 2 interface |python-dynamic| |/dyn| |
Bram Moolenaar | 60aad97 | 2010-07-21 20:36:22 +0200 | [diff] [blame] | 476 | m *+python3* Python 3 interface |python| |
Bram Moolenaar | 34feacb | 2012-12-05 19:01:43 +0100 | [diff] [blame] | 477 | m *+python3/dyn* Python 3 interface |python-dynamic| |/dyn| |
Yee Cheng Chin | c13b3d1 | 2023-08-20 21:18:38 +0200 | [diff] [blame] | 478 | m *+python3/dyn-stable* |
h_east | 5985879 | 2023-10-25 22:47:05 +0900 | [diff] [blame] | 479 | Python 3 interface |python-dynamic| |python-stable| |
| 480 | |/dyn| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 481 | N *+quickfix* |:make| and |quickfix| commands |
Bram Moolenaar | 8c8de83 | 2008-06-24 22:58:06 +0000 | [diff] [blame] | 482 | N *+reltime* |reltime()| function, 'hlsearch'/'incsearch' timeout, |
| 483 | 'redrawtime' option |
Martin Tournoij | 25f3a14 | 2022-10-08 19:26:41 +0100 | [diff] [blame] | 484 | H *+rightleft* Right to left typing |'rightleft'| |
Bram Moolenaar | a5792f5 | 2005-11-23 21:25:05 +0000 | [diff] [blame] | 485 | m *+ruby* Ruby interface |ruby| |
| 486 | m *+ruby/dyn* Ruby interface |ruby-dynamic| |/dyn| |
Bram Moolenaar | 98ef233 | 2018-03-18 14:44:37 +0100 | [diff] [blame] | 487 | T *+scrollbind* |'scrollbind'| |
Martin Tournoij | 25f3a14 | 2022-10-08 19:26:41 +0100 | [diff] [blame] | 488 | N *+signs* |:sign| |
| 489 | T *+smartindent* |'smartindent'| |
| 490 | H *+sodium* compiled with libsodium for better encryption support |
| 491 | H *+sound* |sound_playevent()|, |sound_playfile()| functions, etc. |
Bram Moolenaar | 12ee7ff | 2019-06-10 22:47:40 +0200 | [diff] [blame] | 492 | N *+spell* spell checking support, see |spell| |
Bram Moolenaar | 34feacb | 2012-12-05 19:01:43 +0100 | [diff] [blame] | 493 | N *+startuptime* |--startuptime| argument |
| 494 | N *+statusline* Options 'statusline', 'rulerformat' and special |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 495 | formats of 'titlestring' and 'iconstring' |
Bram Moolenaar | 4ceaa3a | 2019-12-03 22:49:09 +0100 | [diff] [blame] | 496 | - *+sun_workshop* Removed: |workshop| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 497 | N *+syntax* Syntax highlighting |syntax| |
| 498 | *+system()* Unix only: opposite of |+fork| |
Naruhiko Nishino | be5bd4d | 2025-05-14 21:20:28 +0200 | [diff] [blame] | 499 | H *+tabpanel* Support for |tabpanel| |
Bram Moolenaar | 64d8e25 | 2016-09-06 22:12:34 +0200 | [diff] [blame] | 500 | T *+tag_binary* binary searching in tags file |tag-binary-search| |
Bram Moolenaar | 4ceaa3a | 2019-12-03 22:49:09 +0100 | [diff] [blame] | 501 | - *+tag_old_static* Removed; method for static tags |tag-old-static| |
| 502 | - *+tag_any_white* Removed; was to allow any white space in tags files |
Bram Moolenaar | 34feacb | 2012-12-05 19:01:43 +0100 | [diff] [blame] | 503 | m *+tcl* Tcl interface |tcl| |
Bram Moolenaar | a5792f5 | 2005-11-23 21:25:05 +0000 | [diff] [blame] | 504 | m *+tcl/dyn* Tcl interface |tcl-dynamic| |/dyn| |
Bram Moolenaar | 1ccd8ff | 2017-08-11 19:50:37 +0200 | [diff] [blame] | 505 | m *+terminal* Support for terminal window |terminal| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 506 | *+terminfo* uses |terminfo| instead of termcap |
| 507 | N *+termresponse* support for |t_RV| and |v:termresponse| |
Martin Tournoij | 25f3a14 | 2022-10-08 19:26:41 +0100 | [diff] [blame] | 508 | N *+termguicolors* 24-bit color in xterm-compatible terminals support |
Bram Moolenaar | 8877487 | 2022-08-16 20:24:29 +0100 | [diff] [blame] | 509 | T *+textobjects* |text-objects| selection. Always enabled since 9.0.0222. |
Bram Moolenaar | 9d87a37 | 2018-12-18 21:41:50 +0100 | [diff] [blame] | 510 | N *+textprop* |text-properties| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 511 | *+tgetent* non-Unix only: able to use external termcap |
Bram Moolenaar | e18c0b3 | 2016-03-20 21:08:34 +0100 | [diff] [blame] | 512 | N *+timers* the |timer_start()| function |
Bram Moolenaar | 4700398 | 2021-12-05 21:54:04 +0000 | [diff] [blame] | 513 | T *+title* Setting the window 'title' and 'icon'; Always enabled |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 514 | N *+toolbar* |gui-toolbar| |
Bram Moolenaar | ac9fb18 | 2019-04-27 13:04:13 +0200 | [diff] [blame] | 515 | T *+user_commands* User-defined commands. |user-commands| |
| 516 | Always enabled since 8.1.1210. |
Damien Lejay | bfa1636 | 2025-06-10 21:12:31 +0200 | [diff] [blame] | 517 | H *+vartabs* Variable-width tab stops. |'vartabstop'| |
Bram Moolenaar | 4700398 | 2021-12-05 21:54:04 +0000 | [diff] [blame] | 518 | T *+vertsplit* Vertically split windows |:vsplit|; Always enabled |
Bram Moolenaar | 37c64c7 | 2017-09-19 22:06:03 +0200 | [diff] [blame] | 519 | since 8.0.1118. |
Bram Moolenaar | a6feb16 | 2022-01-02 12:06:33 +0000 | [diff] [blame] | 520 | T *+vim9script* |Vim9| script |
| 521 | N *+viminfo* |'viminfo'| |
Bram Moolenaar | 4700398 | 2021-12-05 21:54:04 +0000 | [diff] [blame] | 522 | T *+virtualedit* |'virtualedit'| Always enabled since 8.1.826. |
Bram Moolenaar | 870ba5f | 2019-01-11 14:37:20 +0100 | [diff] [blame] | 523 | T *+visual* Visual mode |Visual-mode| Always enabled since 7.4.200. |
| 524 | T *+visualextra* extra Visual mode commands |blockwise-operators| |
Bram Moolenaar | 1f0bfe5 | 2018-07-29 16:09:22 +0200 | [diff] [blame] | 525 | T *+vreplace* |gR| and |gr| |
Bram Moolenaar | 22f1d0e | 2018-02-27 14:53:30 +0100 | [diff] [blame] | 526 | *+vtp* on MS-Windows console: support for 'termguicolors' |
Foxe Chen | b90c239 | 2025-06-27 21:10:35 +0200 | [diff] [blame] | 527 | N *+wayland* Unix only: support for the Wayland protocol. |
| 528 | N *+wayland_clipboard* Unix only: support for Wayland selections/clipboard. |
Bram Moolenaar | 074fbd4 | 2022-08-26 16:41:14 +0100 | [diff] [blame] | 529 | T *+wildignore* |'wildignore'| Always enabled since 9.0.0278 |
Bram Moolenaar | f1dcd14 | 2022-12-31 15:30:45 +0000 | [diff] [blame] | 530 | T *+wildmenu* |'wildmenu'| Always enabled since 9.0.0279 |
Bram Moolenaar | 870ba5f | 2019-01-11 14:37:20 +0100 | [diff] [blame] | 531 | T *+windows* more than one window; Always enabled since 8.0.1118. |
Bram Moolenaar | 34feacb | 2012-12-05 19:01:43 +0100 | [diff] [blame] | 532 | m *+writebackup* |'writebackup'| is default on |
| 533 | m *+xim* X input method |xim| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 534 | *+xfontset* X fontset support |xfontset| |
Christian Brabandt | e085dfd | 2023-09-30 12:49:18 +0200 | [diff] [blame] | 535 | N *+xattr* compiled with extended attribute support (Linux only) |
Bram Moolenaar | 7cba6c0 | 2013-09-05 22:13:31 +0200 | [diff] [blame] | 536 | *+xpm* pixmap support |
Bram Moolenaar | 9b45125 | 2012-08-15 17:43:31 +0200 | [diff] [blame] | 537 | m *+xpm_w32* Win32 GUI only: pixmap support |w32-xpm-support| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 538 | *+xsmp* XSMP (X session management) support |
| 539 | *+xsmp_interact* interactive XSMP (X session management) support |
| 540 | N *+xterm_clipboard* Unix only: xterm clipboard handling |
Bram Moolenaar | 34feacb | 2012-12-05 19:01:43 +0100 | [diff] [blame] | 541 | m *+xterm_save* save and restore xterm screen |xterm-screens| |
| 542 | N *+X11* Unix only: can restore window title |X11| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 543 | |
| 544 | */dyn* *E370* *E448* |
| 545 | To some of the features "/dyn" is added when the |
| 546 | feature is only available when the related library can |
| 547 | be dynamically loaded. |
| 548 | |
| 549 | :ve[rsion] {nr} Is now ignored. This was previously used to check the |
| 550 | version number of a .vimrc file. It was removed, |
| 551 | because you can now use the ":if" command for |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 552 | version-dependent behavior. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 553 | |
| 554 | *:redi* *:redir* |
| 555 | :redi[r][!] > {file} Redirect messages to file {file}. The messages which |
| 556 | are the output of commands are written to that file, |
| 557 | until redirection ends. The messages are also still |
| 558 | shown on the screen. When [!] is included, an |
| 559 | existing file is overwritten. When [!] is omitted, |
| 560 | and {file} exists, this command fails. |
Bram Moolenaar | 063b9d1 | 2016-07-09 20:21:48 +0200 | [diff] [blame] | 561 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 562 | Only one ":redir" can be active at a time. Calls to |
| 563 | ":redir" will close any active redirection before |
Bram Moolenaar | 063b9d1 | 2016-07-09 20:21:48 +0200 | [diff] [blame] | 564 | starting redirection to the new target. For recursive |
| 565 | use check out |execute()|. |
| 566 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 567 | To stop the messages and commands from being echoed to |
| 568 | the screen, put the commands in a function and call it |
| 569 | with ":silent call Function()". |
Bram Moolenaar | 54ee775 | 2005-05-31 22:22:17 +0000 | [diff] [blame] | 570 | An alternative is to use the 'verbosefile' option, |
| 571 | this can be used in combination with ":redir". |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 572 | |
| 573 | :redi[r] >> {file} Redirect messages to file {file}. Append if {file} |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 574 | already exists. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 575 | |
Bram Moolenaar | 8c8de83 | 2008-06-24 22:58:06 +0000 | [diff] [blame] | 576 | :redi[r] @{a-zA-Z} |
Bram Moolenaar | 6c0b44b | 2005-06-01 21:56:33 +0000 | [diff] [blame] | 577 | :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] | 578 | contents of the register if its name is given |
Bram Moolenaar | 8c8de83 | 2008-06-24 22:58:06 +0000 | [diff] [blame] | 579 | uppercase {A-Z}. The ">" after the register name is |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 580 | optional. |
| 581 | :redi[r] @{a-z}>> Append messages to register {a-z}. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 582 | |
Bram Moolenaar | 664f3cf | 2019-12-07 16:03:51 +0100 | [diff] [blame] | 583 | :redi[r] @*> |
Bram Moolenaar | c81e5e7 | 2007-05-05 18:24:42 +0000 | [diff] [blame] | 584 | :redi[r] @+> Redirect messages to the selection or clipboard. For |
| 585 | backward compatibility, the ">" after the register |
| 586 | name can be omitted. See |quotestar| and |quoteplus|. |
Bram Moolenaar | 664f3cf | 2019-12-07 16:03:51 +0100 | [diff] [blame] | 587 | :redi[r] @*>> |
Bram Moolenaar | c81e5e7 | 2007-05-05 18:24:42 +0000 | [diff] [blame] | 588 | :redi[r] @+>> Append messages to the selection or clipboard. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 589 | |
Bram Moolenaar | 6c0b44b | 2005-06-01 21:56:33 +0000 | [diff] [blame] | 590 | :redi[r] @"> Redirect messages to the unnamed register. For |
| 591 | backward compatibility, the ">" after the register |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 592 | name can be omitted. |
| 593 | :redi[r] @">> Append messages to the unnamed register. |
Bram Moolenaar | a2baa73 | 2022-02-04 16:09:54 +0000 | [diff] [blame] | 594 | *E1092* |
Bram Moolenaar | fa3b723 | 2021-12-24 13:18:38 +0000 | [diff] [blame] | 595 | :redi[r] => {var} Redirect messages to a variable. |
| 596 | In legacy script: If the variable doesn't exist, then |
| 597 | it is created. If the variable exists, then it is |
| 598 | initialized to an empty string. After the redirection |
| 599 | starts, if the variable is removed or locked or the |
| 600 | variable type is changed, then further command output |
Bram Moolenaar | e1dc76f | 2022-06-25 18:01:32 +0100 | [diff] [blame] | 601 | messages will cause errors. When using a local |
| 602 | variable (l:var in a function or s:var in a script) |
| 603 | and another `:redir` causes the current one to end, |
| 604 | the scope might be different and the assignment fails. |
Bram Moolenaar | fa3b723 | 2021-12-24 13:18:38 +0000 | [diff] [blame] | 605 | In Vim9 script: the variable must have been declared |
| 606 | as a string. |
Bram Moolenaar | c81e5e7 | 2007-05-05 18:24:42 +0000 | [diff] [blame] | 607 | The variable will remain empty until redirection ends. |
Bram Moolenaar | fa3b723 | 2021-12-24 13:18:38 +0000 | [diff] [blame] | 608 | Only string variables can be used. |
Bram Moolenaar | 063b9d1 | 2016-07-09 20:21:48 +0200 | [diff] [blame] | 609 | To get the output of one command the |execute()| |
Bram Moolenaar | 2c7f8c5 | 2020-04-20 19:52:53 +0200 | [diff] [blame] | 610 | function can be used instead of redirection. |
Bram Moolenaar | 5313dcb | 2005-02-22 08:56:13 +0000 | [diff] [blame] | 611 | |
| 612 | :redi[r] =>> {var} Append messages to an existing variable. Only string |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 613 | variables can be used. |
Bram Moolenaar | a2baa73 | 2022-02-04 16:09:54 +0000 | [diff] [blame] | 614 | *E1185* |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 615 | :redi[r] END End redirecting messages. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 616 | |
Bram Moolenaar | 7b668e8 | 2016-08-23 23:51:21 +0200 | [diff] [blame] | 617 | *:filt* *:filter* |
Bram Moolenaar | fd31be2 | 2022-01-16 14:46:06 +0000 | [diff] [blame] | 618 | :filt[er][!] {pattern} {command} |
| 619 | :filt[er][!] /{pattern}/ {command} |
Bram Moolenaar | 214641f | 2017-03-05 17:04:09 +0100 | [diff] [blame] | 620 | Restrict the output of {command} to lines matching |
Bram Moolenaar | fd31be2 | 2022-01-16 14:46:06 +0000 | [diff] [blame] | 621 | with {pattern}. For example, to list only xml files: > |
Bram Moolenaar | 818078d | 2016-08-27 21:58:42 +0200 | [diff] [blame] | 622 | :filter /\.xml$/ oldfiles |
Bram Moolenaar | 214641f | 2017-03-05 17:04:09 +0100 | [diff] [blame] | 623 | < If the [!] is given, restrict the output of {command} |
Bram Moolenaar | fd31be2 | 2022-01-16 14:46:06 +0000 | [diff] [blame] | 624 | to lines that do NOT match {pattern}. |
Bram Moolenaar | 214641f | 2017-03-05 17:04:09 +0100 | [diff] [blame] | 625 | |
Bram Moolenaar | fd31be2 | 2022-01-16 14:46:06 +0000 | [diff] [blame] | 626 | {pattern} is a Vim search pattern. Instead of enclosing |
Bram Moolenaar | 7b668e8 | 2016-08-23 23:51:21 +0200 | [diff] [blame] | 627 | it in / any non-ID character (see |'isident'|) can be |
Bram Moolenaar | fd31be2 | 2022-01-16 14:46:06 +0000 | [diff] [blame] | 628 | used, so long as it does not appear in {pattern}. |
| 629 | Without the enclosing character the pattern cannot |
| 630 | include the bar character. 'ignorecase' is not used. |
Bram Moolenaar | 7b668e8 | 2016-08-23 23:51:21 +0200 | [diff] [blame] | 631 | |
| 632 | The pattern is matched against the relevant part of |
| 633 | the output, not necessarily the whole line. Only some |
| 634 | commands support filtering, try it out to check if it |
Bram Moolenaar | f86db78 | 2018-10-25 13:31:37 +0200 | [diff] [blame] | 635 | works. Some of the commands that support filtering: |
Bram Moolenaar | ad6dc49 | 2019-04-27 22:40:08 +0200 | [diff] [blame] | 636 | |:#| - filter whole line |
| 637 | |:clist| - filter by file name or module name |
| 638 | |:command| - filter by command name |
| 639 | |:files| - filter by file name |
| 640 | |:highlight| - filter by highlight group |
Christian Brabandt | 42a5b5a | 2024-05-24 07:39:34 +0200 | [diff] [blame] | 641 | |:history| - filter by history commands |
Bram Moolenaar | ad6dc49 | 2019-04-27 22:40:08 +0200 | [diff] [blame] | 642 | |:jumps| - filter by file name |
| 643 | |:let| - filter by variable name |
| 644 | |:list| - filter whole line |
| 645 | |:llist| - filter by file name or module name |
| 646 | |:marks| - filter by text in the current file, |
| 647 | or file name for other files |
| 648 | |:oldfiles| - filter by file name |
Bram Moolenaar | 8fc4296 | 2019-10-26 17:33:13 +0200 | [diff] [blame] | 649 | |:registers| - filter by register contents |
| 650 | (does not work multi-line) |
Bram Moolenaar | 0e6adf8 | 2021-12-16 14:41:10 +0000 | [diff] [blame] | 651 | |:set| - filter by option name |
Bram Moolenaar | 7b668e8 | 2016-08-23 23:51:21 +0200 | [diff] [blame] | 652 | |
| 653 | Only normal messages are filtered, error messages are |
| 654 | not. |
| 655 | |
Bram Moolenaar | e0fa374 | 2016-02-20 15:47:01 +0100 | [diff] [blame] | 656 | *:sil* *:silent* *:silent!* |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 657 | :sil[ent][!] {command} Execute {command} silently. Normal messages will not |
| 658 | be given or added to the message history. |
| 659 | When [!] is added, error messages will also be |
| 660 | skipped, and commands and mappings will not be aborted |
| 661 | when an error is detected. |v:errmsg| is still set. |
| 662 | When [!] is not used, an error message will cause |
| 663 | further messages to be displayed normally. |
| 664 | Redirection, started with |:redir|, will continue as |
| 665 | usual, although there might be small differences. |
| 666 | This will allow redirecting the output of a command |
| 667 | without seeing it on the screen. Example: > |
| 668 | :redir >/tmp/foobar |
| 669 | :silent g/Aap/p |
| 670 | :redir END |
| 671 | < To execute a Normal mode command silently, use the |
| 672 | |:normal| command. For example, to search for a |
| 673 | string without messages: > |
| 674 | :silent exe "normal /path\<CR>" |
| 675 | < ":silent!" is useful to execute a command that may |
| 676 | fail, but the failure is to be ignored. Example: > |
| 677 | :let v:errmsg = "" |
| 678 | :silent! /^begin |
| 679 | :if v:errmsg != "" |
| 680 | : ... pattern was not found |
| 681 | < ":silent" will also avoid the hit-enter prompt. When |
| 682 | using this for an external command, this may cause the |
| 683 | screen to be messed up. Use |CTRL-L| to clean it up |
| 684 | then. |
| 685 | ":silent menu ..." defines a menu that will not echo a |
| 686 | Command-line command. The command will still produce |
| 687 | messages though. Use ":silent" in the command itself |
| 688 | to avoid that: ":silent menu .... :silent command". |
| 689 | |
Bram Moolenaar | 8e258a4 | 2009-07-09 13:55:43 +0000 | [diff] [blame] | 690 | *:uns* *:unsilent* |
| 691 | :uns[ilent] {command} Execute {command} not silently. Only makes a |
| 692 | difference when |:silent| was used to get to this |
| 693 | command. |
| 694 | Use this for giving a message even when |:silent| was |
| 695 | used. In this example |:silent| is used to avoid the |
| 696 | message about reading the file and |:unsilent| to be |
| 697 | able to list the first line of each file. > |
Bram Moolenaar | c51cf03 | 2022-02-26 12:25:45 +0000 | [diff] [blame] | 698 | :silent argdo unsilent echo expand('%') .. ": " .. getline(1) |
Bram Moolenaar | 8e258a4 | 2009-07-09 13:55:43 +0000 | [diff] [blame] | 699 | < |
| 700 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 701 | *:verb* *:verbose* |
| 702 | :[count]verb[ose] {command} |
| 703 | Execute {command} with 'verbose' set to [count]. If |
Bram Moolenaar | ed20346 | 2004-06-16 11:19:22 +0000 | [diff] [blame] | 704 | [count] is omitted one is used. ":0verbose" can be |
| 705 | used to set 'verbose' to zero. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 706 | The additional use of ":silent" makes messages |
| 707 | generated but not displayed. |
| 708 | The combination of ":silent" and ":verbose" can be |
| 709 | used to generate messages and check them with |
| 710 | |v:statusmsg| and friends. For example: > |
| 711 | :let v:statusmsg = "" |
| 712 | :silent verbose runtime foobar.vim |
| 713 | :if v:statusmsg != "" |
| 714 | : " foobar.vim could not be found |
| 715 | :endif |
| 716 | < When concatenating another command, the ":verbose" |
| 717 | only applies to the first one: > |
| 718 | :4verbose set verbose | set verbose |
| 719 | < verbose=4 ~ |
| 720 | verbose=0 ~ |
Bram Moolenaar | 54ee775 | 2005-05-31 22:22:17 +0000 | [diff] [blame] | 721 | For logging verbose messages in a file use the |
| 722 | 'verbosefile' option. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 723 | |
Bram Moolenaar | 8aff23a | 2005-08-19 20:40:30 +0000 | [diff] [blame] | 724 | *:verbose-cmd* |
| 725 | 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] | 726 | an abbreviation or a user-defined function or a command or a highlight group |
| 727 | or an autocommand will also display where it was last defined. If it was |
| 728 | defined manually then there will be no "Last set" message. When it was |
| 729 | defined while executing a function, user command or autocommand, the script in |
| 730 | which it was defined is reported. |
Bram Moolenaar | db84e45 | 2010-08-15 13:50:43 +0200 | [diff] [blame] | 731 | {not available when compiled without the |+eval| feature} |
Bram Moolenaar | 8aff23a | 2005-08-19 20:40:30 +0000 | [diff] [blame] | 732 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 733 | *K* |
| 734 | K Run a program to lookup the keyword under the |
| 735 | cursor. The name of the program is given with the |
| 736 | 'keywordprg' (kp) option (default is "man"). The |
| 737 | keyword is formed of letters, numbers and the |
| 738 | characters in 'iskeyword'. The keyword under or |
| 739 | right of the cursor is used. The same can be done |
| 740 | with the command > |
| 741 | :!{program} {keyword} |
| 742 | < There is an example of a program to use in the tools |
Bram Moolenaar | 214641f | 2017-03-05 17:04:09 +0100 | [diff] [blame] | 743 | directory of Vim. It is called "ref" and does a |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 744 | simple spelling check. |
| 745 | Special cases: |
Bram Moolenaar | 2685212 | 2016-05-24 20:02:38 +0200 | [diff] [blame] | 746 | - If 'keywordprg' begins with ":" it is invoked as |
| 747 | a Vim Ex command with [count]. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 748 | - If 'keywordprg' is empty, the ":help" command is |
| 749 | used. It's a good idea to include more characters |
| 750 | in 'iskeyword' then, to be able to find more help. |
Bram Moolenaar | 2685212 | 2016-05-24 20:02:38 +0200 | [diff] [blame] | 751 | - When 'keywordprg' is equal to "man" or starts with |
| 752 | ":", a [count] before "K" is inserted after |
| 753 | keywordprg and before the keyword. For example, |
| 754 | using "2K" while the cursor is on "mkdir", results |
| 755 | in: > |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 756 | !man 2 mkdir |
| 757 | < - When 'keywordprg' is equal to "man -s", a count |
| 758 | before "K" is inserted after the "-s". If there is |
| 759 | no count, the "-s" is removed. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 760 | |
| 761 | *v_K* |
| 762 | {Visual}K Like "K", but use the visually highlighted text for |
| 763 | the keyword. Only works when the highlighted text is |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 764 | not more than one line. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 765 | |
| 766 | [N]gs *gs* *:sl* *:sleep* |
Bram Moolenaar | e2edc2e | 2021-01-16 20:21:23 +0100 | [diff] [blame] | 767 | :[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] | 768 | sleep for [N] milliseconds. The count for "gs" always |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 769 | uses seconds. The default is one second. > |
| 770 | :sleep "sleep for one second |
| 771 | :5sleep "sleep for five seconds |
Bram Moolenaar | e2edc2e | 2021-01-16 20:21:23 +0100 | [diff] [blame] | 772 | :sleep 100m "sleep for 100 milliseconds |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 773 | 10gs "sleep for ten seconds |
Bram Moolenaar | 5666fcd | 2019-12-26 14:35:26 +0100 | [diff] [blame] | 774 | < Can be interrupted with CTRL-C (CTRL-Break on |
| 775 | MS-Windows). "gs" stands for "goto sleep". |
Bram Moolenaar | 677ee68 | 2005-01-27 14:41:15 +0000 | [diff] [blame] | 776 | While sleeping the cursor is positioned in the text, |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 777 | if at a visible position. |
Yee Cheng Chin | e70587d | 2025-02-13 20:55:45 +0100 | [diff] [blame] | 778 | Queued messages and timers (|+timers|) are processed |
| 779 | during the sleep as well. |
Bram Moolenaar | 1514667 | 2011-10-20 22:22:38 +0200 | [diff] [blame] | 780 | |
Bram Moolenaar | 98a29d0 | 2021-01-18 19:55:44 +0100 | [diff] [blame] | 781 | *:sl!* *:sleep!* |
Bram Moolenaar | 2346a63 | 2021-06-13 19:02:49 +0200 | [diff] [blame] | 782 | :[N]sl[eep]! [N][m] Same as above, but hide the cursor. |
Bram Moolenaar | 98a29d0 | 2021-01-18 19:55:44 +0100 | [diff] [blame] | 783 | |
Bram Moolenaar | d4aa83a | 2019-05-09 18:59:31 +0200 | [diff] [blame] | 784 | *:xrestore* *:xr* |
| 785 | :xr[estore] [display] Reinitializes the connection to the X11 server. Useful |
| 786 | after the X server restarts, e.g. when running Vim for |
| 787 | long time inside screen/tmux and connecting from |
Bram Moolenaar | 68e6560 | 2019-05-26 21:33:31 +0200 | [diff] [blame] | 788 | different machines. |
Bram Moolenaar | 664f3cf | 2019-12-07 16:03:51 +0100 | [diff] [blame] | 789 | [display] should be in the format of the $DISPLAY |
Bram Moolenaar | d4aa83a | 2019-05-09 18:59:31 +0200 | [diff] [blame] | 790 | environment variable (e.g. "localhost:10.0") |
| 791 | If [display] is omitted, then it reinitializes the |
| 792 | connection to the X11 server using the same value as |
| 793 | was used for the previous execution of this command. |
| 794 | If the value was never specified, then it uses the |
| 795 | value of $DISPLAY environment variable as it was when |
Foxe Chen | b90c239 | 2025-06-27 21:10:35 +0200 | [diff] [blame] | 796 | Vim was started. This will also update |v:clipmethod|. |
Hirohito Higashi | 73b9650 | 2025-06-28 18:18:21 +0200 | [diff] [blame] | 797 | {only available when compiled with the |
| 798 | |+xterm_clipboard| feature} |
Foxe Chen | b90c239 | 2025-06-27 21:10:35 +0200 | [diff] [blame] | 799 | |
| 800 | *:clipreset* *:clip* |
| 801 | :clip[reset] Attempts to choose a new method for accessing the |
Hirohito Higashi | 73b9650 | 2025-06-28 18:18:21 +0200 | [diff] [blame] | 802 | clipboard, using the 'clipmethod' option. This is |
Foxe Chen | b90c239 | 2025-06-27 21:10:35 +0200 | [diff] [blame] | 803 | useful when the current method has become unavailable, |
| 804 | and you want to try using another method. |
Bram Moolenaar | 664f3cf | 2019-12-07 16:03:51 +0100 | [diff] [blame] | 805 | {only available when compiled with the |+clipboard| |
Bram Moolenaar | d4aa83a | 2019-05-09 18:59:31 +0200 | [diff] [blame] | 806 | feature} |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 807 | |
| 808 | *g_CTRL-A* |
| 809 | g CTRL-A Only when Vim was compiled with MEM_PROFILING defined |
| 810 | (which is very rare): print memory usage statistics. |
| 811 | Only useful for debugging Vim. |
Bram Moolenaar | 345efa0 | 2016-01-15 20:57:49 +0100 | [diff] [blame] | 812 | For incrementing in Visual mode see |v_g_CTRL-A|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 813 | |
| 814 | ============================================================================== |
Bram Moolenaar | 24ea3ba | 2010-09-19 19:01:21 +0200 | [diff] [blame] | 815 | 2. Using Vim like less or more *less* |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 816 | |
| 817 | If you use the less or more program to view a file, you don't get syntax |
| 818 | highlighting. Thus you would like to use Vim instead. You can do this by |
| 819 | using the shell script "$VIMRUNTIME/macros/less.sh". |
| 820 | |
| 821 | This shell script uses the Vim script "$VIMRUNTIME/macros/less.vim". It sets |
| 822 | up mappings to simulate the commands that less supports. Otherwise, you can |
| 823 | still use the Vim commands. |
| 824 | |
| 825 | This isn't perfect. For example, when viewing a short file Vim will still use |
Bram Moolenaar | 7ff7846 | 2020-07-10 22:00:53 +0200 | [diff] [blame] | 826 | the whole screen. But it works well enough for most uses, and you get syntax |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 827 | highlighting. |
| 828 | |
| 829 | The "h" key will give you a short overview of the available commands. |
| 830 | |
Bram Moolenaar | e392eb4 | 2015-11-19 20:38:09 +0100 | [diff] [blame] | 831 | If you want to set options differently when using less, define the |
| 832 | LessInitFunc in your vimrc, for example: > |
| 833 | |
| 834 | func LessInitFunc() |
| 835 | set nocursorcolumn nocursorline |
| 836 | endfunc |
| 837 | < |
| 838 | |
Bram Moolenaar | d2855f5 | 2018-07-31 22:23:58 +0200 | [diff] [blame] | 839 | vim:tw=78:ts=8:noet:ft=help:norl: |