Doug Kearns | 4d427d4 | 2024-09-15 19:21:18 +0200 | [diff] [blame] | 1 | vim9script |
| 2 | # Vim9-script expressions |
| 3 | |
| 4 | |
Doug Kearns | c273f1a | 2025-01-20 21:53:01 +0100 | [diff] [blame] | 5 | # Operators |
| 6 | |
| 7 | # Ternary |
| 8 | |
| 9 | echo expr ? expr : expr |
| 10 | |
| 11 | echo lnum == 1 ? "top" : lnum |
| 12 | echo lnum == 1 ? "top" : lnum == 1000 ? "last" : lnum |
| 13 | |
| 14 | echo lnum == 1 |
| 15 | ? "top" |
| 16 | : lnum == 1000 |
| 17 | ? "last" |
| 18 | : lnum |
| 19 | echo lnum == 1 ? |
| 20 | "top" : |
| 21 | lnum == 1000 ? |
| 22 | "last" : |
| 23 | lnum |
| 24 | |
| 25 | echo true ? true : false |
| 26 | echo 1 ? 1 : 0 |
| 27 | echo "foo" ? "foo" : "bar" |
| 28 | echo foo ? foo : bar |
| 29 | echo g:foo ? g:foo : g:bar |
| 30 | echo $FOO ? $FOO : $BAR |
| 31 | echo True() ? True() : False() |
| 32 | echo @a ? @a : @b |
Doug Kearns | a9c0642 | 2025-02-12 20:44:17 +0100 | [diff] [blame] | 33 | echo (true) ? (true) : (false) |
Doug Kearns | c273f1a | 2025-01-20 21:53:01 +0100 | [diff] [blame] | 34 | echo (1) ? (1) : (0) |
| 35 | |
| 36 | # Falsy |
| 37 | |
| 38 | echo expr ?? expr |
| 39 | |
| 40 | echo theList ?? 'list is empty' |
| 41 | echo GetName() ?? 'unknown' |
| 42 | |
| 43 | echo theList |
| 44 | \ ?? 'list is empty' |
| 45 | echo theList ?? |
| 46 | \ 'list is empty' |
| 47 | |
| 48 | echo true ?? true |
| 49 | echo 1 ?? 1 |
| 50 | echo "foo" ?? "foo" |
| 51 | echo foo ?? foo |
| 52 | echo g:foo ?? g:foo |
| 53 | echo $FOO ?? $FOO |
| 54 | echo True() ?? True() |
| 55 | echo @a ?? @a |
Doug Kearns | a9c0642 | 2025-02-12 20:44:17 +0100 | [diff] [blame] | 56 | echo (true) ?? (true) |
Doug Kearns | c273f1a | 2025-01-20 21:53:01 +0100 | [diff] [blame] | 57 | echo (1) ?? (1) |
| 58 | |
| 59 | |
Doug Kearns | a9c0642 | 2025-02-12 20:44:17 +0100 | [diff] [blame] | 60 | # Function calls |
| 61 | |
| 62 | Foo(true, false, null) |
| 63 | |
| 64 | |
Doug Kearns | 4d427d4 | 2024-09-15 19:21:18 +0200 | [diff] [blame] | 65 | # Command {expr} arguments |
| 66 | |
| 67 | if true |
| 68 | echo true |
| 69 | elseif false |
| 70 | echo false |
| 71 | endif |
| 72 | |
| 73 | while true |
| 74 | break |
| 75 | endwhile |
| 76 | |
| 77 | def Foo(): bool |
| 78 | return true |
| 79 | enddef |
| 80 | |
Doug Kearns | c273f1a | 2025-01-20 21:53:01 +0100 | [diff] [blame] | 81 | |
| 82 | # Issue #14423 (vim.vim: Opt out of vimSearch*) |
| 83 | |
| 84 | :?truthy |
| 85 | const truthy: number = false |
| 86 | ? (0 |
| 87 | ) |
| 88 | : (1 |
| 89 | ) |
| 90 | echo truthy |
| 91 | |
| 92 | def Foo() |
| 93 | :?truthy |
| 94 | const truthy: number = false |
| 95 | ? (0 |
| 96 | ) |
| 97 | : (1 |
| 98 | ) |
| 99 | echo truthy |
| 100 | enddef |
| 101 | |
| 102 | |
| 103 | # Issue #16227 (Vimscript ternary expression highlighting) |
| 104 | |
| 105 | var foo = 'foo' # comment |
| 106 | var bar = foo == 'foo' ? 'bar' : 'baz' |
| 107 | var baz = foo == 'foo' |
| 108 | \ ? 'baz' |
| 109 | \ : 'bar' |
| 110 | var qux = foo == 'foo' |
| 111 | ? 'qux' # comment |
| 112 | : 'qux' # comment |
| 113 | echo qux ?? 'quux' |
| 114 | |