blob: 352104529026f33e741ad9972d2e31c28c27c2db [file] [log] [blame]
Doug Kearns1aa287e2025-02-10 22:00:27 +01001vim9script
2
3# Vim9 variable highlighting
4
5# Declarations
6
7var foo = expr
8
9b:foo = expr
10g:foo = expr
11t:foo = expr
12w:foo = expr
13
Doug Kearns3dca5122025-03-09 16:30:28 +010014v:true = expr
Doug Kearns1aa287e2025-02-10 22:00:27 +010015
16$FOO = expr
17
18var [foo, bar] = expr
19var [foo,
20 \ bar] = expr
21var [$foo, $bar] = expr
22var [$foo,
23 \ $bar] = expr
24
25var [foo, bar; baz] = expr
26var [foo,
27 \ bar;
28 \ baz] = expr
29var [$foo, $bar; $baz] = expr
30var [$foo,
31 \ $bar;
32 \ $baz] = expr
33
34var foo =<< END
35...
36END
37var foo =<< trim END
38...
39END
40var foo =<< eval END
41...
42END
43var foo =<< trim eval END
44...
45END
46var foo =<< eval trim END
47...
48END
49
Doug Kearns722fbd12025-03-28 19:36:37 +010050# Typed declarations
51
52var foo: tuple<any> = expr
53var foo: tuple<number> = expr
54var foo: tuple<number, string, bool> = expr
55var foo: tuple<...list<any>> = expr
56var foo: tuple<...list<number>> = expr
57var foo: tuple<number, ...list<string>> = expr
58
59var foo: tuple<
60 #\ comment
61 \number,
62 #\ comment
63 \string,
64 #\ comment
65 \bool
66 \>
67
Doug Kearns1aa287e2025-02-10 22:00:27 +010068# Assignments
69
70foo = expr
71
72foo[0] = expr
73
74foo[1:2] = expr
75foo[:2] = expr
76foo[1:] = expr
77foo[:] = expr
78
Doug Kearns3dca5122025-03-09 16:30:28 +010079foo["key"] = expr
80foo['key'] = expr
81
Doug Kearns1aa287e2025-02-10 22:00:27 +010082foo += expr
83foo -= expr
84foo *= expr
85foo /= expr
86foo %= expr
87foo ..= expr
88
89b:foo = expr
90g:foo = expr
91t:foo = expr
92w:foo = expr
93
94b:foo += expr
95g:foo += expr
96t:foo += expr
97w:foo += expr
98
99b:foo -= expr
100g:foo -= expr
101t:foo -= expr
102w:foo -= expr
103
104b:foo *= expr
105g:foo *= expr
106t:foo *= expr
107w:foo *= expr
108
109b:foo /= expr
110g:foo /= expr
111t:foo /= expr
112w:foo /= expr
113
114b:foo %= expr
115g:foo %= expr
116t:foo %= expr
117w:foo %= expr
118
119b:foo ..= expr
120g:foo ..= expr
121t:foo ..= expr
122w:foo ..= expr
123
124$FOO = expr
125$FOO ..= expr
126
127@f = expr
128@f ..= expr
129
Doug Kearns3dca5122025-03-09 16:30:28 +0100130&ari = expr
Doug Kearns1aa287e2025-02-10 22:00:27 +0100131
132&t_k1 = "\<Esc>[234;"
133
Doug Kearns3dca5122025-03-09 16:30:28 +0100134&ari ..= expr
Doug Kearns1aa287e2025-02-10 22:00:27 +0100135
Doug Kearns3dca5122025-03-09 16:30:28 +0100136&ari += expr
137&ari -= expr
Doug Kearns1aa287e2025-02-10 22:00:27 +0100138
Doug Kearns3dca5122025-03-09 16:30:28 +0100139&l:aleph = expr
Doug Kearns1aa287e2025-02-10 22:00:27 +0100140
Doug Kearns3dca5122025-03-09 16:30:28 +0100141&l:aleph ..= expr
142&l:aleph += expr
143&l:aleph -= expr
Doug Kearns1aa287e2025-02-10 22:00:27 +0100144
Doug Kearns3dca5122025-03-09 16:30:28 +0100145&g:aleph = expr
Doug Kearns1aa287e2025-02-10 22:00:27 +0100146
Doug Kearns3dca5122025-03-09 16:30:28 +0100147&g:aleph ..= expr
148&g:aleph += expr
149&g:aleph -= expr
Doug Kearns1aa287e2025-02-10 22:00:27 +0100150
151[foo, bar] = expr
152[foo,
153 \ bar] = expr
Doug Kearns3dca5122025-03-09 16:30:28 +0100154[v:true, v:false] = expr
155[v:true,
156 \ v:false] = expr
157[&ari, &bkc] = expr
158[&ari,
159 \ &bkc] = expr
Doug Kearns1aa287e2025-02-10 22:00:27 +0100160[$foo, $bar] = expr
161[$foo,
162 \ $bar] = expr
163[@a, @b] = expr
164[@a,
165 \ @a] = expr
166
167[foo, bar] ..= expr
168[foo, bar] += expr
169[foo, bar] -= expr
170[foo, bar] *= expr
171[foo, bar] /= expr
172[foo, bar] %= expr
173
174[foo, bar; baz] = expr
175[foo,
176 \ bar;
177 \ baz] = expr
Doug Kearns3dca5122025-03-09 16:30:28 +0100178[v:true, v:false; v:none] = expr
179[v:true,
180 \ v:false;
181 \ v:none] = expr
Doug Kearns1aa287e2025-02-10 22:00:27 +0100182[$foo, $bar; $baz] = expr
183[$foo,
184 \ $bar;
185 \ $baz] = expr
Doug Kearns3dca5122025-03-09 16:30:28 +0100186[&ari, &bkc; &cmp] = expr
187[&ari,
188 \ &bkc;
189 \ &cmp] = expr
Doug Kearns1aa287e2025-02-10 22:00:27 +0100190[@a, @b; @c] = expr
191[@a,
192 \ @b;
193 \ @c] = expr
194
195foo =<< END
196...
197END
198foo =<< trim END
199...
200END
201foo =<< eval END
202...
203END
204foo =<< trim eval END
205...
206END
207foo =<< eval trim END
208...
209END
210
211# :for
212
213for foo in expr
214endfor
215
216for [foo, bar] in expr
217endfor
218
Doug Kearns3dca5122025-03-09 16:30:28 +0100219# Scope dictionaries
220
221echo get(b:, 'foo', 42)
222echo get(w:, 'foo', 42)
223echo get(t:, 'foo', 42)
224echo get(g:, 'foo', 42)
225echo get(v:, 'foo', 42)
226
227for k in keys(b:) | echo b:[k] | endfor
228for k in keys(w:) | echo w:[k] | endfor
229for k in keys(t:) | echo t:[k] | endfor
230for k in keys(g:) | echo g:[k] | endfor
231for k in keys(v:) | echo v:[k] | endfor
232
233# Neovim-specific variables (not highlighted by default)
234
235echo v:lua v:msgpack_types v:relnum v:stderr v:termrequest v:virtnum
236
237echo &channel &inccommand &mousescroll &pumblend &redrawdebug &scrollback
238echo &shada &shadafile &statuscolumn &termpastefilter &termsync &winbar
239echo &winblend &winhighlight
240