| " String |
| |
| echo 'It''s a string' |
| echo 'tab: \t, new line: \n, backslash: \\' |
| echo "tab: \t, new line: \n, backslash: \\" |
| |
| " String escape sequences |
| |
| echo "\316 - \31 - \3 - \x1f - \xf - \X1F - \XF - \u02a4 - \U000002a4 - \b - \e - \f - \n - \r - \t - \\ - \" - \<C-W>" |
| echo '\316 \31 \3 \x1f \xf \X1F \XF \u02a4 \U000002a4 \b \e \f \n \r \t \\ \" \<C-W>' |
| echo "\3160 - \x1f0 - \X1F0 - \u02a40 - \U000002a40" |
| |
| echo $"\316 - \31 - \3 - \x1f - \xf - \X1F - \XF - \u02a4 - \U000002a4 - \b - \e - \f - \n - \r - \t - \\ - \" - \<C-W>" |
| echo $'\316 \31 \3 \x1f \xf \X1F \XF \u02a4 \U000002a4 \b \e \f \n \r \t \\ \" \<C-W>' |
| echo $"\3160 - \x1f0 - \X1F0 - \u02a40 - \U000002a40" |
| |
| echo "\<C-a>" |
| echo "\<*C-a>" |
| echo "\<C->>" |
| echo "\<*C->>" |
| echo "\<C->>>" |
| echo "\<*C->>>" |
| |
| echo '''' |
| echo '''foo' |
| echo 'foo''' |
| echo 'foo''bar' |
| |
| " Unreported issue (incorrectly matches as vimString vimMark vimOper NONE) |
| " https://github.com/tpope/vim-unimpaired/blob/6d44a6dc2ec34607c41ec78acf81657248580bf1/plugin/unimpaired.vim#L232 |
| let cmd = 'put!=repeat(nr2char(10), v:count1)|silent '']+' |
| |
| " String interpolation |
| |
| echo 'Don''t highlight interpolation: {{ {1 + 2} }}' |
| echo "Don't highlight interpolation: {{ {1 + 2} }}" |
| echo $'Highlight interpolation:\t{{ { string({'foo': 'bar'}) } }}' |
| echo $'Highlight interpolation:\t{{ { $'nested: {{ {1 + 2} }}' } }}' |
| echo $"Highlight interpolation:\t{{ { string({"foo": "bar"}) } }}" |
| echo $"Highlight interpolation:\t{{ { $"nested: {{ {1 + 2} }}" } }}" |
| |
| echo $'''' |
| echo $'''foo' |
| echo $'foo''' |
| echo $'foo''bar' |
| |
| " Number |
| |
| " Hexadecimal |
| echo 0xFF |
| echo 0XFF |
| echo -0xFF |
| echo -0XFF |
| |
| " Decimal |
| echo 255 |
| echo -255 |
| |
| " Octal |
| echo 0377 |
| echo 0o377 |
| echo 0O377 |
| echo -0377 |
| echo -0o377 |
| echo -0O377 |
| |
| " Binary |
| echo 0b11111111 |
| echo 0B11111111 |
| echo -0b11111111 |
| echo -0B11111111 |
| |
| " Float |
| echo 123.456 |
| echo +0.0001 |
| echo 55.0 |
| echo -0.123 |
| echo 1.234e03 |
| echo 1.0E-6 |
| echo -3.1416e+88 |
| |
| " Blob |
| echo 0z |
| echo 0zFF00ED015DAF |
| echo 0zFF00.ED01.5DAF |
| echo 0zFF.00.ED.01.5D.AF |
| |
| " List |
| |
| echo [] |
| echo [42] |
| echo [[11, 12], [21, 22], [31, 32]] |
| echo [1, |
| \ 2, |
| \ 3, |
| \ 4 |
| \] |
| echo [1, 'two', 1 + 2, "fo" .. "ur"] |
| |
| " Issue #5830 (Incorrect syntax highlighting in Vim script when omitting space in list of string) |
| let l = ['a','b','c'] |
| |
| " Dictionary |
| |
| echo {} |
| echo { 'foo': 21 * 2 } |
| echo { "foo": 21 * 2 } |
| echo { 42: 21 * 2 } |
| |
| echo { "foo": { 'bar': 21 * 2 } } |
| echo { "foo": { "bar": 21 * 2 } } |
| echo { "foo": { 42: 21 * 2 } } |
| echo { "foo": #{ bar: 21 * 2 } } |
| echo { "foo": #{ -bar-: 21 * 2 } } |
| echo { "foo": #{ 42: 21 * 2 } } |
| |
| echo { 'foo': { 'bar': 21 * 2 } } |
| echo { 'foo': { "bar": 21 * 2 } } |
| echo { 'foo': { 42: 21 * 2 } } |
| echo { 'foo': #{ bar: 21 * 2 } } |
| echo { 'foo': #{ -bar-: 21 * 2 } } |
| echo { 'foo': #{ 42: 21 * 2 } } |
| |
| echo { 42: { 'bar': 21 * 2 } } |
| echo { 42: { "bar": 21 * 2 } } |
| echo { 42: { 42: 21 * 2 } } |
| echo { 42: #{ bar: 21 * 2 } } |
| echo { 42: #{ -bar-: 21 * 2 } } |
| echo { 42: #{ 42: 21 * 2 } } |
| |
| echo { |
| "\ comment |
| \ "foo": { "bar": 21 * 2 } |
| \} |
| |
| " TODO: arbitrary expression keys |
| |
| " Literal Dictionary |
| |
| echo #{} |
| echo #{ foo: 21 * 2 } |
| echo #{ -foo-: 21 * 2 } |
| echo #{ 42: 21 * 2 } |
| |
| echo #{ foo: #{ bar: 21 * 2 } } |
| echo #{ foo: #{ -bar-: 21 * 2 } } |
| echo #{ foo: #{ 42: 21 * 2 } } |
| echo #{ foo: { "bar": 21 * 2 } } |
| echo #{ foo: { 'bar': 21 * 2 } } |
| echo #{ foo: { 42: 21 * 2 } } |
| |
| echo #{ -foo-: #{ bar: 21 * 2 } } |
| echo #{ -foo-: #{ -bar-: 21 * 2 } } |
| echo #{ -foo-: #{ 42: 21 * 2 } } |
| echo #{ -foo-: { "bar": 21 * 2 } } |
| echo #{ -foo-: { 'bar': 21 * 2 } } |
| echo #{ -foo-: { 42: 21 * 2 } } |
| |
| echo #{ 42: #{ bar: 21 * 2 } } |
| echo #{ 42: #{ -bar-: 21 * 2 } } |
| echo #{ 42: #{ 42: 21 * 2 } } |
| echo #{ 42: { "bar": 21 * 2 } } |
| echo #{ 42: { 'bar': 21 * 2 } } |
| echo #{ 42: { 42: 21 * 2 } } |
| |
| echo #{ |
| "\ comment |
| \ foo: #{ |
| \ bar: 21 * 2 |
| \ } |
| \} |
| |
| " match as keys not scope dictionaries |
| echo #{ b: 42, w: 42, t: 42, g: 42, l: 42, s: 42, a: 42, v: 42 } |
| |
| " Register |
| |
| echo @" |
| echo @0 @1 @2 @3 @4 @5 @6 @7 @8 @9 |
| echo @- |
| echo @a @b @c @d @e @f @g @h @i @j @k @l @m @n @o @p @q @r @s @t @u @v @w @x @y @z |
| echo @A @B @C @D @E @F @G @H @I @J @K @L @M @N @O @P @Q @R @S @T @U @V @W @X @Y @Z |
| echo @: @. @% @# @= @* @+ @~ @_ @/ |
| |
| " Operators |
| |
| " Ternary |
| echo expr ? expr : expr |
| |
| echo lnum == 1 ? "top" : lnum |
| echo lnum == 1 ? "top" : lnum == 1000 ? "last" : lnum |
| |
| echo lnum == 1 |
| \ ? "top" |
| \ : lnum == 1000 |
| \ ? "last" |
| \ : lnum |
| echo lnum == 1 ? |
| \ "top" : |
| \ lnum == 1000 ? |
| \ "last" : |
| \ lnum |
| |
| echo 1 ? 1 : 0 |
| echo "foo" ? "foo" : "bar" |
| echo foo ? foo : bar |
| echo g:foo ? g:foo : g:bar |
| echo $FOO ? $FOO : $BAR |
| echo True() ? True() : False() |
| echo @a ? @a : @b |
| echo (1) ? (1) : (0) |
| |
| " Falsy |
| echo expr ?? expr |
| |
| echo theList ?? 'list is empty' |
| echo GetName() ?? 'unknown' |
| |
| echo theList |
| \ ?? 'list is empty' |
| echo theList ?? |
| \ 'list is empty' |
| |
| echo 1 ?? 1 |
| echo "foo" ?? "foo" |
| echo foo ?? foo |
| echo g:foo ?? g:foo |
| echo $FOO ?? $FOO |
| echo True() ?? True() |
| echo @a ?? @a |
| echo (1) ?? (1) |
| |
| " Comparison - using 'ignorcase' |
| echo expr == expr |
| echo expr != expr |
| echo expr > expr |
| echo expr >= expr |
| echo expr < expr |
| echo expr <= expr |
| echo expr =~ expr |
| echo expr !~ expr |
| echo expr is expr |
| echo expr isnot expr |
| |
| " Comparison - match case |
| echo expr ==# expr |
| echo expr !=# expr |
| echo expr ># expr |
| echo expr >=# expr |
| echo expr <# expr |
| echo expr <=# expr |
| echo expr =~# expr |
| echo expr !~# expr |
| echo expr is# expr |
| echo expr isnot# expr |
| |
| " Comparison - ignore case |
| echo expr ==? expr |
| echo expr !=? expr |
| echo expr >? expr |
| echo expr >=? expr |
| echo expr <? expr |
| echo expr <=? expr |
| echo expr =~? expr |
| echo expr !~? expr |
| echo expr is? expr |
| echo expr isnot? expr |
| |
| " Unreported issue ("is" incorrectly matches as "echo vimNumber *vimCommand* vimNumber") |
| echo 42 is 42 |
| |
| " Line continuation |
| let foo = foo + |
| \ |
| "\ comment |
| \ |
| "\ comment |
| \ bar + |
| \ "baz" |
| |
| let foo = foo + |
| "\ comment |
| \ |
| "\ comment |
| \ |
| \ bar + |
| \ "baz" |
| |
| " Function calls |
| |
| call Foo(v:true, v:false, v:null) |
| |
| |
| " Issue #16221 (vimString becomes vimVar when preceded by !) |
| let bar = !'g:bar'->exists() |
| |
| |
| " Issue #14423 (vim.vim: Opt out of vimSearch*) |
| |
| ?truthy |
| let truthy = 0 |
| \ ? (0 |
| \ ) |
| \ : (1 |
| \ ) |
| echo truthy |
| |
| function Foo() |
| ?truthy |
| let truthy = 0 |
| \ ? (0 |
| \ ) |
| \ : (1 |
| \ ) |
| echo truthy |
| endfunction |
| |