annotate runtime/doc/pattern.txt @ 4444:ccecb03e5e8b v7.3.970

updated for version 7.3.970 Problem: Syntax highlighting can be slow. Solution: Include the NFA regexp engine. Add the 'regexpengine' option to select which one is used. (various authors, including Ken Takata, Andrei Aiordachioaie, Russ Cox, Xiaozhou Liua, Ian Young)
author Bram Moolenaar <bram@vim.org>
date Sun, 19 May 2013 19:40:29 +0200
parents 22fa3049e934
children 2eb30f341e8d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4444
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
1 *pattern.txt* For Vim version 7.3. Last change: 2013 May 17
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4 VIM REFERENCE MANUAL by Bram Moolenaar
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7 Patterns and search commands *pattern-searches*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
9 The very basics can be found in section |03.9| of the user manual. A few more
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
10 explanations are in chapter 27 |usr_27.txt|.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
11
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
12 1. Search commands |search-commands|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
13 2. The definition of a pattern |search-pattern|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
14 3. Magic |/magic|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
15 4. Overview of pattern items |pattern-overview|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
16 5. Multi items |pattern-multi-items|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
17 6. Ordinary atoms |pattern-atoms|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
18 7. Ignoring case in a pattern |/ignorecase|
714
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 699
diff changeset
19 8. Composing characters |patterns-composing|
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 699
diff changeset
20 9. Compare with Perl patterns |perl-patterns|
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 699
diff changeset
21 10. Highlighting matches |match-highlight|
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
22
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
23 ==============================================================================
3153
37ecb8ff4560 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3082
diff changeset
24 1. Search commands *search-commands*
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
25
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
26 */*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
27 /{pattern}[/]<CR> Search forward for the [count]'th occurrence of
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
28 {pattern} |exclusive|.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
29
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
30 /{pattern}/{offset}<CR> Search forward for the [count]'th occurrence of
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
31 {pattern} and go |{offset}| lines up or down.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
32 |linewise|.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
33
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
34 */<CR>*
2033
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
35 /<CR> Search forward for the [count]'th occurrence of the
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
36 latest used pattern |last-pattern| with latest used
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
37 |{offset}|.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
38
2033
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
39 //{offset}<CR> Search forward for the [count]'th occurrence of the
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
40 latest used pattern |last-pattern| with new
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
41 |{offset}|. If {offset} is empty no offset is used.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
42
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
43 *?*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
44 ?{pattern}[?]<CR> Search backward for the [count]'th previous
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
45 occurrence of {pattern} |exclusive|.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
46
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
47 ?{pattern}?{offset}<CR> Search backward for the [count]'th previous
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
48 occurrence of {pattern} and go |{offset}| lines up or
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
49 down |linewise|.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
50
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
51 *?<CR>*
2033
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
52 ?<CR> Search backward for the [count]'th occurrence of the
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
53 latest used pattern |last-pattern| with latest used
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
54 |{offset}|.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
55
2033
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
56 ??{offset}<CR> Search backward for the [count]'th occurrence of the
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
57 latest used pattern |last-pattern| with new
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
58 |{offset}|. If {offset} is empty no offset is used.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
59
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
60 *n*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
61 n Repeat the latest "/" or "?" [count] times.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
62 |last-pattern| {Vi: no count}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
63
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
64 *N*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
65 N Repeat the latest "/" or "?" [count] times in
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
66 opposite direction. |last-pattern| {Vi: no count}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
67
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
68 *star* *E348* *E349*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
69 * Search forward for the [count]'th occurrence of the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
70 word nearest to the cursor. The word used for the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
71 search is the first of:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
72 1. the keyword under the cursor |'iskeyword'|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
73 2. the first keyword after the cursor, in the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
74 current line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
75 3. the non-blank word under the cursor
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
76 4. the first non-blank word after the cursor,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
77 in the current line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
78 Only whole keywords are searched for, like with the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
79 command "/\<keyword\>". |exclusive| {not in Vi}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
80 'ignorecase' is used, 'smartcase' is not.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
81
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
82 *#*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
83 # Same as "*", but search backward. The pound sign
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
84 (character 163) also works. If the "#" key works as
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
85 backspace, try using "stty erase <BS>" before starting
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
86 Vim (<BS> is CTRL-H or a real backspace). {not in Vi}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
87
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
88 *gstar*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
89 g* Like "*", but don't put "\<" and "\>" around the word.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
90 This makes the search also find matches that are not a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
91 whole word. {not in Vi}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
92
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
93 *g#*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
94 g# Like "#", but don't put "\<" and "\>" around the word.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
95 This makes the search also find matches that are not a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
96 whole word. {not in Vi}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
97
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
98 *gd*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
99 gd Goto local Declaration. When the cursor is on a local
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
100 variable, this command will jump to its declaration.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
101 First Vim searches for the start of the current
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
102 function, just like "[[". If it is not found the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
103 search stops in line 1. If it is found, Vim goes back
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
104 until a blank line is found. From this position Vim
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
105 searches for the keyword under the cursor, like with
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
106 "*", but lines that look like a comment are ignored
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
107 (see 'comments' option).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
108 Note that this is not guaranteed to work, Vim does not
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
109 really check the syntax, it only searches for a match
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
110 with the keyword. If included files also need to be
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
111 searched use the commands listed in |include-search|.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
112 After this command |n| searches forward for the next
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
113 match (not backward).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
114 {not in Vi}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
115
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
116 *gD*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
117 gD Goto global Declaration. When the cursor is on a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
118 global variable that is defined in the file, this
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
119 command will jump to its declaration. This works just
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
120 like "gd", except that the search for the keyword
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
121 always starts in line 1. {not in Vi}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
122
523
a7ae7e043e43 updated for version 7.0146
vimboss
parents: 484
diff changeset
123 *1gd*
a7ae7e043e43 updated for version 7.0146
vimboss
parents: 484
diff changeset
124 1gd Like "gd", but ignore matches inside a {} block that
a7ae7e043e43 updated for version 7.0146
vimboss
parents: 484
diff changeset
125 ends before the cursor position. {not in Vi}
a7ae7e043e43 updated for version 7.0146
vimboss
parents: 484
diff changeset
126
a7ae7e043e43 updated for version 7.0146
vimboss
parents: 484
diff changeset
127 *1gD*
a7ae7e043e43 updated for version 7.0146
vimboss
parents: 484
diff changeset
128 1gD Like "gD", but ignore matches inside a {} block that
a7ae7e043e43 updated for version 7.0146
vimboss
parents: 484
diff changeset
129 ends before the cursor position. {not in Vi}
a7ae7e043e43 updated for version 7.0146
vimboss
parents: 484
diff changeset
130
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
131 *CTRL-C*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
132 CTRL-C Interrupt current (search) command. Use CTRL-Break on
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
133 MS-DOS |dos-CTRL-Break|.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
134 In Normal mode, any pending command is aborted.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
135
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
136 *:noh* *:nohlsearch*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
137 :noh[lsearch] Stop the highlighting for the 'hlsearch' option. It
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
138 is automatically turned back on when using a search
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
139 command, or setting the 'hlsearch' option.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
140 This command doesn't work in an autocommand, because
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
141 the highlighting state is saved and restored when
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
142 executing autocommands |autocmd-searchpat|.
1620
73fe8baea242 updated for version 7.2a
vimboss
parents: 1326
diff changeset
143 Same thing for when invoking a user function.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
144
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
145 While typing the search pattern the current match will be shown if the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
146 'incsearch' option is on. Remember that you still have to finish the search
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
147 command with <CR> to actually position the cursor at the displayed match. Or
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
148 use <Esc> to abandon the search.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
149
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
150 All matches for the last used search pattern will be highlighted if you set
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
151 the 'hlsearch' option. This can be suspended with the |:nohlsearch| command.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
152
3153
37ecb8ff4560 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3082
diff changeset
153 When no match is found you get the error: *E486* Pattern not found
37ecb8ff4560 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3082
diff changeset
154 Note that for the |:global| command this behaves like a normal message, for Vi
37ecb8ff4560 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3082
diff changeset
155 compatibility. For the |:s| command the "e" flag can be used to avoid the
37ecb8ff4560 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3082
diff changeset
156 error message |:s_flags|.
37ecb8ff4560 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3082
diff changeset
157
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
158 *search-offset* *{offset}*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
159 These commands search for the specified pattern. With "/" and "?" an
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
160 additional offset may be given. There are two types of offsets: line offsets
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
161 and character offsets. {the character offsets are not in Vi}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
162
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
163 The offset gives the cursor position relative to the found match:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
164 [num] [num] lines downwards, in column 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
165 +[num] [num] lines downwards, in column 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
166 -[num] [num] lines upwards, in column 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
167 e[+num] [num] characters to the right of the end of the match
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
168 e[-num] [num] characters to the left of the end of the match
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
169 s[+num] [num] characters to the right of the start of the match
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
170 s[-num] [num] characters to the left of the start of the match
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
171 b[+num] [num] identical to s[+num] above (mnemonic: begin)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
172 b[-num] [num] identical to s[-num] above (mnemonic: begin)
667
9090f866cd57 updated for version 7.0197
vimboss
parents: 651
diff changeset
173 ;{pattern} perform another search, see |//;|
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
174
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
175 If a '-' or '+' is given but [num] is omitted, a count of one will be used.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
176 When including an offset with 'e', the search becomes inclusive (the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
177 character the cursor lands on is included in operations).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
178
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
179 Examples:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
180
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
181 pattern cursor position ~
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
182 /test/+1 one line below "test", in column 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
183 /test/e on the last t of "test"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
184 /test/s+2 on the 's' of "test"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
185 /test/b-3 three characters before "test"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
186
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
187 If one of these commands is used after an operator, the characters between
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
188 the cursor position before and after the search is affected. However, if a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
189 line offset is given, the whole lines between the two cursor positions are
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
190 affected.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
191
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
192 An example of how to search for matches with a pattern and change the match
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
193 with another word: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
194 /foo<CR> find "foo"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
195 c//e change until end of match
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
196 bar<Esc> type replacement
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
197 //<CR> go to start of next match
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
198 c//e change until end of match
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
199 beep<Esc> type another replacement
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
200 etc.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
201 <
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
202 *//;* *E386*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
203 A very special offset is ';' followed by another search command. For example: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
204
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
205 /test 1/;/test
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
206 /test.*/+1;?ing?
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
207
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
208 The first one first finds the next occurrence of "test 1", and then the first
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
209 occurrence of "test" after that.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
210
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
211 This is like executing two search commands after each other, except that:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
212 - It can be used as a single motion command after an operator.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
213 - The direction for a following "n" or "N" command comes from the first
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
214 search command.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
215 - When an error occurs the cursor is not moved at all.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
216
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
217 *last-pattern*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
218 The last used pattern and offset are remembered. They can be used to repeat
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
219 the search, possibly in another direction or with another count. Note that
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
220 two patterns are remembered: One for 'normal' search commands and one for the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
221 substitute command ":s". Each time an empty pattern is given, the previously
2725
6f63330ec225 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2577
diff changeset
222 used pattern is used. However, if there is no previous search command, a
6f63330ec225 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2577
diff changeset
223 previous substitute pattern is used, if possible.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
224
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
225 The 'magic' option sticks with the last used pattern. If you change 'magic',
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
226 this will not change how the last used pattern will be interpreted.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
227 The 'ignorecase' option does not do this. When 'ignorecase' is changed, it
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
228 will result in the pattern to match other text.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
229
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
230 All matches for the last used search pattern will be highlighted if you set
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
231 the 'hlsearch' option.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
232
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
233 To clear the last used search pattern: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
234 :let @/ = ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
235 This will not set the pattern to an empty string, because that would match
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
236 everywhere. The pattern is really cleared, like when starting Vim.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
237
133
bcb347a8f934 updated for version 7.0044
vimboss
parents: 39
diff changeset
238 The search usually skips matches that don't move the cursor. Whether the next
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
239 match is found at the next character or after the skipped match depends on the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
240 'c' flag in 'cpoptions'. See |cpo-c|.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
241 with 'c' flag: "/..." advances 1 to 3 characters
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
242 without 'c' flag: "/..." advances 1 character
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
243 The unpredictability with the 'c' flag is caused by starting the search in the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
244 first column, skipping matches until one is found past the cursor position.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
245
133
bcb347a8f934 updated for version 7.0044
vimboss
parents: 39
diff changeset
246 When searching backwards, searching starts at the start of the line, using the
bcb347a8f934 updated for version 7.0044
vimboss
parents: 39
diff changeset
247 'c' flag in 'cpoptions' as described above. Then the last match before the
bcb347a8f934 updated for version 7.0044
vimboss
parents: 39
diff changeset
248 cursor position is used.
bcb347a8f934 updated for version 7.0044
vimboss
parents: 39
diff changeset
249
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
250 In Vi the ":tag" command sets the last search pattern when the tag is searched
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
251 for. In Vim this is not done, the previous search pattern is still remembered,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
252 unless the 't' flag is present in 'cpoptions'. The search pattern is always
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
253 put in the search history.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
254
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
255 If the 'wrapscan' option is on (which is the default), searches wrap around
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
256 the end of the buffer. If 'wrapscan' is not set, the backward search stops
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
257 at the beginning and the forward search stops at the end of the buffer. If
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
258 'wrapscan' is set and the pattern was not found the error message "pattern
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
259 not found" is given, and the cursor will not be moved. If 'wrapscan' is not
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
260 set the message becomes "search hit BOTTOM without match" when searching
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
261 forward, or "search hit TOP without match" when searching backward. If
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
262 wrapscan is set and the search wraps around the end of the file the message
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
263 "search hit TOP, continuing at BOTTOM" or "search hit BOTTOM, continuing at
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
264 TOP" is given when searching backwards or forwards respectively. This can be
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
265 switched off by setting the 's' flag in the 'shortmess' option. The highlight
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
266 method 'w' is used for this message (default: standout).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
267
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
268 *search-range*
625
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 523
diff changeset
269 You can limit the search command "/" to a certain range of lines by including
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 523
diff changeset
270 \%>l items. For example, to match the word "limit" below line 199 and above
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 523
diff changeset
271 line 300: >
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 523
diff changeset
272 /\%>199l\%<300llimit
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 523
diff changeset
273 Also see |/\%>l|.
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 523
diff changeset
274
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 523
diff changeset
275 Another way is to use the ":substitute" command with the 'c' flag. Example: >
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
276 :.,300s/Pattern//gc
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
277 This command will search from the cursor position until line 300 for
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
278 "Pattern". At the match, you will be asked to type a character. Type 'q' to
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
279 stop at this match, type 'n' to find the next match.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
280
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
281 The "*", "#", "g*" and "g#" commands look for a word near the cursor in this
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
282 order, the first one that is found is used:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
283 - The keyword currently under the cursor.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
284 - The first keyword to the right of the cursor, in the same line.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
285 - The WORD currently under the cursor.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
286 - The first WORD to the right of the cursor, in the same line.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
287 The keyword may only contain letters and characters in 'iskeyword'.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
288 The WORD may contain any non-blanks (<Tab>s and/or <Space>s).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
289 Note that if you type with ten fingers, the characters are easy to remember:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
290 the "#" is under your left hand middle finger (search to the left and up) and
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
291 the "*" is under your right hand middle finger (search to the right and down).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
292 (this depends on your keyboard layout though).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
293
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
294 ==============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
295 2. The definition of a pattern *search-pattern* *pattern* *[pattern]*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
296 *regular-expression* *regexp* *Pattern*
190
a1f18bd133d6 updated for version 7.0057
vimboss
parents: 168
diff changeset
297 *E76* *E383* *E476*
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
298
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
299 For starters, read chapter 27 of the user manual |usr_27.txt|.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
300
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
301 */bar* */\bar* */pattern*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
302 1. A pattern is one or more branches, separated by "\|". It matches anything
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
303 that matches one of the branches. Example: "foo\|beep" matches "foo" and
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
304 matches "beep". If more than one branch matches, the first one is used.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
305
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
306 pattern ::= branch
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
307 or branch \| branch
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
308 or branch \| branch \| branch
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
309 etc.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
310
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
311 */branch* */\&*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
312 2. A branch is one or more concats, separated by "\&". It matches the last
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
313 concat, but only if all the preceding concats also match at the same
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
314 position. Examples:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
315 "foobeep\&..." matches "foo" in "foobeep".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
316 ".*Peter\&.*Bob" matches in a line containing both "Peter" and "Bob"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
317
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
318 branch ::= concat
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
319 or concat \& concat
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
320 or concat \& concat \& concat
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
321 etc.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
322
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
323 */concat*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
324 3. A concat is one or more pieces, concatenated. It matches a match for the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
325 first piece, followed by a match for the second piece, etc. Example:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
326 "f[0-9]b", first matches "f", then a digit and then "b".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
327
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
328 concat ::= piece
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
329 or piece piece
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
330 or piece piece piece
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
331 etc.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
332
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
333 */piece*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
334 4. A piece is an atom, possibly followed by a multi, an indication of how many
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
335 times the atom can be matched. Example: "a*" matches any sequence of "a"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
336 characters: "", "a", "aa", etc. See |/multi|.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
337
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
338 piece ::= atom
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
339 or atom multi
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
340
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
341 */atom*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
342 5. An atom can be one of a long list of items. Many atoms match one character
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
343 in the text. It is often an ordinary character or a character class.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
344 Braces can be used to make a pattern into an atom. The "\z(\)" construct
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
345 is only for syntax highlighting.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
346
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
347 atom ::= ordinary-atom |/ordinary-atom|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
348 or \( pattern \) |/\(|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
349 or \%( pattern \) |/\%(|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
350 or \z( pattern \) |/\z(|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
351
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
352
4444
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
353 */\%#=* *two-engines*
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
354 Vim includes two regexp engines:
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
355 1. An old, backtracking engine that supports everything.
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
356 2. A new, NFA engine that works much faster on some patterns, but does not
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
357 support everything.
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
358
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
359 Vim will automatically select the right engine for you. However, if you run
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
360 into a problem or want to specifically select one engine or the other, you can
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
361 prepend one of the following to the pattern:
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
362
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
363 \%#=0 Force automatic selection. Only has an effect when
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
364 'regexpengine' has been set to a non-zero value.
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
365 \%#=1 Force using the old engine.
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
366 \%#=2 Force using the NFA engine.
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
367
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
368 You can also use the 'regexpengine' option to change the default.
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
369
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
370 *E864* *E868* *E874* *E875* *E876* *E877* *E878*
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
371 If selecting the NFA engine and it runs into something that is not implemented
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
372 the pattern will not match. This is only useful when debugging Vim.
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
373
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
374 ==============================================================================
840
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
375 3. Magic */magic*
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
376
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
377 Some characters in the pattern are taken literally. They match with the same
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
378 character in the text. When preceded with a backslash however, these
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
379 characters get a special meaning.
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
380
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
381 Other characters have a special meaning without a backslash. They need to be
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
382 preceded with a backslash to match literally.
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
383
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
384 If a character is taken literally or not depends on the 'magic' option and the
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
385 items mentioned next.
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
386 */\m* */\M*
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
387 Use of "\m" makes the pattern after it be interpreted as if 'magic' is set,
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
388 ignoring the actual value of the 'magic' option.
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
389 Use of "\M" makes the pattern after it be interpreted as if 'nomagic' is used.
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
390 */\v* */\V*
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
391 Use of "\v" means that in the pattern after it all ASCII characters except
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
392 '0'-'9', 'a'-'z', 'A'-'Z' and '_' have a special meaning. "very magic"
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
393
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
394 Use of "\V" means that in the pattern after it only the backslash has a
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
395 special meaning. "very nomagic"
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
396
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
397 Examples:
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
398 after: \v \m \M \V matches ~
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
399 'magic' 'nomagic'
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
400 $ $ $ \$ matches end-of-line
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
401 . . \. \. matches any character
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
402 * * \* \* any number of the previous atom
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
403 () \(\) \(\) \(\) grouping into an atom
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
404 | \| \| \| separating alternatives
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
405 \a \a \a \a alphabetic character
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
406 \\ \\ \\ \\ literal backslash
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
407 \. \. . . literal dot
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
408 \{ { { { literal '{'
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
409 a a a a literal 'a'
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
410
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
411 {only Vim supports \m, \M, \v and \V}
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
412
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
413 It is recommended to always keep the 'magic' option at the default setting,
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
414 which is 'magic'. This avoids portability problems. To make a pattern immune
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
415 to the 'magic' option being set or not, put "\m" or "\M" at the start of the
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
416 pattern.
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
417
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 834
diff changeset
418 ==============================================================================
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
419 4. Overview of pattern items *pattern-overview*
4444
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
420 *E865* *E866* *E867* *E869*
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
421
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
422 Overview of multi items. */multi* *E61* *E62*
4444
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
423 More explanation and examples below, follow the links. *E64* *E871*
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
424
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
425 multi ~
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
426 'magic' 'nomagic' matches of the preceding atom ~
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
427 |/star| * \* 0 or more as many as possible
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
428 |/\+| \+ \+ 1 or more as many as possible (*)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
429 |/\=| \= \= 0 or 1 as many as possible (*)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
430 |/\?| \? \? 0 or 1 as many as possible (*)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
431
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
432 |/\{| \{n,m} \{n,m} n to m as many as possible (*)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
433 \{n} \{n} n exactly (*)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
434 \{n,} \{n,} at least n as many as possible (*)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
435 \{,m} \{,m} 0 to m as many as possible (*)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
436 \{} \{} 0 or more as many as possible (same as *) (*)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
437
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
438 |/\{-| \{-n,m} \{-n,m} n to m as few as possible (*)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
439 \{-n} \{-n} n exactly (*)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
440 \{-n,} \{-n,} at least n as few as possible (*)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
441 \{-,m} \{-,m} 0 to m as few as possible (*)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
442 \{-} \{-} 0 or more as few as possible (*)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
443
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
444 *E59*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
445 |/\@>| \@> \@> 1, like matching a whole pattern (*)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
446 |/\@=| \@= \@= nothing, requires a match |/zero-width| (*)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
447 |/\@!| \@! \@! nothing, requires NO match |/zero-width| (*)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
448 |/\@<=| \@<= \@<= nothing, requires a match behind |/zero-width| (*)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
449 |/\@<!| \@<! \@<! nothing, requires NO match behind |/zero-width| (*)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
450
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
451 (*) {not in Vi}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
452
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
453
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
454 Overview of ordinary atoms. */ordinary-atom*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
455 More explanation and examples below, follow the links.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
456
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
457 ordinary atom ~
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
458 magic nomagic matches ~
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
459 |/^| ^ ^ start-of-line (at start of pattern) |/zero-width|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
460 |/\^| \^ \^ literal '^'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
461 |/\_^| \_^ \_^ start-of-line (used anywhere) |/zero-width|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
462 |/$| $ $ end-of-line (at end of pattern) |/zero-width|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
463 |/\$| \$ \$ literal '$'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
464 |/\_$| \_$ \_$ end-of-line (used anywhere) |/zero-width|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
465 |/.| . \. any single character (not an end-of-line)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
466 |/\_.| \_. \_. any single character or end-of-line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
467 |/\<| \< \< beginning of a word |/zero-width|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
468 |/\>| \> \> end of a word |/zero-width|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
469 |/\zs| \zs \zs anything, sets start of match
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
470 |/\ze| \ze \ze anything, sets end of match
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
471 |/\%^| \%^ \%^ beginning of file |/zero-width| *E71*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
472 |/\%$| \%$ \%$ end of file |/zero-width|
640
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 625
diff changeset
473 |/\%V| \%V \%V inside Visual area |/zero-width|
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
474 |/\%#| \%# \%# cursor position |/zero-width|
640
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 625
diff changeset
475 |/\%'m| \%'m \%'m mark m position |/zero-width|
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
476 |/\%l| \%23l \%23l in line 23 |/zero-width|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
477 |/\%c| \%23c \%23c in column 23 |/zero-width|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
478 |/\%v| \%23v \%23v in virtual column 23 |/zero-width|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
479
20
4ac1dce8dd5e updated for version 7.0012
vimboss
parents: 7
diff changeset
480 Character classes {not in Vi}: */character-classes*
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
481 |/\i| \i \i identifier character (see 'isident' option)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
482 |/\I| \I \I like "\i", but excluding digits
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
483 |/\k| \k \k keyword character (see 'iskeyword' option)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
484 |/\K| \K \K like "\k", but excluding digits
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
485 |/\f| \f \f file name character (see 'isfname' option)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
486 |/\F| \F \F like "\f", but excluding digits
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
487 |/\p| \p \p printable character (see 'isprint' option)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
488 |/\P| \P \P like "\p", but excluding digits
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
489 |/\s| \s \s whitespace character: <Space> and <Tab>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
490 |/\S| \S \S non-whitespace character; opposite of \s
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
491 |/\d| \d \d digit: [0-9]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
492 |/\D| \D \D non-digit: [^0-9]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
493 |/\x| \x \x hex digit: [0-9A-Fa-f]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
494 |/\X| \X \X non-hex digit: [^0-9A-Fa-f]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
495 |/\o| \o \o octal digit: [0-7]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
496 |/\O| \O \O non-octal digit: [^0-7]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
497 |/\w| \w \w word character: [0-9A-Za-z_]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
498 |/\W| \W \W non-word character: [^0-9A-Za-z_]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
499 |/\h| \h \h head of word character: [A-Za-z_]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
500 |/\H| \H \H non-head of word character: [^A-Za-z_]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
501 |/\a| \a \a alphabetic character: [A-Za-z]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
502 |/\A| \A \A non-alphabetic character: [^A-Za-z]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
503 |/\l| \l \l lowercase character: [a-z]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
504 |/\L| \L \L non-lowercase character: [^a-z]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
505 |/\u| \u \u uppercase character: [A-Z]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
506 |/\U| \U \U non-uppercase character [^A-Z]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
507 |/\_| \_x \_x where x is any of the characters above: character
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
508 class with end-of-line included
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
509 (end of character classes)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
510
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
511 |/\e| \e \e <Esc>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
512 |/\t| \t \t <Tab>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
513 |/\r| \r \r <CR>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
514 |/\b| \b \b <BS>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
515 |/\n| \n \n end-of-line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
516 |/~| ~ \~ last given substitute string
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
517 |/\1| \1 \1 same string as matched by first \(\) {not in Vi}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
518 |/\2| \2 \2 Like "\1", but uses second \(\)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
519 ...
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
520 |/\9| \9 \9 Like "\1", but uses ninth \(\)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
521 *E68*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
522 |/\z1| \z1 \z1 only for syntax highlighting, see |:syn-ext-match|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
523 ...
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
524 |/\z1| \z9 \z9 only for syntax highlighting, see |:syn-ext-match|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
525
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
526 x x a character with no special meaning matches itself
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
527
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
528 |/[]| [] \[] any character specified inside the []
4119
61bcafd8c648 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 4073
diff changeset
529 |/\%[]| \%[] \%[] a sequence of optionally matched atoms
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
530
1620
73fe8baea242 updated for version 7.2a
vimboss
parents: 1326
diff changeset
531 |/\c| \c \c ignore case, do not use the 'ignorecase' option
73fe8baea242 updated for version 7.2a
vimboss
parents: 1326
diff changeset
532 |/\C| \C \C match case, do not use the 'ignorecase' option
4444
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
533 |/\Z| \Z \Z ignore differences in Unicode "combining characters".
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
534 Useful when searching voweled Hebrew or Arabic text.
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
535
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
536 |/\m| \m \m 'magic' on for the following chars in the pattern
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
537 |/\M| \M \M 'magic' off for the following chars in the pattern
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
538 |/\v| \v \v the following chars in the pattern are "very magic"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
539 |/\V| \V \V the following chars in the pattern are "very nomagic"
4444
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
540 |/\%#=| \%#=1 \%#=1 select regexp engine |/zero-width|
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
541
2033
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
542 |/\%d| \%d \%d match specified decimal character (eg \%d123)
24
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 20
diff changeset
543 |/\%x| \%x \%x match specified hex character (eg \%x2a)
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 20
diff changeset
544 |/\%o| \%o \%o match specified octal character (eg \%o040)
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 20
diff changeset
545 |/\%u| \%u \%u match specified multibyte character (eg \%u20ac)
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 20
diff changeset
546 |/\%U| \%U \%U match specified large multibyte character (eg
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 20
diff changeset
547 \%U12345678)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
548
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
549 Example matches ~
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
550 \<\I\i* or
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
551 \<\h\w*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
552 \<[a-zA-Z_][a-zA-Z0-9_]*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
553 An identifier (e.g., in a C program).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
554
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
555 \(\.$\|\. \) A period followed by <EOL> or a space.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
556
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
557 [.!?][])"']*\($\|[ ]\) A search pattern that finds the end of a sentence,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
558 with almost the same definition as the ")" command.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
559
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
560 cat\Z Both "cat" and "càt" ("a" followed by 0x0300)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
561 Does not match "càt" (character 0x00e0), even
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
562 though it may look the same.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
563
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
564
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
565 ==============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
566 5. Multi items *pattern-multi-items*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
567
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
568 An atom can be followed by an indication of how many times the atom can be
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
569 matched and in what way. This is called a multi. See |/multi| for an
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
570 overview.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
571
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
572 */star* */\star* *E56*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
573 * (use \* when 'magic' is not set)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
574 Matches 0 or more of the preceding atom, as many as possible.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
575 Example 'nomagic' matches ~
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
576 a* a\* "", "a", "aa", "aaa", etc.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
577 .* \.\* anything, also an empty string, no end-of-line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
578 \_.* \_.\* everything up to the end of the buffer
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
579 \_.*END \_.\*END everything up to and including the last "END"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
580 in the buffer
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
581
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
582 Exception: When "*" is used at the start of the pattern or just after
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
583 "^" it matches the star character.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
584
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
585 Be aware that repeating "\_." can match a lot of text and take a long
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
586 time. For example, "\_.*END" matches all text from the current
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
587 position to the last occurrence of "END" in the file. Since the "*"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
588 will match as many as possible, this first skips over all lines until
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
589 the end of the file and then tries matching "END", backing up one
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
590 character at a time.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
591
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
592 */\+* *E57*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
593 \+ Matches 1 or more of the preceding atom, as many as possible. {not in
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
594 Vi}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
595 Example matches ~
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
596 ^.\+$ any non-empty line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
597 \s\+ white space of at least one character
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
598
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
599 */\=*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
600 \= Matches 0 or 1 of the preceding atom, as many as possible. {not in Vi}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
601 Example matches ~
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
602 foo\= "fo" and "foo"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
603
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
604 */\?*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
605 \? Just like \=. Cannot be used when searching backwards with the "?"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
606 command. {not in Vi}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
607
4444
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
608 */\{* *E58* *E60* *E554* *E870*
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
609 \{n,m} Matches n to m of the preceding atom, as many as possible
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
610 \{n} Matches n of the preceding atom
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
611 \{n,} Matches at least n of the preceding atom, as many as possible
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
612 \{,m} Matches 0 to m of the preceding atom, as many as possible
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
613 \{} Matches 0 or more of the preceding atom, as many as possible (like *)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
614 */\{-*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
615 \{-n,m} matches n to m of the preceding atom, as few as possible
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
616 \{-n} matches n of the preceding atom
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
617 \{-n,} matches at least n of the preceding atom, as few as possible
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
618 \{-,m} matches 0 to m of the preceding atom, as few as possible
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
619 \{-} matches 0 or more of the preceding atom, as few as possible
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
620 {Vi does not have any of these}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
621
168
4d9eabb1396e updated for version 7.0051
vimboss
parents: 140
diff changeset
622 n and m are positive decimal numbers or zero
1125
96cd8222a819 updated for version 7.1a
vimboss
parents: 874
diff changeset
623 *non-greedy*
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
624 If a "-" appears immediately after the "{", then a shortest match
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
625 first algorithm is used (see example below). In particular, "\{-}" is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
626 the same as "*" but uses the shortest match first algorithm. BUT: A
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
627 match that starts earlier is preferred over a shorter match: "a\{-}b"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
628 matches "aaab" in "xaaab".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
629
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
630 Example matches ~
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
631 ab\{2,3}c "abbc" or "abbbc"
1620
73fe8baea242 updated for version 7.2a
vimboss
parents: 1326
diff changeset
632 a\{5} "aaaaa"
73fe8baea242 updated for version 7.2a
vimboss
parents: 1326
diff changeset
633 ab\{2,}c "abbc", "abbbc", "abbbbc", etc.
73fe8baea242 updated for version 7.2a
vimboss
parents: 1326
diff changeset
634 ab\{,3}c "ac", "abc", "abbc" or "abbbc"
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
635 a[bc]\{3}d "abbbd", "abbcd", "acbcd", "acccd", etc.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
636 a\(bc\)\{1,2}d "abcd" or "abcbcd"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
637 a[bc]\{-}[cd] "abc" in "abcd"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
638 a[bc]*[cd] "abcd" in "abcd"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
639
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
640 The } may optionally be preceded with a backslash: \{n,m\}.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
641
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
642 */\@=*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
643 \@= Matches the preceding atom with zero width. {not in Vi}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
644 Like "(?=pattern)" in Perl.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
645 Example matches ~
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
646 foo\(bar\)\@= "foo" in "foobar"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
647 foo\(bar\)\@=foo nothing
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
648 */zero-width*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
649 When using "\@=" (or "^", "$", "\<", "\>") no characters are included
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
650 in the match. These items are only used to check if a match can be
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
651 made. This can be tricky, because a match with following items will
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
652 be done in the same position. The last example above will not match
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
653 "foobarfoo", because it tries match "foo" in the same position where
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
654 "bar" matched.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
655
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
656 Note that using "\&" works the same as using "\@=": "foo\&.." is the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
657 same as "\(foo\)\@=..". But using "\&" is easier, you don't need the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
658 braces.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
659
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
660
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
661 */\@!*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
662 \@! Matches with zero width if the preceding atom does NOT match at the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
663 current position. |/zero-width| {not in Vi}
3513
1b584a6f446c Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3224
diff changeset
664 Like "(?!pattern)" in Perl.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
665 Example matches ~
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
666 foo\(bar\)\@! any "foo" not followed by "bar"
3513
1b584a6f446c Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3224
diff changeset
667 a.\{-}p\@! "a", "ap", "app", "appp", etc. not immediately
2908
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2788
diff changeset
668 followed by a "p"
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
669 if \(\(then\)\@!.\)*$ "if " not followed by "then"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
670
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
671 Using "\@!" is tricky, because there are many places where a pattern
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
672 does not match. "a.*p\@!" will match from an "a" to the end of the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
673 line, because ".*" can match all characters in the line and the "p"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
674 doesn't match at the end of the line. "a.\{-}p\@!" will match any
3513
1b584a6f446c Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3224
diff changeset
675 "a", "ap", "app", etc. that isn't followed by a "p", because the "."
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
676 can match a "p" and "p\@!" doesn't match after that.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
677
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
678 You can't use "\@!" to look for a non-match before the matching
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
679 position: "\(foo\)\@!bar" will match "bar" in "foobar", because at the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
680 position where "bar" matches, "foo" does not match. To avoid matching
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
681 "foobar" you could use "\(foo\)\@!...bar", but that doesn't match a
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 190
diff changeset
682 bar at the start of a line. Use "\(foo\)\@<!bar".
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
683
2788
0877b8d6370e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2725
diff changeset
684 Useful example: to find "foo" in a line that does not contain "bar": >
0877b8d6370e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2725
diff changeset
685 /^\%(.*bar\)\@!.*\zsfoo
0877b8d6370e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2725
diff changeset
686 < This pattern first checks that there is not a single position in the
0877b8d6370e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2725
diff changeset
687 line where "bar" matches. If ".*bar" matches somewhere the \@! will
0877b8d6370e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2725
diff changeset
688 reject the pattern. When there is no match any "foo" will be found.
0877b8d6370e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2725
diff changeset
689 The "\zs" is to have the match start just before "foo".
0877b8d6370e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2725
diff changeset
690
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
691 */\@<=*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
692 \@<= Matches with zero width if the preceding atom matches just before what
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
693 follows. |/zero-width| {not in Vi}
3513
1b584a6f446c Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3224
diff changeset
694 Like "(?<=pattern)" in Perl, but Vim allows non-fixed-width patterns.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
695 Example matches ~
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
696 \(an\_s\+\)\@<=file "file" after "an" and white space or an
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
697 end-of-line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
698 For speed it's often much better to avoid this multi. Try using "\zs"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
699 instead |/\zs|. To match the same as the above example:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
700 an\_s\+\zsfile
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
701
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
702 "\@<=" and "\@<!" check for matches just before what follows.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
703 Theoretically these matches could start anywhere before this position.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
704 But to limit the time needed, only the line where what follows matches
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
705 is searched, and one line before that (if there is one). This should
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
706 be sufficient to match most things and not be too slow.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
707 The part of the pattern after "\@<=" and "\@<!" are checked for a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
708 match first, thus things like "\1" don't work to reference \(\) inside
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
709 the preceding atom. It does work the other way around:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
710 Example matches ~
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
711 \1\@<=,\([a-z]\+\) ",abc" in "abc,abc"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
712
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
713 */\@<!*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
714 \@<! Matches with zero width if the preceding atom does NOT match just
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
715 before what follows. Thus this matches if there is no position in the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
716 current or previous line where the atom matches such that it ends just
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
717 before what follows. |/zero-width| {not in Vi}
3513
1b584a6f446c Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3224
diff changeset
718 Like "(?<!pattern)" in Perl, but Vim allows non-fixed-width patterns.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
719 The match with the preceding atom is made to end just before the match
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
720 with what follows, thus an atom that ends in ".*" will work.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
721 Warning: This can be slow (because many positions need to be checked
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
722 for a match).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
723 Example matches ~
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
724 \(foo\)\@<!bar any "bar" that's not in "foobar"
1620
73fe8baea242 updated for version 7.2a
vimboss
parents: 1326
diff changeset
725 \(\/\/.*\)\@<!in "in" which is not after "//"
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
726
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
727 */\@>*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
728 \@> Matches the preceding atom like matching a whole pattern. {not in Vi}
1620
73fe8baea242 updated for version 7.2a
vimboss
parents: 1326
diff changeset
729 Like "(?>pattern)" in Perl.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
730 Example matches ~
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
731 \(a*\)\@>a nothing (the "a*" takes all the "a"'s, there can't be
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
732 another one following)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
733
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
734 This matches the preceding atom as if it was a pattern by itself. If
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
735 it doesn't match, there is no retry with shorter sub-matches or
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
736 anything. Observe this difference: "a*b" and "a*ab" both match
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
737 "aaab", but in the second case the "a*" matches only the first two
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
738 "a"s. "\(a*\)\@>ab" will not match "aaab", because the "a*" matches
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
739 the "aaa" (as many "a"s as possible), thus the "ab" can't match.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
740
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
741
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
742 ==============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
743 6. Ordinary atoms *pattern-atoms*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
744
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
745 An ordinary atom can be:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
746
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
747 */^*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
748 ^ At beginning of pattern or after "\|", "\(", "\%(" or "\n": matches
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
749 start-of-line; at other positions, matches literal '^'. |/zero-width|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
750 Example matches ~
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
751 ^beep( the start of the C function "beep" (probably).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
752
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
753 */\^*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
754 \^ Matches literal '^'. Can be used at any position in the pattern.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
755
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
756 */\_^*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
757 \_^ Matches start-of-line. |/zero-width| Can be used at any position in
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
758 the pattern.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
759 Example matches ~
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
760 \_s*\_^foo white space and blank lines and then "foo" at
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
761 start-of-line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
762
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
763 */$*
1620
73fe8baea242 updated for version 7.2a
vimboss
parents: 1326
diff changeset
764 $ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on):
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
765 matches end-of-line <EOL>; at other positions, matches literal '$'.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
766 |/zero-width|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
767
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
768 */\$*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
769 \$ Matches literal '$'. Can be used at any position in the pattern.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
770
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
771 */\_$*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
772 \_$ Matches end-of-line. |/zero-width| Can be used at any position in the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
773 pattern. Note that "a\_$b" never matches, since "b" cannot match an
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
774 end-of-line. Use "a\nb" instead |/\n|.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
775 Example matches ~
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
776 foo\_$\_s* "foo" at end-of-line and following white space and
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
777 blank lines
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
778
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
779 . (with 'nomagic': \.) */.* */\.*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
780 Matches any single character, but not an end-of-line.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
781
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
782 */\_.*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
783 \_. Matches any single character or end-of-line.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
784 Careful: "\_.*" matches all text to the end of the buffer!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
785
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
786 */\<*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
787 \< Matches the beginning of a word: The next char is the first char of a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
788 word. The 'iskeyword' option specifies what is a word character.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
789 |/zero-width|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
790
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
791 */\>*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
792 \> Matches the end of a word: The previous char is the last char of a
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 190
diff changeset
793 word. The 'iskeyword' option specifies what is a word character.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
794 |/zero-width|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
795
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
796 */\zs*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
797 \zs Matches at any position, and sets the start of the match there: The
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
798 next char is the first char of the whole match. |/zero-width|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
799 Example: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
800 /^\s*\zsif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
801 < matches an "if" at the start of a line, ignoring white space.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
802 Can be used multiple times, the last one encountered in a matching
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 190
diff changeset
803 branch is used. Example: >
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
804 /\(.\{-}\zsFab\)\{3}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
805 < Finds the third occurrence of "Fab".
2570
71b56b4e7785 Make the references to features in the help more consistent. (Sylvain Hitier)
Bram Moolenaar <bram@vim.org>
parents: 2561
diff changeset
806 {not in Vi} {not available when compiled without the |+syntax| feature}
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
807 */\ze*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
808 \ze Matches at any position, and sets the end of the match there: The
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
809 previous char is the last char of the whole match. |/zero-width|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
810 Can be used multiple times, the last one encountered in a matching
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
811 branch is used.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
812 Example: "end\ze\(if\|for\)" matches the "end" in "endif" and
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
813 "endfor".
2570
71b56b4e7785 Make the references to features in the help more consistent. (Sylvain Hitier)
Bram Moolenaar <bram@vim.org>
parents: 2561
diff changeset
814 {not in Vi} {not available when compiled without the |+syntax| feature}
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
815
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
816 */\%^* *start-of-file*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
817 \%^ Matches start of the file. When matching with a string, matches the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
818 start of the string. {not in Vi}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
819 For example, to find the first "VIM" in a file: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
820 /\%^\_.\{-}\zsVIM
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
821 <
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
822 */\%$* *end-of-file*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
823 \%$ Matches end of the file. When matching with a string, matches the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
824 end of the string. {not in Vi}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
825 Note that this does NOT find the last "VIM" in a file: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
826 /VIM\_.\{-}\%$
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
827 < It will find the next VIM, because the part after it will always
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
828 match. This one will find the last "VIM" in the file: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
829 /VIM\ze\(\(VIM\)\@!\_.\)*\%$
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
830 < This uses |/\@!| to ascertain that "VIM" does NOT match in any
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
831 position after the first "VIM".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
832 Searching from the end of the file backwards is easier!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
833
640
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 625
diff changeset
834 */\%V*
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 625
diff changeset
835 \%V Match inside the Visual area. When Visual mode has already been
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 625
diff changeset
836 stopped match in the area that |gv| would reselect.
2033
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
837 This is a |/zero-width| match. To make sure the whole pattern is
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
838 inside the Visual area put it at the start and end of the pattern,
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
839 e.g.: >
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
840 /\%Vfoo.*bar\%V
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
841 < Only works for the current buffer.
640
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 625
diff changeset
842
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
843 */\%#* *cursor-position*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
844 \%# Matches with the cursor position. Only works when matching in a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
845 buffer displayed in a window. {not in Vi}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
846 WARNING: When the cursor is moved after the pattern was used, the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
847 result becomes invalid. Vim doesn't automatically update the matches.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
848 This is especially relevant for syntax highlighting and 'hlsearch'.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
849 In other words: When the cursor moves the display isn't updated for
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
850 this change. An update is done for lines which are changed (the whole
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
851 line is updated) or when using the |CTRL-L| command (the whole screen
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
852 is updated). Example, to highlight the word under the cursor: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
853 /\k*\%#\k*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
854 < When 'hlsearch' is set and you move the cursor around and make changes
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
855 this will clearly show when the match is updated or not.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
856
640
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 625
diff changeset
857 */\%'m* */\%<'m* */\%>'m*
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 625
diff changeset
858 \%'m Matches with the position of mark m.
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 625
diff changeset
859 \%<'m Matches before the position of mark m.
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 625
diff changeset
860 \%>'m Matches after the position of mark m.
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 625
diff changeset
861 Example, to highlight the text from mark 's to 'e: >
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 625
diff changeset
862 /.\%>'s.*\%<'e..
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 625
diff changeset
863 < Note that two dots are required to include mark 'e in the match. That
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 625
diff changeset
864 is because "\%<'e" matches at the character before the 'e mark, and
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 625
diff changeset
865 since it's a |/zero-width| match it doesn't include that character.
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 625
diff changeset
866 {not in Vi}
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 625
diff changeset
867 WARNING: When the mark is moved after the pattern was used, the result
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 625
diff changeset
868 becomes invalid. Vim doesn't automatically update the matches.
651
bc95c6c4bac1 updated for version 7.0191
vimboss
parents: 640
diff changeset
869 Similar to moving the cursor for "\%#" |/\%#|.
640
8a5a95f7ef2a updated for version 7.0185
vimboss
parents: 625
diff changeset
870
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
871 */\%l* */\%>l* */\%<l*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
872 \%23l Matches in a specific line.
625
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 523
diff changeset
873 \%<23l Matches above a specific line (lower line number).
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 523
diff changeset
874 \%>23l Matches below a specific line (higher line number).
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
875 These three can be used to match specific lines in a buffer. The "23"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
876 can be any line number. The first line is 1. {not in Vi}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
877 WARNING: When inserting or deleting lines Vim does not automatically
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
878 update the matches. This means Syntax highlighting quickly becomes
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
879 wrong.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
880 Example, to highlight the line where the cursor currently is: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
881 :exe '/\%' . line(".") . 'l.*'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
882 < When 'hlsearch' is set and you move the cursor around and make changes
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
883 this will clearly show when the match is updated or not.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
884
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
885 */\%c* */\%>c* */\%<c*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
886 \%23c Matches in a specific column.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
887 \%<23c Matches before a specific column.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
888 \%>23c Matches after a specific column.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
889 These three can be used to match specific columns in a buffer or
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
890 string. The "23" can be any column number. The first column is 1.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
891 Actually, the column is the byte number (thus it's not exactly right
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
892 for multi-byte characters). {not in Vi}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
893 WARNING: When inserting or deleting text Vim does not automatically
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
894 update the matches. This means Syntax highlighting quickly becomes
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
895 wrong.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
896 Example, to highlight the column where the cursor currently is: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
897 :exe '/\%' . col(".") . 'c'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
898 < When 'hlsearch' is set and you move the cursor around and make changes
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
899 this will clearly show when the match is updated or not.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
900 Example for matching a single byte in column 44: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
901 /\%>43c.\%<46c
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
902 < Note that "\%<46c" matches in column 45 when the "." matches a byte in
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
903 column 44.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
904 */\%v* */\%>v* */\%<v*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
905 \%23v Matches in a specific virtual column.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
906 \%<23v Matches before a specific virtual column.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
907 \%>23v Matches after a specific virtual column.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
908 These three can be used to match specific virtual columns in a buffer
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
909 or string. When not matching with a buffer in a window, the option
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
910 values of the current window are used (e.g., 'tabstop').
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
911 The "23" can be any column number. The first column is 1.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
912 Note that some virtual column positions will never match, because they
1270
d9d524594fe5 updated for version 7.1
vimboss
parents: 1221
diff changeset
913 are halfway through a tab or other character that occupies more than
d9d524594fe5 updated for version 7.1
vimboss
parents: 1221
diff changeset
914 one screen character. {not in Vi}
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
915 WARNING: When inserting or deleting text Vim does not automatically
283
a2ff714de3db updated for version 7.0075
vimboss
parents: 237
diff changeset
916 update highlighted matches. This means Syntax highlighting quickly
a2ff714de3db updated for version 7.0075
vimboss
parents: 237
diff changeset
917 becomes wrong.
1620
73fe8baea242 updated for version 7.2a
vimboss
parents: 1326
diff changeset
918 Example, to highlight all the characters after virtual column 72: >
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
919 /\%>72v.*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
920 < When 'hlsearch' is set and you move the cursor around and make changes
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
921 this will clearly show when the match is updated or not.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
922 To match the text up to column 17: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
923 /.*\%17v
2033
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
924 < Column 17 is included, because that's where the "\%17v" matches,
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
925 even though this is a |/zero-width| match. Adding a dot to match the
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
926 next character has the same result: >
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
927 /.*\%17v.
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
928 < This command does the same thing, but also matches when there is no
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
929 character in column 17: >
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
930 /.*\%<18v.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
931 <
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
932
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
933 Character classes: {not in Vi}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
934 \i identifier character (see 'isident' option) */\i*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
935 \I like "\i", but excluding digits */\I*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
936 \k keyword character (see 'iskeyword' option) */\k*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
937 \K like "\k", but excluding digits */\K*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
938 \f file name character (see 'isfname' option) */\f*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
939 \F like "\f", but excluding digits */\F*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
940 \p printable character (see 'isprint' option) */\p*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
941 \P like "\p", but excluding digits */\P*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
942
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
943 NOTE: the above also work for multi-byte characters. The ones below only
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
944 match ASCII characters, as indicated by the range.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
945
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
946 *whitespace* *white-space*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
947 \s whitespace character: <Space> and <Tab> */\s*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
948 \S non-whitespace character; opposite of \s */\S*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
949 \d digit: [0-9] */\d*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
950 \D non-digit: [^0-9] */\D*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
951 \x hex digit: [0-9A-Fa-f] */\x*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
952 \X non-hex digit: [^0-9A-Fa-f] */\X*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
953 \o octal digit: [0-7] */\o*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
954 \O non-octal digit: [^0-7] */\O*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
955 \w word character: [0-9A-Za-z_] */\w*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
956 \W non-word character: [^0-9A-Za-z_] */\W*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
957 \h head of word character: [A-Za-z_] */\h*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
958 \H non-head of word character: [^A-Za-z_] */\H*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
959 \a alphabetic character: [A-Za-z] */\a*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
960 \A non-alphabetic character: [^A-Za-z] */\A*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
961 \l lowercase character: [a-z] */\l*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
962 \L non-lowercase character: [^a-z] */\L*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
963 \u uppercase character: [A-Z] */\u*
3224
8b8ef1fed009 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3153
diff changeset
964 \U non-uppercase character: [^A-Z] */\U*
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
965
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
966 NOTE: Using the atom is faster than the [] form.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
967
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
968 NOTE: 'ignorecase', "\c" and "\C" are not used by character classes.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
969
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
970 */\_* *E63* */\_i* */\_I* */\_k* */\_K* */\_f* */\_F*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
971 */\_p* */\_P* */\_s* */\_S* */\_d* */\_D* */\_x* */\_X*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
972 */\_o* */\_O* */\_w* */\_W* */\_h* */\_H* */\_a* */\_A*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
973 */\_l* */\_L* */\_u* */\_U*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
974 \_x Where "x" is any of the characters above: The character class with
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
975 end-of-line added
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
976 (end of character classes)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
977
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
978 \e matches <Esc> */\e*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
979 \t matches <Tab> */\t*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
980 \r matches <CR> */\r*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
981 \b matches <BS> */\b*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
982 \n matches an end-of-line */\n*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
983 When matching in a string instead of buffer text a literal newline
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
984 character is matched.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
985
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
986 ~ matches the last given substitute string */~* */\~*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
987
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
988 \(\) A pattern enclosed by escaped parentheses. */\(* */\(\)* */\)*
4444
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
989 E.g., "\(^a\)" matches 'a' at the start of a line.
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4339
diff changeset
990 *E51* *E54* *E55* *E872* *E873*
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
991
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
992 \1 Matches the same string that was matched by */\1* *E65*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
993 the first sub-expression in \( and \). {not in Vi}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
994 Example: "\([a-z]\).\1" matches "ata", "ehe", "tot", etc.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
995 \2 Like "\1", but uses second sub-expression, */\2*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
996 ... */\3*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
997 \9 Like "\1", but uses ninth sub-expression. */\9*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
998 Note: The numbering of groups is done based on which "\(" comes first
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
999 in the pattern (going left to right), NOT based on what is matched
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1000 first.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1001
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1002 \%(\) A pattern enclosed by escaped parentheses. */\%(\)* */\%(* *E53*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1003 Just like \(\), but without counting it as a sub-expression. This
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1004 allows using more groups and it's a little bit faster.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1005 {not in Vi}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1006
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1007 x A single character, with no special meaning, matches itself
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1008
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1009 */\* */\\*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1010 \x A backslash followed by a single character, with no special meaning,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1011 is reserved for future expansions
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1012
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1013 [] (with 'nomagic': \[]) */[]* */\[]* */\_[]* */collection*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1014 \_[]
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 190
diff changeset
1015 A collection. This is a sequence of characters enclosed in brackets.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1016 It matches any single character in the collection.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1017 Example matches ~
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1018 [xyz] any 'x', 'y' or 'z'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1019 [a-zA-Z]$ any alphabetic character at the end of a line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1020 \c[a-z]$ same
4073
e362db8b2d7b Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3513
diff changeset
1021 [А-яЁё] Russian alphabet (with utf-8 and cp1251)
e362db8b2d7b Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3513
diff changeset
1022
1125
96cd8222a819 updated for version 7.1a
vimboss
parents: 874
diff changeset
1023 */[\n]*
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1024 With "\_" prepended the collection also includes the end-of-line.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1025 The same can be done by including "\n" in the collection. The
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1026 end-of-line is also matched when the collection starts with "^"! Thus
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1027 "\_[^ab]" matches the end-of-line and any character but "a" and "b".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1028 This makes it Vi compatible: Without the "\_" or "\n" the collection
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1029 does not match an end-of-line.
484
f012c4ed8c38 updated for version 7.0132
vimboss
parents: 481
diff changeset
1030 *E769*
481
66080ac5dab7 updated for version 7.0130
vimboss
parents: 283
diff changeset
1031 When the ']' is not there Vim will not give an error message but
484
f012c4ed8c38 updated for version 7.0132
vimboss
parents: 481
diff changeset
1032 assume no collection is used. Useful to search for '['. However, you
f012c4ed8c38 updated for version 7.0132
vimboss
parents: 481
diff changeset
1033 do get E769 for internal searching.
481
66080ac5dab7 updated for version 7.0130
vimboss
parents: 283
diff changeset
1034
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1035 If the sequence begins with "^", it matches any single character NOT
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1036 in the collection: "[^xyz]" matches anything but 'x', 'y' and 'z'.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1037 - If two characters in the sequence are separated by '-', this is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1038 shorthand for the full list of ASCII characters between them. E.g.,
2290
22529abcd646 Fixed ":s" message. Docs updates.
Bram Moolenaar <bram@vim.org>
parents: 2154
diff changeset
1039 "[0-9]" matches any decimal digit. Non-ASCII characters can be
22529abcd646 Fixed ":s" message. Docs updates.
Bram Moolenaar <bram@vim.org>
parents: 2154
diff changeset
1040 used, but the character values must not be more than 256 apart.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1041 - A character class expression is evaluated to the set of characters
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1042 belonging to that character class. The following character classes
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1043 are supported:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1044 Name Contents ~
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1045 *[:alnum:]* [:alnum:] letters and digits
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1046 *[:alpha:]* [:alpha:] letters
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1047 *[:blank:]* [:blank:] space and tab characters
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1048 *[:cntrl:]* [:cntrl:] control characters
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1049 *[:digit:]* [:digit:] decimal digits
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1050 *[:graph:]* [:graph:] printable characters excluding space
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1051 *[:lower:]* [:lower:] lowercase letters (all letters when
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1052 'ignorecase' is used)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1053 *[:print:]* [:print:] printable characters including space
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1054 *[:punct:]* [:punct:] punctuation characters
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1055 *[:space:]* [:space:] whitespace characters
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1056 *[:upper:]* [:upper:] uppercase letters (all letters when
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1057 'ignorecase' is used)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1058 *[:xdigit:]* [:xdigit:] hexadecimal digits
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1059 *[:return:]* [:return:] the <CR> character
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1060 *[:tab:]* [:tab:] the <Tab> character
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1061 *[:escape:]* [:escape:] the <Esc> character
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1062 *[:backspace:]* [:backspace:] the <BS> character
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1063 The brackets in character class expressions are additional to the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1064 brackets delimiting a collection. For example, the following is a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1065 plausible pattern for a UNIX filename: "[-./[:alnum:]_~]\+" That is,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1066 a list of at least one character, each of which is either '-', '.',
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1067 '/', alphabetic, numeric, '_' or '~'.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1068 These items only work for 8-bit characters.
168
4d9eabb1396e updated for version 7.0051
vimboss
parents: 140
diff changeset
1069 */[[=* *[==]*
4d9eabb1396e updated for version 7.0051
vimboss
parents: 140
diff changeset
1070 - An equivalence class. This means that characters are matched that
2974
59130cd78dfc updated for version 7.3.259
Bram Moolenaar <bram@vim.org>
parents: 2908
diff changeset
1071 have almost the same meaning, e.g., when ignoring accents. This
59130cd78dfc updated for version 7.3.259
Bram Moolenaar <bram@vim.org>
parents: 2908
diff changeset
1072 only works for Unicode, latin1 and latin9. The form is:
856
8cd729851562 updated for version 7.0g
vimboss
parents: 853
diff changeset
1073 [=a=]
168
4d9eabb1396e updated for version 7.0051
vimboss
parents: 140
diff changeset
1074 */[[.* *[..]*
4d9eabb1396e updated for version 7.0051
vimboss
parents: 140
diff changeset
1075 - A collation element. This currently simply accepts a single
4d9eabb1396e updated for version 7.0051
vimboss
parents: 140
diff changeset
1076 character in the form:
856
8cd729851562 updated for version 7.0g
vimboss
parents: 853
diff changeset
1077 [.a.]
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1078 */\]*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1079 - To include a literal ']', '^', '-' or '\' in the collection, put a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1080 backslash before it: "[xyz\]]", "[\^xyz]", "[xy\-z]" and "[xyz\\]".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1081 (Note: POSIX does not support the use of a backslash this way). For
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1082 ']' you can also make it the first character (following a possible
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1083 "^"): "[]xyz]" or "[^]xyz]" {not in Vi}.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1084 For '-' you can also make it the first or last character: "[-xyz]",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1085 "[^-xyz]" or "[xyz-]". For '\' you can also let it be followed by
2290
22529abcd646 Fixed ":s" message. Docs updates.
Bram Moolenaar <bram@vim.org>
parents: 2154
diff changeset
1086 any character that's not in "^]-\bdertnoUux". "[\xyz]" matches '\',
22529abcd646 Fixed ":s" message. Docs updates.
Bram Moolenaar <bram@vim.org>
parents: 2154
diff changeset
1087 'x', 'y' and 'z'. It's better to use "\\" though, future expansions
22529abcd646 Fixed ":s" message. Docs updates.
Bram Moolenaar <bram@vim.org>
parents: 2154
diff changeset
1088 may use other characters after '\'.
4339
22fa3049e934 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 4119
diff changeset
1089 - Omitting the trailing ] is not considered an error. "[]" works like
22fa3049e934 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 4119
diff changeset
1090 "[]]", it matches the ']' character.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1091 - The following translations are accepted when the 'l' flag is not
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1092 included in 'cpoptions' {not in Vi}:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1093 \e <Esc>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1094 \t <Tab>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1095 \r <CR> (NOT end-of-line!)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1096 \b <BS>
1125
96cd8222a819 updated for version 7.1a
vimboss
parents: 874
diff changeset
1097 \n line break, see above |/[\n]|
24
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 20
diff changeset
1098 \d123 decimal number of character
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 20
diff changeset
1099 \o40 octal number of character up to 0377
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 20
diff changeset
1100 \x20 hexadecimal number of character up to 0xff
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 20
diff changeset
1101 \u20AC hex. number of multibyte character up to 0xffff
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 20
diff changeset
1102 \U1234 hex. number of multibyte character up to 0xffffffff
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1103 NOTE: The other backslash codes mentioned above do not work inside
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1104 []!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1105 - Matching with a collection can be slow, because each character in
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1106 the text has to be compared with each character in the collection.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1107 Use one of the other atoms above when possible. Example: "\d" is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1108 much faster than "[0-9]" and matches the same characters.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1109
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1110 */\%[]* *E69* *E70* *E369*
24
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 20
diff changeset
1111 \%[] A sequence of optionally matched atoms. This always matches.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1112 It matches as much of the list of atoms it contains as possible. Thus
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1113 it stops at the first atom that doesn't match. For example: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1114 /r\%[ead]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1115 < matches "r", "re", "rea" or "read". The longest that matches is used.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1116 To match the Ex command "function", where "fu" is required and
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1117 "nction" is optional, this would work: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1118 /\<fu\%[nction]\>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1119 < The end-of-word atom "\>" is used to avoid matching "fu" in "full".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1120 It gets more complicated when the atoms are not ordinary characters.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1121 You don't often have to use it, but it is possible. Example: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1122 /\<r\%[[eo]ad]\>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1123 < Matches the words "r", "re", "ro", "rea", "roa", "read" and "road".
1125
96cd8222a819 updated for version 7.1a
vimboss
parents: 874
diff changeset
1124 There can be no \(\), \%(\) or \z(\) items inside the [] and \%[] does
96cd8222a819 updated for version 7.1a
vimboss
parents: 874
diff changeset
1125 not nest.
1620
73fe8baea242 updated for version 7.2a
vimboss
parents: 1326
diff changeset
1126 To include a "[" use "[[]" and for "]" use []]", e.g.,: >
73fe8baea242 updated for version 7.2a
vimboss
parents: 1326
diff changeset
1127 /index\%[[[]0[]]]
73fe8baea242 updated for version 7.2a
vimboss
parents: 1326
diff changeset
1128 < matches "index" "index[", "index[0" and "index[0]".
2570
71b56b4e7785 Make the references to features in the help more consistent. (Sylvain Hitier)
Bram Moolenaar <bram@vim.org>
parents: 2561
diff changeset
1129 {not available when compiled without the |+syntax| feature}
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1130
140
8ecb0db93e9a updated for version 7.0045
vimboss
parents: 133
diff changeset
1131 */\%d* */\%x* */\%o* */\%u* */\%U* *E678*
24
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 20
diff changeset
1132
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 20
diff changeset
1133 \%d123 Matches the character specified with a decimal number. Must be
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 20
diff changeset
1134 followed by a non-digit.
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 20
diff changeset
1135 \%o40 Matches the character specified with an octal number up to 0377.
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 20
diff changeset
1136 Numbers below 040 must be followed by a non-octal digit or a non-digit.
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 20
diff changeset
1137 \%x2a Matches the character specified with up to two hexadecimal characters.
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 20
diff changeset
1138 \%u20AC Matches the character specified with up to four hexadecimal
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 20
diff changeset
1139 characters.
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 20
diff changeset
1140 \%U1234abcd Matches the character specified with up to eight hexadecimal
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 20
diff changeset
1141 characters.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1142
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1143 ==============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1144 7. Ignoring case in a pattern */ignorecase*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1145
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1146 If the 'ignorecase' option is on, the case of normal letters is ignored.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1147 'smartcase' can be set to ignore case when the pattern contains lowercase
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1148 letters only.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1149 */\c* */\C*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1150 When "\c" appears anywhere in the pattern, the whole pattern is handled like
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1151 'ignorecase' is on. The actual value of 'ignorecase' and 'smartcase' is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1152 ignored. "\C" does the opposite: Force matching case for the whole pattern.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1153 {only Vim supports \c and \C}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1154 Note that 'ignorecase', "\c" and "\C" are not used for the character classes.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1155
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1156 Examples:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1157 pattern 'ignorecase' 'smartcase' matches ~
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1158 foo off - foo
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1159 foo on - foo Foo FOO
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1160 Foo on off foo Foo FOO
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1161 Foo on on Foo
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1162 \cfoo - - foo Foo FOO
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1163 foo\C - - foo
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1164
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1165 Technical detail: *NL-used-for-Nul*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1166 <Nul> characters in the file are stored as <NL> in memory. In the display
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1167 they are shown as "^@". The translation is done when reading and writing
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1168 files. To match a <Nul> with a search pattern you can just enter CTRL-@ or
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1169 "CTRL-V 000". This is probably just what you expect. Internally the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1170 character is replaced with a <NL> in the search pattern. What is unusual is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1171 that typing CTRL-V CTRL-J also inserts a <NL>, thus also searches for a <Nul>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1172 in the file. {Vi cannot handle <Nul> characters in the file at all}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1173
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1174 *CR-used-for-NL*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1175 When 'fileformat' is "mac", <NL> characters in the file are stored as <CR>
1698
f4f8014d516e updated for version 7.2c-000
vimboss
parents: 1668
diff changeset
1176 characters internally. In the text they are shown as "^J". Otherwise this
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1177 works similar to the usage of <NL> for a <Nul>.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1178
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1179 When working with expression evaluation, a <NL> character in the pattern
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1180 matches a <NL> in the string. The use of "\n" (backslash n) to match a <NL>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1181 doesn't work there, it only works to match text in the buffer.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1182
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1183 *pattern-multi-byte*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1184 Patterns will also work with multi-byte characters, mostly as you would
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1185 expect. But invalid bytes may cause trouble, a pattern with an invalid byte
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1186 will probably never match.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1187
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1188 ==============================================================================
714
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 699
diff changeset
1189 8. Composing characters *patterns-composing*
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 699
diff changeset
1190
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 699
diff changeset
1191 */\Z*
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 699
diff changeset
1192 When "\Z" appears anywhere in the pattern, composing characters are ignored.
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 699
diff changeset
1193 Thus only the base characters need to match, the composing characters may be
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 699
diff changeset
1194 different and the number of composing characters may differ. Only relevant
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 699
diff changeset
1195 when 'encoding' is "utf-8".
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 699
diff changeset
1196
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 699
diff changeset
1197 When a composing character appears at the start of the pattern of after an
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 699
diff changeset
1198 item that doesn't include the composing character, a match is found at any
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 699
diff changeset
1199 character that includes this composing character.
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 699
diff changeset
1200
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 699
diff changeset
1201 When using a dot and a composing character, this works the same as the
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 699
diff changeset
1202 composing character by itself, except that it doesn't matter what comes before
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 699
diff changeset
1203 this.
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 699
diff changeset
1204
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 699
diff changeset
1205 The order of composing characters matters, even though changing the order
1125
96cd8222a819 updated for version 7.1a
vimboss
parents: 874
diff changeset
1206 doesn't change what a character looks like. This may change in the future.
714
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 699
diff changeset
1207
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 699
diff changeset
1208 ==============================================================================
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 699
diff changeset
1209 9. Compare with Perl patterns *perl-patterns*
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1210
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1211 Vim's regexes are most similar to Perl's, in terms of what you can do. The
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1212 difference between them is mostly just notation; here's a summary of where
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1213 they differ:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1214
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1215 Capability in Vimspeak in Perlspeak ~
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1216 ----------------------------------------------------------------
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1217 force case insensitivity \c (?i)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1218 force case sensitivity \C (?-i)
714
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 699
diff changeset
1219 backref-less grouping \%(atom\) (?:atom)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1220 conservative quantifiers \{-n,m} *?, +?, ??, {}?
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1221 0-width match atom\@= (?=atom)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1222 0-width non-match atom\@! (?!atom)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1223 0-width preceding match atom\@<= (?<=atom)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1224 0-width preceding non-match atom\@<! (?<!atom)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1225 match without retry atom\@> (?>atom)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1226
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1227 Vim and Perl handle newline characters inside a string a bit differently:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1228
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1229 In Perl, ^ and $ only match at the very beginning and end of the text,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1230 by default, but you can set the 'm' flag, which lets them match at
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1231 embedded newlines as well. You can also set the 's' flag, which causes
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1232 a . to match newlines as well. (Both these flags can be changed inside
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1233 a pattern using the same syntax used for the i flag above, BTW.)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1234
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1235 On the other hand, Vim's ^ and $ always match at embedded newlines, and
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1236 you get two separate atoms, \%^ and \%$, which only match at the very
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1237 start and end of the text, respectively. Vim solves the second problem
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1238 by giving you the \_ "modifier": put it in front of a . or a character
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1239 class, and they will match newlines as well.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1240
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1241 Finally, these constructs are unique to Perl:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1242 - execution of arbitrary code in the regex: (?{perl code})
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1243 - conditional expressions: (?(condition)true-expr|false-expr)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1244
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1245 ...and these are unique to Vim:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1246 - changing the magic-ness of a pattern: \v \V \m \M
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1247 (very useful for avoiding backslashitis)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1248 - sequence of optionally matching atoms: \%[atoms]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1249 - \& (which is to \| what "and" is to "or"; it forces several branches
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1250 to match at one spot)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1251 - matching lines/columns by number: \%5l \%5c \%5v
714
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 699
diff changeset
1252 - setting the start and end of the match: \zs \ze
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1253
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1254 ==============================================================================
714
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 699
diff changeset
1255 10. Highlighting matches *match-highlight*
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1256
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1257 *:mat* *:match*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1258 :mat[ch] {group} /{pattern}/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1259 Define a pattern to highlight in the current window. It will
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1260 be highlighted with {group}. Example: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1261 :highlight MyGroup ctermbg=green guibg=green
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1262 :match MyGroup /TODO/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1263 < Instead of // any character can be used to mark the start and
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1264 end of the {pattern}. Watch out for using special characters,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1265 such as '"' and '|'.
699
2af8de31a3a8 updated for version 7.0211
vimboss
parents: 667
diff changeset
1266
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1267 {group} must exist at the moment this command is executed.
699
2af8de31a3a8 updated for version 7.0211
vimboss
parents: 667
diff changeset
1268
2af8de31a3a8 updated for version 7.0211
vimboss
parents: 667
diff changeset
1269 The {group} highlighting still applies when a character is
1326
22886f3d882d updated for version 7.1-040
vimboss
parents: 1270
diff changeset
1270 to be highlighted for 'hlsearch', as the highlighting for
22886f3d882d updated for version 7.1-040
vimboss
parents: 1270
diff changeset
1271 matches is given higher priority than that of 'hlsearch'.
22886f3d882d updated for version 7.1-040
vimboss
parents: 1270
diff changeset
1272 Syntax highlighting (see 'syntax') is also overruled by
22886f3d882d updated for version 7.1-040
vimboss
parents: 1270
diff changeset
1273 matches.
699
2af8de31a3a8 updated for version 7.0211
vimboss
parents: 667
diff changeset
1274
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1275 Note that highlighting the last used search pattern with
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1276 'hlsearch' is used in all windows, while the pattern defined
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1277 with ":match" only exists in the current window. It is kept
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1278 when switching to another buffer.
699
2af8de31a3a8 updated for version 7.0211
vimboss
parents: 667
diff changeset
1279
2af8de31a3a8 updated for version 7.0211
vimboss
parents: 667
diff changeset
1280 'ignorecase' does not apply, use |/\c| in the pattern to
2af8de31a3a8 updated for version 7.0211
vimboss
parents: 667
diff changeset
1281 ignore case. Otherwise case is not ignored.
2af8de31a3a8 updated for version 7.0211
vimboss
parents: 667
diff changeset
1282
1620
73fe8baea242 updated for version 7.2a
vimboss
parents: 1326
diff changeset
1283 'redrawtime' defines the maximum time searched for pattern
73fe8baea242 updated for version 7.2a
vimboss
parents: 1326
diff changeset
1284 matches.
73fe8baea242 updated for version 7.2a
vimboss
parents: 1326
diff changeset
1285
1125
96cd8222a819 updated for version 7.1a
vimboss
parents: 874
diff changeset
1286 When matching end-of-line and Vim redraws only part of the
96cd8222a819 updated for version 7.1a
vimboss
parents: 874
diff changeset
1287 display you may get unexpected results. That is because Vim
96cd8222a819 updated for version 7.1a
vimboss
parents: 874
diff changeset
1288 looks for a match in the line where redrawing starts.
96cd8222a819 updated for version 7.1a
vimboss
parents: 874
diff changeset
1289
1620
73fe8baea242 updated for version 7.2a
vimboss
parents: 1326
diff changeset
1290 Also see |matcharg()| and |getmatches()|. The former returns
1326
22886f3d882d updated for version 7.1-040
vimboss
parents: 1270
diff changeset
1291 the highlight group and pattern of a previous |:match|
22886f3d882d updated for version 7.1-040
vimboss
parents: 1270
diff changeset
1292 command. The latter returns a list with highlight groups and
22886f3d882d updated for version 7.1-040
vimboss
parents: 1270
diff changeset
1293 patterns defined by both |matchadd()| and |:match|.
22886f3d882d updated for version 7.1-040
vimboss
parents: 1270
diff changeset
1294
22886f3d882d updated for version 7.1-040
vimboss
parents: 1270
diff changeset
1295 Highlighting matches using |:match| are limited to three
22886f3d882d updated for version 7.1-040
vimboss
parents: 1270
diff changeset
1296 matches (aside from |:match|, |:2match| and |:3match|are
22886f3d882d updated for version 7.1-040
vimboss
parents: 1270
diff changeset
1297 available). |matchadd()| does not have this limitation and in
22886f3d882d updated for version 7.1-040
vimboss
parents: 1270
diff changeset
1298 addition makes it possible to prioritize matches.
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 810
diff changeset
1299
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1300 Another example, which highlights all characters in virtual
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1301 column 72 and more: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1302 :highlight rightMargin term=bold ctermfg=blue guifg=blue
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1303 :match rightMargin /.\%>72v/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1304 < To highlight all character that are in virtual column 7: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1305 :highlight col8 ctermbg=grey guibg=grey
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1306 :match col8 /\%<8v.\%>7v/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1307 < Note the use of two items to also match a character that
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1308 occupies more than one virtual column, such as a TAB.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1309
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1310 :mat[ch]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1311 :mat[ch] none
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1312 Clear a previously defined match pattern.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1313
699
2af8de31a3a8 updated for version 7.0211
vimboss
parents: 667
diff changeset
1314
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 810
diff changeset
1315 :2mat[ch] {group} /{pattern}/ *:2match*
699
2af8de31a3a8 updated for version 7.0211
vimboss
parents: 667
diff changeset
1316 :2mat[ch]
2af8de31a3a8 updated for version 7.0211
vimboss
parents: 667
diff changeset
1317 :2mat[ch] none
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 810
diff changeset
1318 :3mat[ch] {group} /{pattern}/ *:3match*
699
2af8de31a3a8 updated for version 7.0211
vimboss
parents: 667
diff changeset
1319 :3mat[ch]
2af8de31a3a8 updated for version 7.0211
vimboss
parents: 667
diff changeset
1320 :3mat[ch] none
2af8de31a3a8 updated for version 7.0211
vimboss
parents: 667
diff changeset
1321 Just like |:match| above, but set a separate match. Thus
2af8de31a3a8 updated for version 7.0211
vimboss
parents: 667
diff changeset
1322 there can be three matches active at the same time. The match
2af8de31a3a8 updated for version 7.0211
vimboss
parents: 667
diff changeset
1323 with the lowest number has priority if several match at the
2af8de31a3a8 updated for version 7.0211
vimboss
parents: 667
diff changeset
1324 same position.
2af8de31a3a8 updated for version 7.0211
vimboss
parents: 667
diff changeset
1325 The ":3match" command is used by the |matchparen| plugin. You
2af8de31a3a8 updated for version 7.0211
vimboss
parents: 667
diff changeset
1326 are suggested to use ":match" for manual matching and
2af8de31a3a8 updated for version 7.0211
vimboss
parents: 667
diff changeset
1327 ":2match" for another plugin.
2af8de31a3a8 updated for version 7.0211
vimboss
parents: 667
diff changeset
1328
2af8de31a3a8 updated for version 7.0211
vimboss
parents: 667
diff changeset
1329
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1330 vim:tw=78:ts=8:ft=help:norl: