vim9script # Vim9-script expressions # 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 (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 (1) ?? (1) # 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 (Vimscript 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'