File: vim_ex_autocmd.vim

package info (click to toggle)
vim 2%3A9.1.2103-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 93,456 kB
  • sloc: ansic: 433,730; cpp: 6,399; makefile: 4,597; sh: 2,397; java: 2,312; xml: 2,099; python: 1,595; perl: 1,419; awk: 730; lisp: 501; cs: 458; objc: 369; sed: 8; csh: 6; haskell: 1
file content (257 lines) | stat: -rw-r--r-- 6,923 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
" Vim :autocmd command
" VIM_TEST_SETUP hi link vimAutoCmdGroup Todo
" VIM_TEST_SETUP hi link vimUserAutoEvent Title


" Define

autocmd foogroup BufRead            *.txt echo "Foo" | echo "Bar"
autocmd          BufRead            *.txt echo "Foo" | echo "Bar"
autocmd          BufRead,BufNewFile *.txt echo "Foo" | echo "Bar"
autocmd          User FooEvent            echo "Foo" | echo "Bar"

autocmd foogroup BufRead            *.txt ++once echo "Foo" | echo "Bar"
autocmd          BufRead            *.txt ++once echo "Foo" | echo "Bar"
autocmd          BufRead,BufNewFile *.txt ++once echo "Foo" | echo "Bar"
autocmd          User FooEvent            ++once echo "Foo" | echo "Bar"

autocmd foogroup BufRead            *.txt ++nested echo "Foo" | echo "Bar"
autocmd          BufRead            *.txt ++nested echo "Foo" | echo "Bar"
autocmd          BufRead,BufNewFile *.txt ++nested echo "Foo" | echo "Bar"
autocmd          User FooEvent            ++nested echo "Foo" | echo "Bar"

autocmd foogroup BufRead            *.txt ++once ++nested echo "Foo" | echo "Bar"
autocmd          BufRead            *.txt ++once ++nested echo "Foo" | echo "Bar"
autocmd          BufRead,BufNewFile *.txt ++once ++nested echo "Foo" | echo "Bar"
autocmd          User FooEvent            ++once ++nested echo "Foo" | echo "Bar"

autocmd foogroup BufRead            <buffer>      ++once ++nested echo "Foo" | echo "Bar"
autocmd foogroup BufRead            <buffer=42>   ++once ++nested echo "Foo" | echo "Bar"
autocmd foogroup BufRead            <buffer=abuf> ++once ++nested echo "Foo" | echo "Bar"
autocmd          BufRead            <buffer>      ++once ++nested echo "Foo" | echo "Bar"
autocmd          BufRead            <buffer=42>   ++once ++nested echo "Foo" | echo "Bar"
autocmd          BufRead            <buffer=abuf> ++once ++nested echo "Foo" | echo "Bar"
autocmd          BufRead,BufNewFile <buffer>      ++once ++nested echo "Foo" | echo "Bar"
autocmd          BufRead,BufNewFile <buffer=42>   ++once ++nested echo "Foo" | echo "Bar"
autocmd          BufRead,BufNewFile <buffer=abuf> ++once ++nested echo "Foo" | echo "Bar"
autocmd          User FooEvent,BarEvent           ++once ++nested echo "Foo" | echo "Bar"

autocmd foogroup BufRead            f<buffer>oo   ++once ++nested echo "Foo" | echo "Bar"

autocmd BufRead *.txt {
  echo "Foo"
  echo "Bar"
}
autocmd BufRead,BufNewFile *.txt {
  echo "Foo"
  echo "Bar"
}
autocmd User FooEvent {
  echo "Foo"
  echo "Bar"
}
autocmd foogroup BufRead *.txt {
  echo "Foo"
  echo "Bar"
}


" Multiline {cmd} arg

autocmd BufRead *.txt echo "Foo"
      \| echo "Bar"
      \| echo "Baz"

autocmd BufRead *.txt echo "Foo" |
      \ echo "Bar" |
      \ echo "Baz"

autocmd BufRead *.txt
      "\ comment
      \ echo "Foo" |
      "\ comment
      \ echo "Bar"
      "\ comment
      \| echo "Baz"

autocmd BufRead,BufNewFile *.txt
      "\ comment
      \ echo "Foo" |
      "\ comment
      \ echo "Bar"
      "\ comment
      \| echo "Baz"
autocmd User FooEvent
      "\ comment
      \ echo "Foo" |
      "\ comment
      \ echo "Bar"
      "\ comment
      \| echo "Baz"
autocmd foogroup BufRead *.txt
      "\ comment
      \ echo "Foo" |
      "\ comment
      \ echo "Bar"
      "\ comment
      \| echo "Baz"


" Multiple patterns

autocmd BufRead *.txt,*.vim,*.c      echo "Foo" | echo "Bar"
autocmd BufRead <buffer>,*.vim,*.c   echo "Foo" | echo "Bar"
autocmd BufRead *.txt,<buffer>,*.c   echo "Foo" | echo "Bar"
autocmd BufRead *.txt,*.vim,<buffer> echo "Foo" | echo "Bar"

autocmd BufRead <buffer=1>,<buffer=2>,<buffer=3> echo "Foo" | echo "Bar"


" FIXME: "BufRead" and "*" are valid group names, however, :help :augroup
" explicitly directs the user NOT to shadow event names with group names
autocmd BufRead BufRead *.txt ++once ++nested echo "Foo"
autocmd *       BufRead *.txt ++once ++nested echo "Foo"


" Remove

autocmd! foogroup BufRead       *.txt ++once ++nested echo "Foo" | echo "Bar"
autocmd!          BufRead       *.txt ++once ++nested echo "Foo" | echo "Bar"
autocmd! foogroup User FooEvent       ++once ++nested echo "Foo" | echo "Bar"
autocmd!          User FooEvent       ++once ++nested echo "Foo" | echo "Bar"

autocmd! foogroup BufRead       *.txt
autocmd!          BufRead       *.txt
autocmd! foogroup User FooEvent
autocmd!          User FooEvent

autocmd! foogroup * *.txt
autocmd!          * *.txt

autocmd! foogroup BufRead
autocmd!          BufRead
autocmd! foogroup User FooEvent
autocmd!          User FooEvent

autocmd! foogroup
autocmd!

" command -> bang -> group "!foogroup!"
autocmd!!foogroup!
" command -> bang -> group "foogroup"
autocmd!foogroup
" command -> bang -> event
autocmd!BufRead
" command -> bang -> user event
autocmd!User FooEvent

" FIXME: "*" and "BufRead" are valid group names, however, :help :augroup
" explicitly directs the user NOT to shadow event names
" command -> group "*" -> event glob -> pattern
autocmd!* * *.txt
" command -> group "BufRead" -> event "BufRead" -> pattern
autocmd!BufRead BufRead *.txt


" List

autocmd foogroup BufRead       *.txt
autocmd          BufRead       *.txt

autocmd foogroup * *.txt
autocmd          * *.txt

autocmd foogroup BufRead
autocmd          BufRead
autocmd foogroup User FooEvent
autocmd          User FooEvent

autocmd foogroup
autocmd


" :doautoall

doautoall BufRead

doautoall BufRead *.txt
doautoall foogroup BufRead
doautoall <nomodeline> BufRead

doautoall <nomodeline> foogroup BufRead *.txt

doautoall User FooEvent
doautoall foogroup User FooEvent
doautoall <nomodeline> User FooEvent

doautoall <nomodeline> foogroup User FooEvent

doautoall <nomodeline> foogroup BufRead *.txt | echo "Foo"
doautoall <nomodeline> foogroup BufRead *.txt " comment


" :doautocmd

doautocmd BufRead

doautocmd BufRead *.txt
doautocmd foogroup BufRead
doautocmd <nomodeline> BufRead

doautocmd <nomodeline> foogroup BufRead *.txt

doautocmd User FooEvent
doautocmd User FooEvent,BarEvent
doautocmd foogroup User FooEvent
doautocmd <nomodeline> User FooEvent

doautocmd <nomodeline> foogroup User FooEvent

doautocmd <nomodeline> foogroup BufRead *.txt | echo "Foo"
doautocmd <nomodeline> foogroup BufRead *.txt | " comment


" Patterns

au BufRead */*.txt

au BufRead */*.*
au BufRead */*.???
au BufRead */*.[t][x]t

au BufRead */*.[a-z][a-z]t
au BufRead */*.[[:alpha:][:alpha:]]t

au BufRead */*.[tx]\\\{2\}t
au BufRead */*.[a-z]\\\{2\}t
au BufRead */*.[[:alpha:]]\\\{2\}t
au BufRead */*.[^[:punct:]]\\\{2\}t

au BufRead */*.[]]xt
au BufRead */*.[^]]xt

au BufRead */*.[t\]]xt
au BufRead */*.[^t\]]xt

au BufRead */*.[[]xt
au BufRead */*.[^[]xt

au BufRead */*.[-]xt
au BufRead */*.[^-]xt

au BufRead */*.[-t-]xt
au BufRead */*.[^-t-]xt

au BufRead */*.[\^]xt
au BufRead */*.[^^]xt

au BufRead */*.txt,*/*.vim
au BufRead */*.{txt,vim}
au BufRead */*.{t{x,t},v{i,m}}

" literal
au BufRead */*.[]xt
au BufRead */*.[\]xt
au BufRead */*.[^]xt
au BufRead */*.[^\]xt