blob: 569d4ceeccd736b32d35ab71fcc4f9d70f7483dd [file] [log] [blame]
thincacf8695d2024-01-28 18:57:23 +01001" String
2
3echo 'It''s a string'
4echo 'tab: \t, new line: \n, backslash: \\'
5echo "tab: \t, new line: \n, backslash: \\"
6
dkearnse3e39342024-02-02 07:44:26 +11007" String escape sequences
8
9echo "\316 - \31 - \3 - \x1f - \xf - \X1F - \XF - \u02a4 - \U000002a4 - \b - \e - \f - \n - \r - \t - \\ - \" - \<C-W>"
10echo '\316 \31 \3 \x1f \xf \X1F \XF \u02a4 \U000002a4 \b \e \f \n \r \t \\ \" \<C-W>'
11echo "\3160 - \x1f0 - \X1F0 - \u02a40 - \U000002a40"
12
13echo $"\316 - \31 - \3 - \x1f - \xf - \X1F - \XF - \u02a4 - \U000002a4 - \b - \e - \f - \n - \r - \t - \\ - \" - \<C-W>"
14echo $'\316 \31 \3 \x1f \xf \X1F \XF \u02a4 \U000002a4 \b \e \f \n \r \t \\ \" \<C-W>'
15echo $"\3160 - \x1f0 - \X1F0 - \u02a40 - \U000002a40"
16
17echo "\<C-a>"
18echo "\<*C-a>"
19echo "\<C->>"
20echo "\<*C->>"
21echo "\<C->>>"
22echo "\<*C->>>"
23
Doug Kearns695522d2025-01-10 20:02:17 +010024echo ''''
25echo '''foo'
26echo 'foo'''
27echo 'foo''bar'
28
29" Unreported issue (incorrectly matches as vimString vimMark vimOper NONE)
30" https://github.com/tpope/vim-unimpaired/blob/6d44a6dc2ec34607c41ec78acf81657248580bf1/plugin/unimpaired.vim#L232
31let cmd = 'put!=repeat(nr2char(10), v:count1)|silent '']+'
32
thincacf8695d2024-01-28 18:57:23 +010033" String interpolation
34
35echo 'Don''t highlight interpolation: {{ {1 + 2} }}'
36echo "Don't highlight interpolation: {{ {1 + 2} }}"
37echo $'Highlight interpolation:\t{{ { string({'foo': 'bar'}) } }}'
38echo $'Highlight interpolation:\t{{ { $'nested: {{ {1 + 2} }}' } }}'
39echo $"Highlight interpolation:\t{{ { string({"foo": "bar"}) } }}"
40echo $"Highlight interpolation:\t{{ { $"nested: {{ {1 + 2} }}" } }}"
dkearns5cd86c62024-03-12 07:40:58 +110041
Doug Kearns695522d2025-01-10 20:02:17 +010042echo $''''
43echo $'''foo'
44echo $'foo'''
45echo $'foo''bar'
46
dkearns5cd86c62024-03-12 07:40:58 +110047" Number
48
49" Hexadecimal
50echo 0xFF
51echo 0XFF
52echo -0xFF
53echo -0XFF
54
55" Decimal
56echo 255
57echo -255
58
59" Octal
60echo 0377
61echo 0o377
62echo 0O377
63echo -0377
64echo -0o377
65echo -0O377
66
67" Binary
68echo 0b11111111
69echo 0B11111111
70echo -0b11111111
71echo -0B11111111
72
73" Float
dkearns982e1912024-03-28 20:06:03 +110074echo 123.456
75echo +0.0001
76echo 55.0
77echo -0.123
78echo 1.234e03
79echo 1.0E-6
80echo -3.1416e+88
dkearns5cd86c62024-03-12 07:40:58 +110081
82" Blob
dkearns982e1912024-03-28 20:06:03 +110083echo 0z
dkearns5cd86c62024-03-12 07:40:58 +110084echo 0zFF00ED015DAF
85echo 0zFF00.ED01.5DAF
86echo 0zFF.00.ED.01.5D.AF
Doug Kearns1718e7d2025-01-08 18:20:47 +010087
Doug Kearns8dec6c22025-01-19 14:02:06 +010088" Operators
89
Doug Kearnsc273f1a2025-01-20 21:53:01 +010090" Ternary
91echo expr ? expr : expr
92
93echo lnum == 1 ? "top" : lnum
94echo lnum == 1 ? "top" : lnum == 1000 ? "last" : lnum
95
96echo lnum == 1
97 \ ? "top"
98 \ : lnum == 1000
99 \ ? "last"
100 \ : lnum
101echo lnum == 1 ?
102 \ "top" :
103 \ lnum == 1000 ?
104 \ "last" :
105 \ lnum
106
107echo 1 ? 1 : 0
108echo "foo" ? "foo" : "bar"
109echo foo ? foo : bar
110echo g:foo ? g:foo : g:bar
111echo $FOO ? $FOO : $BAR
112echo True() ? True() : False()
113echo @a ? @a : @b
114echo (1) ? (1) : (0)
115
116" Falsy
117echo expr ?? expr
118
119echo theList ?? 'list is empty'
120echo GetName() ?? 'unknown'
121
122echo theList
123 \ ?? 'list is empty'
124echo theList ??
125 \ 'list is empty'
126
127echo 1 ?? 1
128echo "foo" ?? "foo"
129echo foo ?? foo
130echo g:foo ?? g:foo
131echo $FOO ?? $FOO
132echo True() ?? True()
133echo @a ?? @a
134echo (1) ?? (1)
135
Doug Kearns8dec6c22025-01-19 14:02:06 +0100136" Comparison - using 'ignorcase'
137echo expr == expr
138echo expr != expr
139echo expr > expr
140echo expr >= expr
141echo expr < expr
142echo expr <= expr
143echo expr =~ expr
144echo expr !~ expr
145echo expr is expr
146echo expr isnot expr
147
148" Comparison - match case
149echo expr ==# expr
150echo expr !=# expr
151echo expr ># expr
152echo expr >=# expr
153echo expr <# expr
154echo expr <=# expr
155echo expr =~# expr
156echo expr !~# expr
157echo expr is# expr
158echo expr isnot# expr
159
160" Comparison - ignore case
161echo expr ==? expr
162echo expr !=? expr
163echo expr >? expr
164echo expr >=? expr
165echo expr <? expr
166echo expr <=? expr
167echo expr =~? expr
168echo expr !~? expr
169echo expr is? expr
170echo expr isnot? expr
171
172" Unreported issue (incorrectly matches as "echo vimNumber *vimCommand* vimNumber")
173echo 42 is 42
Doug Kearns1718e7d2025-01-08 18:20:47 +0100174
Doug Kearnsc273f1a2025-01-20 21:53:01 +0100175
Doug Kearns1718e7d2025-01-08 18:20:47 +0100176" Issue #16221 (vimString becomes vimVar when preceded by !)
177let bar = !'g:bar'->exists()
178
Doug Kearnsc273f1a2025-01-20 21:53:01 +0100179
180" Issue #14423 (vim.vim: Opt out of vimSearch*)
181
182?truthy
183let truthy = 0
184\ ? (0
185\ )
186\ : (1
187\ )
188echo truthy
189
190function Foo()
191 ?truthy
192 let truthy = 0
193 \ ? (0
194 \ )
195 \ : (1
196 \ )
197 echo truthy
198endfunction
199