vim9script # Vim9-script expressions # Number # ' separated echo 1'000'000 echo 1'000'000.00 echo -1'000'000 echo -1'000'000.00 echo 0b1000'0000 echo 0o1000'0000 echo 0x1000'0000 echo -0b1000'0000 echo -0o1000'0000 echo -0x1000'0000 # Dictionary echo {} echo { foo: 21 * 2 } echo { -foo-: 21 * 2 } echo { 42: 21 * 2 } echo { 'foo': 21 * 2 } echo { "foo": 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-: { bar: 21 * 2 } } echo { -foo-: { -bar-: 21 * 2 } } echo { -foo-: { 42: 21 * 2 } } echo { -foo-: { 'bar': 21 * 2 } } echo { -foo-: { "bar": 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 { '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": { bar: 21 * 2 } } echo { "foo": { -bar-: 21 * 2 } } echo { "foo": { 42: 21 * 2 } } echo { "foo": { 'bar': 21 * 2 } } echo { "foo": { "bar": 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 @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 @- @: @. @% @# @= @* @+ @~ @_ @/ # read-only @:, @., @%, @~ @" = "foo" @0 = "foo" @1 = "foo" @9 = "foo" @a = "foo" @k = "foo" @z = "foo" @A = "foo" @K = "foo" @Z = "foo" @- = "foo" @# = "foo" @= = "foo" @* = "foo" @+ = "foo" @_ = "foo" @/ = "foo" # 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 true ? true : false 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 (true) ? (true) : (false) 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 true ?? true echo 1 ?? 1 echo "foo" ?? "foo" echo foo ?? foo echo g:foo ?? g:foo echo $FOO ?? $FOO echo True() ?? True() echo @a ?? @a echo (true) ?? (true) echo (1) ?? (1) # Function calls Foo(true, false, null) # Command {expr} arguments if true echo true elseif false echo false endif while true break endwhile def Foo(): bool return true enddef # Issue #14423 (vim.vim: Opt out of vimSearch*) :?truthy const truthy: number = false ? (0 ) : (1 ) echo truthy def Foo() :?truthy const truthy: number = false ? (0 ) : (1 ) echo truthy enddef # Issue #16227 (Vim script ternary expression highlighting) var foo = 'foo' # comment var bar = foo == 'foo' ? 'bar' : 'baz' var baz = foo == 'foo' \ ? 'baz' \ : 'bar' var qux = foo == 'foo' ? 'qux' # comment : 'qux' # comment echo qux ?? 'quux'